(send a-dc cache-font-metrics-key) → exact-integer? |
A 0 result indicates that the current configuration of a-dc does not fit into a common category, and so no key is available for caching text-extent information.
(send a-dc copy x y width height x2 y2) → void? |
x : real? |
y : real? |
width : (and/c real? (not/c negative?)) |
height : (and/c real? (not/c negative?)) |
x2 : real? |
y2 : real? |
The result is undefined if the source and destination rectangles overlap.
| ||||||||||||||||||||||||||||||||||||||||||
x : real? | ||||||||||||||||||||||||||||||||||||||||||
y : real? | ||||||||||||||||||||||||||||||||||||||||||
width : (and/c real? (not/c negative?)) | ||||||||||||||||||||||||||||||||||||||||||
height : (and/c real? (not/c negative?)) | ||||||||||||||||||||||||||||||||||||||||||
start-radians : real? | ||||||||||||||||||||||||||||||||||||||||||
end-radians : real? |
The current pen is used for the arc. If the current brush is not transparent, it is used to fill the wedge bounded by the arc plus lines (not drawn) extending to the center of the inscribed ellipse.
If both the pen and brush are non-transparent, the wedge is filled with the brush before the arc is drawn with the pen. The wedge and arc meet so that no space is left between them, but the precise overlap between the wedge and arc is platform- and size-specific. Typically, the regions drawn by the brush and pen overlap. More generally, the pen is centered over the outline of the arc, rounding toward the center in unsmoothed mode.
| ||||||||||||||||||||||||||||||||||||||||||
source : (is-a?/c bitmap%) | ||||||||||||||||||||||||||||||||||||||||||
dest-x : real? | ||||||||||||||||||||||||||||||||||||||||||
dest-y : real? | ||||||||||||||||||||||||||||||||||||||||||
style : (one-of/c 'solid 'opaque 'xor) = 'solid | ||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||
mask : (or/c (is-a?/c bitmap%) false/c) = #f |
For color bitmaps, the drawing style and color arguments are ignored. For monochrome bitmaps, draw-bitmap uses the style and color arguments in the same way that a brush uses its style and color settings to draw a monochrome stipple (see brush% for more information).
If a mask bitmap is supplied, it must have the same width and height as source, and its ok? must return true, otherwise an exn:fail:contract exception is raised. The source bitmap and mask bitmap can be the same object, but if the drawing context is a bitmap-dc% object, both bitmaps must be distinct from the destination bitmap, otherwise an exn:fail:contract exception is raised.
If the mask bitmap is monochrome, drawing occurs in the target dc<%> only where the mask bitmap contains black pixels (independent of style, which controls how the white pixels of a monochrome source are handled).
If the mask bitmap is color with an alpha channel, its alpha channel is used as the mask for drawing source, and its color channels are ignored.
If the mask bitmap is color without an alpha channel, the color components of a given pixel are averaged to arrive at an inverse alpha value for the pixel. In particular, if the mask bitmap is grayscale, then the blackness of each mask pixel controls the opacity of the drawn pixel (i.e., the mask acts as an inverted alpha channel).
The current brush, current pen, and current text for the DC have no effect on how the bitmap is drawn, but the bitmap is scaled if the DC has a scale, and the DC’s alpha setting determines the opacity of the drawn pixels (in combination with an alpha channel of source, any given mask, and the alpha component of color when source is monochrome).
For post-script-dc% and pdf-dc% output, opacity from an alpha channel in source, from mask, or from color is rounded to full transparency or opacity.
The result is #t if the bitmap is successfully drawn, #f otherwise (possibly because the bitmap’s ok? method returns #f).
See also draw-bitmap-section.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source : (is-a?/c bitmap%) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dest-x : real? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dest-y : real? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
src-x : real? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
src-y : real? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
src-width : (and/c real? (not/c negative?)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
src-height : (and/c real? (not/c negative?)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
style : (one-of/c 'solid 'opaque 'xor) = 'solid | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mask : (or/c (is-a?/c bitmap%) false/c) = #f |
The src-x, src-y, src-width, and src-height arguments specify a rectangle in the source bitmap to copy into this drawing context.
See draw-bitmap for information about dest-x, dest-y, style, color, and mask.
(send a-dc draw-ellipse x y width height) → void? |
x : real? |
y : real? |
width : (and/c real? (not/c negative?)) |
height : (and/c real? (not/c negative?)) |
If both the pen and brush are non-transparent, the ellipse is filled with the brush before the outline is drawn with the pen. The filling and outline meet so that no space is left between them, but the precise overlap between the filling and outline is platform- and size-specific. Typically, the regions drawn by the brush and pen overlap. More generally, the pen is centered over the outline of the ellipse, rounding toward the center in unsmoothed mode.
In unsmoothed mode, the points correspond to pixels, and the line covers both the start and end points. For a pen whose scaled width is larger than 1, the line is drawn centered over the start and end points.
See also set-smoothing for information on the 'aligned smoothing mode.
| |||||||||||||||||||||
points : (listof (is-a?/c point%)) | |||||||||||||||||||||
xoffset : real? = 0 | |||||||||||||||||||||
yoffset : real? = 0 |
See also set-smoothing for information on the 'aligned smoothing mode.
| ||||||||||||||||||||||||||||
path : (is-a?/c dc-path%) | ||||||||||||||||||||||||||||
xoffset : real? = 0 | ||||||||||||||||||||||||||||
yoffset : real? = 0 | ||||||||||||||||||||||||||||
fill-style : (one-of/c 'odd-even 'winding) = 'odd-even |
If both the pen and brush are non-transparent, the path is filled with the brush before the outline is drawn with the pen. The filling and outline meet so that no space is left between them, but the precise overlap between the filling and outline is platform- and size-specific. Thus, the regions drawn by the brush and pen may overlap. More generally, the pen is centered over the path, rounding left and down in unsmoothed mode.
The fill-style argument specifies the fill rule: 'odd-even or 'winding. In 'odd-even mode, a point is considered enclosed within the path if it is enclosed by an odd number of sub-path loops. In 'winding mode, a point is considered enclosed within the path if it is enclosed by more or less clockwise sub-path loops than counter-clockwise sub-path loops.
See also set-smoothing for information on the 'aligned smoothing mode.
(send a-dc draw-point x y) → void? |
x : real? |
y : real? |
| ||||||||||||||||||||||||||||
points : (listof (is-a?/c point%)) | ||||||||||||||||||||||||||||
xoffset : real? = 0 | ||||||||||||||||||||||||||||
yoffset : real? = 0 | ||||||||||||||||||||||||||||
fill-style : (one-of/c 'odd-even 'winding) = 'odd-even |
If both the pen and brush are non-transparent, the polygon is filled with the brush before the outline is drawn with the pen. The filling and outline meet so that no space is left between them, but the precise overlap between the filling and outline is platform- and shape-specific. Thus, the regions drawn by the brush and pen may overlap. More generally, the pen is centered over the polygon lines, rounding left and down in unsmoothed mode.
The fill-style argument specifies the fill rule: 'odd-even or 'winding. In 'odd-even mode, a point is considered enclosed within the polygon if it is enclosed by an odd number of loops. In 'winding mode, a point is considered enclosed within the polygon if it is enclosed by more or less clockwise loops than counter-clockwise loops.
See also set-smoothing for information on the 'aligned smoothing mode.
(send a-dc draw-rectangle x y width height) → void? |
x : real? |
y : real? |
width : (and/c real? (not/c negative?)) |
height : (and/c real? (not/c negative?)) |
If both the pen and brush are non-transparent, the rectangle is filled with the brush before the outline is drawn with the pen. In unsmoothed mode, when the pen is size 0 or 1, the filling precisely overlaps the entire outline. As a result, if a rectangle is drawn with a size-0 or size-1 'xor pen% and an 'xor brush%, the outline is xored twice (first by the brush, then by the pen), leaving it unchanged. More generally, the pen is centered over the outline of the rectangle, rounding toward the center in unsmoothed mode.
See also set-smoothing for information on the 'aligned smoothing mode.
| |||||||||||||||||||||||||||||||||||
x : real? | |||||||||||||||||||||||||||||||||||
y : real? | |||||||||||||||||||||||||||||||||||
width : (and/c real? (not/c negative?)) | |||||||||||||||||||||||||||||||||||
height : (and/c real? (not/c negative?)) | |||||||||||||||||||||||||||||||||||
radius : real? = -0.25 |
If radius is positive, the value is used as the radius of the rounded corner. If radius is negative, the absolute value is used as the proportion of the smallest dimension of the rectangle.
If radius is less than -0.5 or more than half of width or height, an exn:fail:contract exception is raised.
If both the pen and brush are non-transparent, the rectangle is filled with the brush before the outline is drawn with the pen. The filling and outline meet so that no space is left between them, but the precise overlap between the filling and outline is platform- and size-specific. Thus, the regions drawn by the brush and pen may partially overlap. More generally, the pen is centered over the outline of the rounded rectangle, rounding toward the center in unsmoothed mode.
See also set-smoothing for information on the 'aligned smoothing mode.
(send a-dc draw-spline x1 y1 x2 y2 x3 y3) → void? |
x1 : real? |
y1 : real? |
x2 : real? |
y2 : real? |
x3 : real? |
y3 : real? |
See also set-smoothing for information on the 'aligned smoothing mode. See also dc-path% and draw-path for drawing more complex curves.
| ||||||||||||||||||||||||||||||||||||||||||
text : string? | ||||||||||||||||||||||||||||||||||||||||||
x : real? | ||||||||||||||||||||||||||||||||||||||||||
y : real? | ||||||||||||||||||||||||||||||||||||||||||
combine? : any/c = #f | ||||||||||||||||||||||||||||||||||||||||||
offset : exact-nonnegative-integer? = 0 | ||||||||||||||||||||||||||||||||||||||||||
angle : real? = 0 |
The text string is drawn starting from the offset character, and continuing until the end of text or the first null character.
If combine? is #t, then text may be measured with adjacent characters combined to ligature glyphs, with Unicode combining characters as a single glyph, with kerning, with right-to-left rendering of characters, etc. If combine? is #f, then the result is the same as if each character is measured separately, and Unicode control characters are ignored.
The string is rotated by angle radians counter-clockwise. If angle is not zero, then the text is always drawn in transparent mode (see set-text-mode).
The current brush and current pen settings for the DC have no effect on how the text is drawn.
See get-text-extent for information on the size of the drawn text.
See also set-text-foreground, set-text-background, and set-text-mode.
For relevant devices, an exception is raised if end-doc is called when the document is not started with start-doc, when a page is currently started by start-page and not ended with end-page, or when the document has been ended already.
For relevant devices, an exception is raised if end-page is called when a page is not currently started by start-page.
(send a-dc get-background) → (is-a?/c color%) |
Unlike most methods, this method can be called for a bitmap-dc% object without a bitmap installed.
Unlike most methods, this method can be called for a bitmap-dc% object without a bitmap installed.
(send a-dc get-gl-context) |
→ (or/c (is-a?/c gl-context<%>) false/c) |
See gl-context<%> for more information.
The vector content corresponds to a transformation matrix in the following order:
xx: a scale from the logical x to the device x
xy: a scale from the logical x added to the device y
yx: a scale from the logical y added to the device x
yy: a scale from the logical y to the device y
x0: an additional amount added to the device x
y0: an additional amount added to the device y
See also set-initial-matrix and get-transformation.
|
See also set-origin and get-transformation.
(send a-dc get-rotation) → real? |
See also set-rotation and get-transformation.
See also set-scale and get-transformation.
(send a-dc get-smoothing) |
→ (one-of/c 'unsmoothed 'smoothed 'aligned) |
(send a-dc get-text-background) → (is-a?/c color%) |
| ||||||||||||||||||||||||||||||||
string : string? | ||||||||||||||||||||||||||||||||
font : (or/c (is-a?/c font%) false/c) = #f | ||||||||||||||||||||||||||||||||
combine? : any/c = #f | ||||||||||||||||||||||||||||||||
offset : exact-nonnegative-integer? = 0 |
Returns the size of str at it would be drawn in the drawing context, starting from the offset character of str, and continuing until the end of str or the first null character. The font argument specifies the font to use in measuring the text; if it is #f, the current font of the drawing area is used. (See also set-font.)
The result is four real numbers:
the total width of the text (depends on both the font and the text);
the total height of the font (depends only on the font);
the distance from the baseline of the font to the bottom of the descender (included in the height, depends only on the font); and
extra vertical space added to the font by the font designer (included in the height, and often zero; depends only on the font).
The returned width and height define a rectangle is that guaranteed to contain the text string when it is drawn, but the fit is not necessarily tight. Some undefined number of pixels on the left, right, top, and bottom of the drawn string may be “whitespace,” depending on the whims of the font designer and the platform-specific font-scaling mechanism.
If combine? is #t, then text may be drawn with adjacent characters combined to ligature glyphs, with Unicode combining characters as a single glyph, with kerning, with right-to-left ordering of characters, etc. If combine? is #f, then the result is the same as if each character is drawn separately, and Unicode control characters are ignored.
Unlike most methods, this method can be called for a bitmap-dc% object without a bitmap installed.
(send a-dc get-text-foreground) → (is-a?/c color%) |
(send a-dc get-text-mode) → (one-of/c 'solid 'transparent) |
(send a-dc get-transformation) | ||||||
|
The vector content is as follows:
the initial transformation matrix; see get-initial-matrix;
the X and Y origin; see get-origin;
the X and Y scale; see get-origin;
a rotation; see get-rotation.
Due to automatic font substitution when drawing or measuring text, the result of this method does not depend on the given font, which merely provides a hint for the glyph search. If the font is #f, the drawing context’s current font is used. The result depends on the type of the drawing context, but the result for canvas% dc<%> instances and bitmap-dc% instances is always the same for a given platform and a given set of installed fonts.
See also screen-glyph-exists? .
(send a-dc resume-flush) → void? |
Afterward, the drawing context’s transformation is represented in the initial transformation matrix, and the separate origin, scale, and rotation settings have their identity values.
Afterward, the drawing context’s transformation is represented in the initial transformation matrix, and the separate origin, scale, and rotation settings have their identity values.
(send a-dc set-background color) → void? |
color : (is-a?/c color%) |
(send a-dc set-brush brush) → void? | |||||||||||
brush : (is-a?/c brush%) | |||||||||||
(send a-dc set-brush color style) → void? | |||||||||||
color : (is-a?/c color%) | |||||||||||
| |||||||||||
(send a-dc set-brush color-name style) → void? | |||||||||||
color-name : string? | |||||||||||
|
| ||||||||||||||||||||||||||||
x : real? | ||||||||||||||||||||||||||||
y : real? | ||||||||||||||||||||||||||||
width : (and/c real? (not/c negative?)) | ||||||||||||||||||||||||||||
height : (and/c real? (not/c negative?)) |
See also set-clipping-region and get-clipping-region.
The clipping region must be reset after changing a dc<%> object’s origin or scale (unless it is #f); see region% for more information.
See also set-clipping-rect and get-clipping-region.
See get-initial-matrix for information on the matrix as represented by a vector m.
See also transform, which adds a transformation to the current transformation, instead of changing the transformation composition in the middle.
(send a-dc set-origin x y) → void? |
x : real? |
y : real? |
See also translate, which adds a translation to the current transformation, instead of changing the transformation composition in the middle.
(send a-dc set-pen pen) → void? | ||||||||||
pen : (is-a?/c pen%) | ||||||||||
(send a-dc set-pen color width style) → void? | ||||||||||
color : (is-a?/c color%) | ||||||||||
width : (real-in 0 255) | ||||||||||
| ||||||||||
(send a-dc set-pen color-name width style) → void? | ||||||||||
color-name : string? | ||||||||||
width : (real-in 0 255) | ||||||||||
|
The current pen does not affect text drawing; see also set-text-foreground.
While a pen is selected into a drawing context, it cannot be modified.
(send a-dc set-rotation angle) → void? |
angle : real? |
See also rotate, which adds a rotation to the current transformation, instead of changing the transformation composition.
See also scale, which adds a scale to the current transformation, instead of changing the transformation composition in the middle.
(send a-dc set-smoothing mode) → void? |
mode : (one-of/c 'unsmoothed 'smoothed 'aligned) |
The smoothing mode is either 'unsmoothed, 'smoothed, or 'aligned. Both 'aligned and 'smoothed are smoothing modes.
In 'smoothed mode for a canvas or bitmap drawing context, integer drawing coordinates correspond to the boundary between pixels, and pen-based drawing is centered over a given line or curve. Thus, drawing with pen width 1 from (0, 10) to (10, 10) draws a 2-pixel wide line with 50% opacity.
The 'aligned smoothing mode is like 'smoothed, but it paints pixels more like 'unsmoothed mode. Since it aligns shapes to pixel boundaries, 'aligned mode often produces better results than 'smoothed, but the results depend on the application. The 'aligned mode is defined in terms of 'smoothed mode, except that drawing coordinates are rounded down (via floor, after scaling and origin translation). For line drawing, coordinates are then shifted right and down by the floor of half a pen width. In addition, for pen drawing through draw-rectangle, draw-ellipse, draw-rounded-rectangle, and draw-arc, the given width and height are each decreased by 1.0.
(send a-dc set-text-background color) → void? |
color : (is-a?/c color%) |
For monochrome drawing, all non-white colors are treated as black.
(send a-dc set-text-foreground color) → void? |
color : (is-a?/c color%) |
For monochrome drawing, all non-black colors are treated as white.
(send a-dc set-text-mode mode) → void? |
mode : (one-of/c 'solid 'transparent) |
'solid —
Before text is drawn, the destination area is filled with the text background color (see set-text-background). 'transparent —
Text is drawn directly over any existing image in the destination, as if overlaying text written on transparent film.
(send a-dc set-transformation t) → void? | ||||||||
|
For relevant devices, an exception is raised if start-doc has been called already (even if end-doc has been called as well). Furthermore, drawing methods raise an exception if not called while a page is active as determined by start-doc and start-page.
(send a-dc start-page) → void? |
Relevant devices, an exception is raised if start-page is called when a page is already started, or when start-doc has not been called, or when end-doc has been called already. In addition, in the case of PostScript output, Encapsulated PostScript (EPS) cannot contain multiple pages, so calling start-page a second time for a post-script-dc% instance raises an exception; to create PostScript output with multiple pages, supply #f as the as-eps initialization argument for post-script-dc%.
(send a-dc suspend-flush) → void? |
See get-initial-matrix for information on the matrix as represented by a vector m.
Afterward, the drawing context’s transformation is represented in the initial transformation matrix, and the separate origin, scale, and rotation settings have their identity values.
Afterward, the drawing context’s transformation is represented in the initial transformation matrix, and the separate origin, scale, and rotation settings have their identity values.