DUIM-DCs Library¶
Overview¶
The DUIM-DCs library provides color support to the DUIM library. The library contains a single module, duim-dcs, from which all the interfaces described in this chapter are exposed. DUIM-DCs Module contains complete reference entries for each exposed interface.
Throughout this chapter, a drawing context consists of the combination of ink, color, brush, pen, palette, and shapes that make up patterns and images.
The class hierarchy for DUIM-DCs¶
A number of base classes are exposed in the DUIM-DCs library, each of
which is a subclass of <object>
. They are shown in the following table
<object> |
||
<pen> |
||
<brush> |
||
<palette> |
||
<ink> |
||
<text-style> |
||
<device-font> |
<pen>
This is protocol class for pens. A pen is used to draw 1 dimensional graphics such as lines or outline, using a specific color or pattern.<brush>
The protocol class for brushes. Brushes are used to fill in 2 dimensional areas with a specific color or pattern.<palette>
The protocol class for palettes. A palette provides a set of colors which can be made available to an application.<ink>
This class can be thought of as anything that can be drawn. As the name implies, an ink describes the color and opacity features used by a given pen or brush. That is, the pen and brush define the drawing style (outlining or filling, respectively), and an ink is used to describe the color or pattern that is drawn. This class has a number of subclasses, described in Subclasses of <ink>.<text-style>
The protocol class for text styles. A text style is a portable way of describing the appearance of a piece of text on screen (its font family, size, weight, and so on) in an abstract fashion. Because the fonts available on a particular computer may not necessarily match the fonts available on the computer of the programmer, DUIM provides a portable model which allows the most suitable font on the user’s machine to be chosen at run-time.<device-font>
The protocol class for device-specific fonts, that is, fonts that are resident on a particular device. This is a direct subclass of<text-style>
.
Subclasses of <ink>¶
A number of subclasses of <ink> are exposed by the DUIM-DCs library, as follows:
<color>
The class of all colors available on the system. This is a direct subclass of<ink>
.<image>
The class of all images, such as icons and bitmap images. Images may often be acquired from an outside source, such as a file on disk. This is a direct subclass of<ink>
.<stencil>
A stencil is a special kind of pattern that contains only opacities, that is, it provides a layer of transparency. This can be useful, for instance, when overlaying a color onto an image, so as to provide the impression of shading. This is a direct subclass of<image>
.<pattern>
A pattern is a bounded rectangular arrangement of color, like a checkerboard. Drawing a pattern draws a different design in each rectangular cell of the pattern. This is a direct subclass of<stencil>
.
Error classes provided by DUIM-DCs¶
Two error classes are provided by the DUIM-DCs library, both of which
are immediate subclasses of <error>
.
<color-not-found>
This class of error is signalled when a color is requested but is not available on the user’s system.<palette-full>
This class of error is signalled when an attempt is made to add a color to a palette, and the palette cannot accept any more colors. The number of colors in a palette depends on the color depth of the connected monitor.
DUIM-DCs Module¶
This section contains a complete reference of all the interfaces that are exported from the duim-dcs module.
- \= Generic function¶
Returns
#t
if two objects are equal.- Signature:
= color1 color2 => boolean
- Signature:
= pen1 pen2 => boolean
- Signature:
= brush1 brush2 => boolean
- Signature:
= text-style1 text-style2 => value
- Parameters:
color1 – An instance of type
<color>
.color2 – An instance of type
<color>
.pen1 – An instance of type
<pen>
.pen2 – An instance of type
<pen>
.brush1 – An instance of type
<brush>
.brush2 – An instance of type
<brush>
.text-style1 – An instance of type
<text-style>
.text-style2 – An instance of type
<text-style>
.
- Values:
boolean – An instance of type
<boolean>
.
- Discussion:
Returns
#t
if two objects are equal.
- add-colors Generic function¶
Adds one or more colors to a palette and returns the updated palette.
- $background Constant¶
An indirect ink that uses the medium’s background design.
- Type:
- Discussion:
An indirect ink that uses the medium’s background design.
- See also:
- $black Constant¶
The usual definition of black.
- $blue Constant¶
The usual definition of the color blue.
- $boole-clr Constant¶
The logical operator that is always 0.
- Type:
- Discussion:
The logical operator that is always 0. It is a suitable first argument to the boole function.
- $boole-set Constant¶
The logical operator that is always 1.
- Type:
- Discussion:
The logical operator that is always 1. It is a suitable first argument to the boole function.
- $boole-1 Constant¶
The logical operator that is always the same as the first integer argument to the boole function.
- Type:
- Discussion:
The logical operator that is always the same as the first integer argument to the boole function. It is a suitable first argument to the boole function.
- $boole-2 Constant¶
The logical operator that is always the same as the second integer argument to the boole function.
- Type:
- Discussion:
The logical operator that is always the same as the second integer argument to the boole function. It is a suitable first argument to the boole function.
- $boole-c1 Constant¶
The logical operator that is always the same as the complement of the first integer argument to the boole function.
- Type:
- Discussion:
The logical operator that is always the same as the complement of the first integer argument to the boole function. It is a suitable first argument to the boole function.
- $boole-c2 Constant¶
The logical operator that is always the same as the complement of the second integer argument to the boole function.
- Type:
- Discussion:
The logical operator that is always the same as the complement of the second integer argument to the boole function. It is a suitable first argument to the boole function.
- $boole-and Constant¶
The logical operator and.
- Type:
- Discussion:
The logical operator and. It is a suitable first argument to the boole function.
- $boole-ior Constant¶
The logical operator inclusive or.
- Type:
- Discussion:
The logical operator inclusive or. It is a suitable first argument to the boole function.
- $boole-xor Constant¶
The logical operator exclusive or.
- Type:
- Discussion:
The logical operator exclusive or. It is a suitable first argument to the boole function.
- $boole-eqv Constant¶
The logical operator equivalence (exclusive nor).
- Type:
- Discussion:
The logical operator equivalence (exclusive nor). It is a suitable first argument to the boole function.
- $boole-nand Constant¶
The logical operator not-and.
- Type:
- Discussion:
The logical operator not-and. It is a suitable first argument to the boole function.
- $boole-nor Constant¶
The logical operator not-or.
- Type:
- Discussion:
The logical operator not-or. It is a suitable first argument to the boole function.
- $boole-andc1 Constant¶
The logical operator that is the and of the complement of the first integer argument to the boole function with the second.
- Type:
- Discussion:
The logical operator that is the and of the complement of the first integer argument to the boole function with the second. It is a suitable first argument to the boole function.
- $boole-andc2 Constant¶
The logical operator that is the and of the first integer argument to the boole function with the second with the complement of the second.
- Type:
- Discussion:
The logical operator that is and of the first integer argument to the boole function with the complement of the second. It is a suitable first argument to the boole function.
- $boole-orc1 Constant¶
The logical operator that is the or of the complement of the first integer argument to the boole function with the second.
- Type:
- Discussion:
The logical operator that is the or of the complement of the first integer argument to the boole function with the second. It is a suitable first argument to the boole function.
- $boole-orc2 Constant¶
The logical operator that is the or of the first integer argument to the boole function with the second with the complement of the second.
- Type:
- Discussion:
The logical operator that is or of the first integer argument to the boole function with the complement of the second. It is a suitable first argument to the boole function.
- $bricks-stipple Constant¶
A stipple pattern for use in creating a patterned brush with horizontal and vertical lines in the pattern of the mortar in a brick wall.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with horizontal and vertical lines in the pattern of the mortar in a brick wall.
- See also:
- <brush> Abstract Instantiable Class¶
The protocol class for brushes.
- Superclasses:
- Init-Keywords:
foreground – An instance of type
<ink>
.background – An instance of type
<ink>
.mode – An instance of type
<integer>
.fill-style – An instance of type
false-or(<integer>)
. Default value:#f
.fill-rule – An instance of type
false-or(<integer>)
. Default value:#f
.tile – An instance of type
false-or(<integer>)
. Default value:#f
.stipple – An instance of type
false-or(<integer>)
. Default value:#f
.ts-x – An instance of
false-or(<integer>)
. Default value:#f
.ts-y – An instance of
false-or(<integer>)
. Default value:#f
.
- Discussion:
The protocol class for brushes.
- Operations:
The following operations are exported from the DUIM-DCs module.
- See also:
- brush? Generic function¶
Returns
#t
if its argument is a brush.
- brush-background Generic function¶
Returns the ink that is the background color of a brush.
- brush-fill-rule Generic function¶
Returns the fill rule of the brush.
- brush-fill-style Generic function¶
Returns the fill style of the brush.
- brush-foreground Generic function¶
Returns the ink that is the foreground color of a brush.
- brush-mode Generic function¶
Returns an integer representing the drawing mode of a brush.
- brush-stipple Generic function¶
Returns the stipple pattern of a brush.
- Signature:
brush-stipple brush => stipple
- Parameters:
brush – An instance of type
<brush>
.
- Values:
stipple – A (stipple) or
#f
.
- Discussion:
Returns the stipple pattern of brush.
- See also:
- brush-stretch-mode Generic function¶
Returns the stretch mode of the brush.
- brush-tile Generic function¶
Returns the tile pattern of a brush.
- brush-ts-x Generic function¶
Returns the value of the x coordinate that is used to align the brush’s tile or stipple pattern.
- Signature:
brush-ts-x brush => value
- Parameters:
brush – An instance of type
<brush>
.
- Values:
value – An instance of type
false-or(<integer>)
.
- Discussion:
Returns the value of the x coordinate that is used to align the tile or stipple pattern of brush. If brush has no tile or stipple pattern, brush-ts-x returns
#f
.- See also:
- brush-ts-y Generic function¶
Returns the value of the y coordinate that is used to align the brush’s tile or stipple pattern.
- Signature:
brush-ts-y brush => value
- Parameters:
brush – An instance of type
<brush>
.
- Values:
value – An instance of type
false-or(<integer>)
.
- Discussion:
Returns the value of the y coordinate that is used to align the tile or stipple pattern of brush. If brush has no tile or stipple pattern, brush-ts-y returns
#f
.- See also:
- <color> Abstract Instantiable Class¶
The protocol class for colors.
- Superclasses:
- Init-Keywords:
red – An instance of type
<real>
.green – An instance of type
<real>
.blue – An instance of type
<real>
.intensity – An instance of type
limited(<real>, min: 0, max: sqrt(3))
.hue – An instance of type
limited(<real>, min: 0, max: 1)
.saturation – An instance of type
limited(<real>, min: 0, max: 1)
.opacity – An instance of type
limited(<real>, min: 0, max: 1)
.
- Discussion:
The
<color>
class is the protocol class for a color, and is a subclass of<ink>
. A member of the class<color>
is an ink that represents the intuitive definition of color: white, black, red, pale yellow, and so forth. The visual appearance of a single point is completely described by its color. Drawing a color sets the color of every point in the drawing plane to that color, and sets the opacity to 1.The
red:
,green:
, andblue:
init-keywords represent the red, green, and blue components of the color. For an 8-bit color scheme, these can take any real number in the range 0 to 255.The intensity describes the brightness of the color. An intensity of 0 is black.
The hue of a color is the characteristic that is represented by a name such as red, green, blue and so forth. This is the main attribute of a color that distinguishes it from other colors.
The saturation describes the amount of white in the color. This is what distinguishes pink from red.
Opacity controls how new color output covers previous color output (that is, the final appearance when one color is painted on top of another). Opacity can vary from totally opaque (a new color completely obliterates the old color) to totally transparent (a new color has no effect whatsoever; the old color remains unchanged). Intermediate opacity values result in color blending so that the earlier color shows through what is drawn on top of it.
All of the standard instantiable color classes provided by DUIM are immutable.
A color can be specified by four real numbers between 0 and 1 (inclusive), giving the amounts of red, green, blue, and opacity (alpha). Three 0’s for the RGB components mean black; three 1’s mean white. The intensity-hue-saturation color model is also supported, but the red-green-blue color model is the primary model we will use in the specification.
An opacity may be specified by a real number between 0 and 1 (inclusive). 0 is completely transparent, 1 is completely opaque, fractions are translucent. The opacity of a color is the degree to which it hides the previous contents of the drawing plane when it is drawn.
- Operations:
The following operations are exported from the DUIM-DCs module.
- See also:
- color? Generic function¶
Returns
#t
if object is a color.
- color-ihs Generic function¶
Returns four values, the intensity, hue, saturation, and opacity components of a color.
- Signature:
color-ihs color => intensity hue saturation opacity
- Parameters:
color – An instance of type
<color>
.
- Values:
intensity – An instance of type
limited(<real>, min: 0, max: sqrt(3))
.hue – An instance of type
limited(<real>, min: 0, max: 1)
.saturation – An instance of type
limited(<real>, min: 0, max: 1)
.opacity – An instance of type
limited(<real>, min: 0, max: 1)
.
- Discussion:
Returns four values, the intensity, hue, saturation, and opacity components of the color color. The first value is a real number between 0 and sqrt{3 } (inclusive). The second and third values are real numbers between 0 and
1
(inclusive).- See also:
- color-luminosity Generic function¶
Returns the brightness of a color.
- Signature:
color-luminosity* color => luminosity
- Parameters:
color – An instance of type
<color>
.
- Values:
luminosity – An instance of type
limited(<real>, min: 0, max: 1)
.
- Discussion:
Returns the brightness of color color as real number between 0 and
1
. The value is the solution of a function that describes the perception of the color by the human retina.- See also:
- <color-not-found> Concrete Sealed Class¶
The class of the error that is signalled when a color that is not available is requested.
- Superclasses:
<error>
- Init-Keywords:
color – An instance of type
<color>
.
- Discussion:
The class of the error that is signalled when a color that is not available is requested. The
color:
init-keyword is used to specify the color that was requested but was not available.- Operations:
None.
- See also:
- color-palette? Generic function¶
Returns
#t
if the stream or medium supports color.
- color-rgb Generic function¶
Returns four values, the red, green, blue, and opacity components of a color.
- Signature:
color-rgb color => ref green blue opacity
- Parameters:
color – An instance of type
<color>
.
- Values:
red – An instance of type
limited(<real>, min: 0, max: 1)
gree – n An instance of type
limited(<real>, min: 0, max: 1)
blue – An instance of type
limited(<real>, min: 0, max: 1)
opacity – An instance of type
limited(<real>, min: 0, max: 1)
.
- Discussion:
Returns four values, the red, green, blue, and opacity components of the color color. The values are real numbers between 0 and 1 (inclusive).
- See also:
- contrasting-colors-limit Generic function¶
Returns the number of contrasting colors that can be rendered on the current platform.
- Signature:
contrasting-colors-limit port => integer
- Parameters:
port – An instance of type
<silica>
- Values:
integer – An instance of type
<integer>
.
- Discussion:
Returns the number of contrasting colors (or stipple patterns if port is monochrome or grayscale) that can be rendered on any medium on the port port. Implementations are encouraged to make this as large as possible, but it must be at least 8. All classes that obey the medium protocol must implement a method for this generic function.
- See also:
- contrasting-dash-patterns-limit Generic function¶
Returns the number of contrasting dash patterns that the specified port can generate.
- Signature:
contrasting-dash-patterns-limit port => no-of-patterns
- Parameters:
port – An instance of type
<silica>
.
- Values:
no-of-patterns – An instance of type
<integer>
.
- Discussion:
Returns the number of contrasting dash patterns that the specified port can generate.
- See also:
- $cross-hatch Constant¶
A stipple pattern for use in creating a patterned brush with alternating solid and dashed lines.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with alternating solid and dashed lines.
- See also:
- $cyan Constant¶
The usual definition for the color cyan.
- $dash-dot-dot-pen Constant¶
A pen that draws a line with two dots between each dash.
- Type:
- Discussion:
A pen that draws a line with two dots between each dash. The line width is
1
anddashes:
is#[4, 1, 1, 1, 1, 1]
.- See also:
- $dash-dot-pen Constant¶
A pen that draws a dashed and dotted line.
- Type:
- Discussion:
A pen that draws a dashed and dotted line. The line width is
1
anddashes:
is#[4, 1, 1, 1]
.- See also:
- $dashed-pen Constant¶
A pen that draws a dashed line.
- Type:
- Discussion:
A pen that draws a dashed line. The line width is
1
anddashes:
is#t
.- See also:
- default-background Generic function¶
Returns the ink that is the default background of its argument.
- default-background-setter Generic function¶
Sets the default background.
- Signature:
default-foreground-setter background object => background
- Parameters:
- Values:
background – An instance of type
<ink>
.
- Discussion:
Sets the default background for object.
- See also:
- default-foreground Generic function¶
Returns the ink that is the default foreground of its argument.
- default-foreground-setter Generic function¶
Sets the default foreground.
- Signature:
default-foreground-setter foreground object => foreground
- Parameters:
- Values:
foreground – An instance of type
<ink>
.
- Discussion:
Sets the default foreground for object.
- See also:
- default-text-style Generic function¶
Returns the default text style for its argument.
- Signature:
default-text-style object => text-style
- Parameters:
object – An instance of type
<object>
.
- Values:
text-style – An instance of type
<text-style>
.
- Discussion:
Returns the default text style for its argument.This function is used to merge against if the text style is not fully specified, or if no text style is specified.
- See also:
- default-text-style-setter Generic function¶
Sets the default text style.
- Signature:
default-text-style-setter text-style object => text-style
- Parameters:
text-style – An instance of type
<text-style>
.object – An instance of type
<object>
.
- Values:
text-style – An instance of type
<text-style>
.
- Discussion:
Sets the default text style.
- See also:
- <device-font> Concrete Sealed Class¶
The protocol class for device-specific fonts.
- Superclasses:
- Init-Keywords:
port –
font-name –
- Discussion:
The protocol class for device-specific fonts.
- Operations:
None.
- See also:
- $diagonal-hatch-down Constant¶
A stipple pattern for use in creating a patterned brush with alternating dashes and spaces.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with alternating dashes and spaces, the first line starting with a dash, followed by a space, and the second line starting with a space followed by a dash.
- See also:
- $diagonal-hatch-up Constant¶
A stipple pattern for use in creating a patterned brush with alternating dashes and spaces.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with alternating dashes and spaces, the first line starting with a space, followed by a dash, and the second line starting with a dash followed by a space.
- See also:
- $dotted-pen Constant¶
A pen that draws a dotted line.
- Type:
- Discussion:
A pen that draws a dotted line. The line width is
1
anddashes:
is#[1, 1]
.- See also:
- find-color Generic function¶
Looks up and returns a color by name.
- Signature:
find-color name palette #key error? => color
- Parameters:
- Values:
color – An instance of type
<color>
.
- Discussion:
Looks up and returns a color by name. This is a list of the commonly provided color names that can be looked up with find-color:
alice-blue
antique-white
aquamarine
azure
beige
bisque
black
blanched-almond
blue
blue-violet
brown
burlywood
cadet-blue
chartreuse
chocolate
coral
cornflower-blue
cornsilk
cyan
dark-goldenrod
dark-green
dark-khaki
dark-olive-green
dark-orange
dark-orchid
dark-salmon
dark-sea-green
dark-slate-blue
dark-slate-gray
dark-turquoise
dark-violet
deep-pink
deep-sky-blue
dim-gray
dodger-blue
firebrick
floral-white
forest-green
gainsboro
ghost-white
gold
goldenrod
gray
green
green-yellow
honeydew
hot-pink
indian-red
ivory
khaki
lavender
lavender-blush
lawn-green
lemon-chiffon
light-blue
light-coral
light-cyan
light-goldenrod
light-goldenrod-yellow
light-gray
light-pink
light-salmon
light-sea-green
light-sky-blue
light-slate-blue
light-slate-gray
light-steel-blue
light-yellow
lime-green
linen
magenta
maroon
medium-aquamarine
medium-blue
medium-orchid
medium-purple
medium-sea-green
medium-slate-blue
medium-spring-green
medium-turquoise
medium-violet-red
midnight-blue
mint-cream
misty-rose
moccasin
navajo-white
navy-blue
old-lace
olive-drab
orange
orange-red
orchid
pale-goldenrod
pale-green
pale-turquoise
pale-violet-red
papaya-whip
peach-puff
peru
pink
plum
powder-blue
purple
red
rosy-brown
royal-blue
saddle-brown
salmon
sandy-brown
sea-green
seashell
sienna
sky-blue
slate-blue
slate-gray
snow
spring-green
steel-blue
tan
thistle
tomato
turquoise
violet
violet-red
wheat
white
white-smoke
yellow
yellow-green
Application programs can define other colors; these are provided because they are commonly used in the X Windows community, not because there is anything special about these particular colors.
- See also:
- $foreground Constant¶
An indirect ink that uses the medium’s foreground design.
- fully-merged-text-style? Generic function¶
Returns
#t
if the specified text style is completely specified.- Signature:
fully-merged-text-style? text-style => boolean
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
boolean – An instance of type
<boolean>
.
- Discussion:
Returns
#t
if the specified text style is completely specified.- See also:
- $green Constant¶
The usual definition of the color green.
- $hearts-stipple Constant¶
A stipple pattern for use in creating a patterned brush that draws a heart shape.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush that draws a heart shape.
- See also:
- $horizontal-hatch Constant¶
A stipple pattern for use in creating a patterned brush with alternating horizontal rows of lines and spaces.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with alternating horizontal rows of lines and spaces.
- See also:
- <image> Abstract Class¶
The class for objects that are images.
- Superclasses:
- Discussion:
The class for objects that are images.
- Operations:
The following operation is exported from the DUIM-DCs module.
The following operation is exported from the DUIM-Graphics module.
<graphics>
- See also:
- image? Generic function¶
Returns
#t
if its argument is an image.
- image-depth Generic function¶
Returns the depth of an image.
- image-height Generic function¶
Returns the height of an image.
- image-width Generic function¶
Returns the width of an image.
- <ink> Abstract Class¶
The class of objects that represent a way of arranging colors and opacities in the drawing plane.
- Superclasses:
- Discussion:
The class of objects that represent a way of arranging colors and opacities in the drawing plane. Intuitively, it is anything that can be drawn with. An ink is anything that can be used in medium-foreground, medium-background, medium-ink, or the foreground or background of a brush.
- Operations:
The following operation is exported from the DUIM-DCs module.
- See also:
- ink? Generic function¶
Returns
#t
if its argument is an ink.
- $magenta Constant¶
The usual definition of the color magenta.
- make Generic function¶
Returns an object that is of the same type as the class given as its argument.
- Signature:
make (class == <pen>) #key width units dashes joint-shape cap-shape => pen
- Signature:
make (class == <brush>) #key foreground background mode fill-style fill-rule tile stipple ts-x ts-y => brush
- Parameters:
(class==<pen>) – The class
<pen>
.width – An instance of type
<pen-width>
. Default value:1
.units – An instance of type
<pen-units>
. Default value:#"normal"
.dashes – An instance of type
<pen-dashes>
. Default value:#f
.joint-shape – An instance of type
<pen-joint-shape>
. Default value:#"miter"
.cap-shape – An instance of type
<pen-cap-shape>
. Default value:#"butt"
.(class==<brush>) – The class
<brush>
.foreground – An instance of type
<ink>
. Default value:$foreground
.background – An instance of type
<ink>
. Default value:$background
.mode – An instance of type
<integer>
. Default value:$boole-1
.fill-style – A (fill-style) or
#f
. Default value:#f
.fill-rule – A (fill-rule) or
#f
. Default value:#f
.tile – An (image) or
#f
. Default value:#f
.stipple – A (stipple) or
#f
. Default value:#f
.ts-x – An instance of
false-or(<integer>)
. Default value:#f
.ts-y – An instance of
false-or(<integer>)
. Default value:#f
.
- Values:
- Discussion:
Returns an object that is of the same type as the class given as its argument. Default values for the keywords that specify object are provided, or the keywords can be given explicitly to override the defaults.
- See also:
- make-color-for-contrasting-color Generic function¶
Returns a color that is recognizably different from the main color.
- make-contrasting-colors Function¶
Returns a vector of colors with recognizably different appearance.
- Signature:
make-contrasting-colors n #key k => colors
- Parameters:
- Discussion:
Returns a vector of n colors with recognizably different appearance. Elements of the vector are guaranteed to be acceptable values for the
brush:
argument to the drawing functions, and do not include$foreground
,$background
, or nil. Their class is otherwise unspecified. The vector is a fresh object that may be modified.If k is supplied, it must be an integer between
0
andn - 1
(inclusive), in which case make-contrasting-colors returns the k th color in the vector rather than the whole vector.If the implementation does not have n different contrasting colors, make-contrasting-colors signals an error. This does not happen unless n is greater than eight.
The rendering of the color is a true color or a stippled pattern, depending on whether the output medium supports color.
- See also:
- make-contrasting-dash-patterns Function¶
Returns a vector of dash patterns with recognizably different appearances.
- Signature:
make-contrasting-dash-patterns n #key k => dashes
- Parameters:
- Values:
dashes – An instance of type
<vector>
.
- Discussion:
Returns a vector of n dash patterns with recognizably different appearances. If the keyword k is supplied, make-contrasting-dash-patterns returns the k th pattern. If there are not n different dash patterns, an error is signalled.
The argument n represents the number of dash patterns.
The argument k represents the index in the vector of dash patterns indicating the pattern to use.
- See also:
- make-device-font Function¶
Returns a device-specific font.
- Signature:
make-device-font port font => device-font
- Parameters:
port – An instance of type
<silica>
.font – An instance of type
<object>
.
- Values:
device-font – A font object or the name of a font.
- Discussion:
Returns a device-specific font. Text styles are mapped to fonts for a port, a character set, and a text style. All ports must implement methods for the generic functions, for all classes of text style.
The objects used to represent a font mapping are unspecified and are likely to vary from port to port. For instance, a mapping might be some sort of font object on one type of port, or might simply be the name of a font on another.
Part of initializing a port is to define the mappings between text styles and font names for the port’s host window system.
- make-gray-color Function¶
Returns a member of class
<color>
.- Signature:
make-gray-color luminosity #key opacity => color
- Parameters:
luminosity – An instance of type
limited(<real>, min: 0, max: 1)
.opacity – An instance of type
limited(<real>, min: 0, max: 1)
. Default value:1.0
.
- Values:
color – An instance of type
<color>
.
- Discussion:
Returns a member of class
<color>
. The luminance is a real number between 0 and1
(inclusive). On a black-on-white display device, 0 means black,1
means white, and the values in between are shades of gray. On a white-on-black display device, 0 means white,1
means black, and the values in between are shades of gray.- See also:
- make-ihs-color Function¶
Returns a member of the class
<color>
.- Signature:
make-ihs-color intensity hue saturation #key opacity => color
- Parameters:
intensity – An instance of type
limited(<real>, min: 0, max: sqrt(3))
.hue – An instance of type
limited(<real>, min: 0, max: 1)
.saturation – An instance of type
limited(<real>, min: 0, max: 1)
.opacity – An instance of type
limited(<real>, min: 0, max: 1)
. Default value:1.0
.
- Values:
color – An instance of type
<color>
.
- Discussion:
Returns a member of class
<color>
. The intensity argument is a real number between 0 and sqrt(3) (inclusive). The hue and saturation arguments are real numbers between 0 and 1 (inclusive).- See also:
- make-pattern Function¶
Returns a pattern generated from a two-dimensional array.
- Signature:
make-pattern array colors => pattern
- Parameters:
array – An instance of type
<array>
.colors – An instance of type
limited(<sequence>, of: <color>)
.
- Values:
pattern – An instance of type
<pattern>
.
- Discussion:
Returns a pattern design that has (array-dimension array 0) cells in the vertical direction and (array-dimension array 1} cells in the horizontal direction. array must be a two-dimensional array of non-negative integers less than the length of designs. designs must be a sequence of designs. The design in cell*i,j* of the resulting pattern is the n th element of designs, if n is the value of (aref array i j ). For example, array can be a bit-array and designs can be a list of two designs, the design drawn for 0 and the one drawn for 1. Each cell of a pattern can be regarded as a hole that allows the design in it to show through. Each cell might have a different design in it. The portion of the design that shows through a hole is the portion on the part of the drawing plane where the hole is located. In other words, incorporating a design into a pattern does not change its alignment to the drawing plane, and does not apply a coordinate transformation to the design. Drawing a pattern collects the pieces of designs that show through all the holes and draws the pieces where the holes lie on the drawing plane. The pattern is completely transparent outside the area defined by the array.
Each cell of a pattern occupies a 1 by 1 square. You can use
transform-region
to scale the pattern to a different cell size and shape, or to rotate the pattern so that the rectangular cells become diamond-shaped. Applying a coordinate transformation to a pattern does not affect the designs that make up the pattern. It only changes the position, size, and shape of the cells’ holes, allowing different portions of the designs in the cells to show through. Consequently, applying make-rectangular-tile to a pattern of nonuniform designs can produce a different appearance in each tile. The pattern cells’ holes are tiled, but the designs in the cells are not tiled and a different portion of each of those designs shows through in each tile.
- make-rgb-color Function¶
Returns a member of class
<color>
.- Signature:
make-rgb-color red green blue #key opacity => color
- Parameters:
red – An instance of type
limited(<real>, min: 0, max: 1)
.green – An instance of type
limited(<real>, min: 0, max: 1)
.blue – An instance of type
limited(<real>, min: 0, max: 1)
.opacity – An instance of type
limited(<real>, min: 0, max: 1)
. Default value:1.0
.
- Values:
color – An instance of type
<color>
.
- Discussion:
Returns a member of class
<color>
. The red, green, and*blue* arguments are real numbers between 0 and 1 (inclusive) that specify the values of the corresponding color components.When all three color components are 1, the resulting color is white. When all three color components are 0, the resulting color is black.
- See also:
- make-stencil Function¶
Returns a pattern design generated from a two-dimensional array.
- Signature:
make-stencil array => stencil
- Parameters:
array – An instance of type
<array>
.
- Values:
stencil – An instance of type
<stencil>
.
- Discussion:
Returns a pattern design that has (array-dimension array 0) cells in the vertical direction and (array-dimension array 1) cells in the horizontal direction. array must be a two-dimensional array of real numbers between 0 and 1 (inclusive) that represent opacities. The design in cell i,j of the resulting pattern is the value of
(make-opacity (aref array i j))
.
- make-text-style Function¶
Returns an instance of
<text-style>
.- Signature:
make-text-style family weight slant size #key underline? strikeout? => text-style
- Parameters:
family – An instance of type
one-of(#"fix", #"serif", #"sans-serif", #f)
.weight – An instance of type
one-of(#"normal", #"condensed", #"thin", #"extra-light", #"light", #"medium", #"demibold", #"bold", #"extra-bold", #"black", #f)
.slant – An instance of type
one-of(#"roman", #"italic", #"oblique", #f)
.size – An instance of
<integer>
, or an instance of typeone-of(#"normal", #"tiny", #"very-small", #"small", #"large", #"very-large:", #"huge", #"smaller", #"larger", #f)
.underline? – An instance of type
<boolean>
.strikeout? – An instance of type
<boolean>
.
- Values:
text-style – An instance of type
<text-style>
.
- Discussion:
Returns an instance of
<text-style>
.Text style objects have components for family, face, and size. Not all of these attributes need be supplied for a given text style object. Text styles can be merged in much the same way as pathnames are merged; unspecified components in the style object (that is, components that have
#f
in them) may be filled in by the components of a default style object. A text style object is called fully specified if none of its components is#f
, and the size component is not a relative size (that is, neither#"smaller"
nor#"larger"
).If size is an integer, it represents the size of the font in printer’s points.
Implementations are permitted to extend legal values for family, face, and size.
- See also:
- merge-text-styles Generic function¶
Merges two text styles and returns a new text style that is the same as the first, except that unspecified components in are filled in from the second.
- Signature:
merge-text-styles text-style default-style => text-style
- Parameters:
text-style – An instance of type
<text-style>
.default-style – An instance of type
<text-style>
.
- Values:
text-style – An instance of type
<text-style>
.
- Discussion:
Merges the text styles text-style with default-style, that is, returns a new text style that is the same as text-style, except that unspecified components in style1 are filled in from default-style. For convenience, the two arguments may be also be style specs. Note that default-style must be a fully specified text style.
When merging the sizes of two text styles, if the size from the first style is a relative size, the resulting size is either the next smaller or next larger size than is specified by default-style. The ordering of sizes, from smallest to largest, is
#"tiny"
,#"very-small"
,#"small"
,#"normal"
,#"large"
,#"very-large"
, and#"huge"
.- See also:
- <palette> Abstract Instantiable Class¶
The protocol class for color palettes.
- Superclasses:
- Discussion:
The protocol class for color palettes.
- Operations:
do-add-colors
do-remove-colors
dynamic-palette?
- See also:
- palette? Generic function¶
Returns
#t
if an object is a palette.
- <palette-full> Concrete Sealed Class¶
The class for errors that are signalled when a color palette is full.
- Superclasses:
<error>
- Init-Keywords:
palette –
- Discussion:
The class for errors that are signalled when a color palette is full.
- See also:
- $parquet-stipple Constant¶
A stipple pattern for use in creating a patterned brush that looks like a parquet floor.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush that looks like a parquet floor.
- See also:
- <pattern> Concrete Sealed Class¶
The class for patterns.
- Superclasses:
- Init-Keywords:
colors – An instance of type
limited(<sequence>, of: <color>)
.
- Discussion:
The class for patterns. A pattern is a bounded rectangular arrangement of color, like a checkerboard. Drawing a pattern draws a different design in each rectangular cell of the pattern.
- Operations:
The following operation is exported from the DUIM-DCs module.
- See also:
- pattern? Generic function¶
Returns
#t
if its argument is a pattern.
- <pen> Abstract Instantiable Class¶
The protocol class for pens.
- Superclasses:
- Init-Keywords:
width – An instance of type
<integer>
. Default value:1
.units – An instance of type
one-of(#"normal", #"point", #"device")
. Default value:#"normal"
.dashes – An instance of
type-union(<boolean>, <sequence>)
. Default value:#f
.joint-shape – An instance of type
one-of(#"miter", #"bevel", #"round", #"none")
. Default value:#"miter"
.cap-shape – An instance of type
one-of(#"butt", #"square", #"round", #"no-end-point")
. Default value:#"butt"
.
- Discussion:
The protocol class for pens. A pen imparts ink to a medium.
- Operations:
The following operations are exported from the DUIM-DCs module.
- See also:
- pen? Generic function¶
Returns
#t
if its argument is a pen.
- pen-cap-shape Generic function¶
Returns the shape of the end of a line or an arc drawn by the pen.
- Signature:
pen-cap-shape pen => value
- Parameters:
pen – An instance of type
<pen>
.
- Values:
value – An instance of type
one-of(#"butt", #"square", #"round", #"no-end-point")
.
- Discussion:
Returns the shape of the end of a line or an arc drawn by pen.
- See also:
- pen-dashes Generic function¶
Returns
#t
if the lines drawn by a pen are dashed.- Signature:
pen-dashes pen => value
- Parameters:
pen – An instance of type
<pen>
.
- Values:
value – An instance of type
type-union(<boolean>, <sequence>)
.
- Discussion:
Returns
#t
if the lines drawn by pen are dashed. The sequence is a vector of integers indicating the pattern of dashes. There must be an even number of integers. The odd elements in the list indicate the length of the inked dashes and the even elements indicate the length of the gaps between dashes.- See also:
- pen-joint-shape Generic function¶
Returns the shape of the joints between line segments of a closed, unfilled figure.
- Signature:
pen-joint-shape pen => value
- Parameters:
pen – An instance of type
<pen>
.value – An instance of type
one-of(#"miter", #"bevel", #"round", #"none")
.
- Discussion:
Returns the shape of the joints between line segments of a closed, unfilled figure drawn by pen.
- See also:
- pen-units Generic function¶
Returns the units in which the pen width is specified.
- Signature:
pen-units pen => value
- Parameters:
pen – An instance of type
<pen>
.
- Values:
value – An instance of type
one-of(#"normal", #"point", #"device")
.
- Discussion:
Returns the units in which the pen width is specified. They may be normal, points, or device-dependent. A width of
#"normal"
is a comfortably visible thin line.- See also:
- pen-width Generic function¶
Returns the pen-width, that is how wide a stroke the pen draws, of its argument.
- Signature:
pen-width pen => width
- Parameters:
pen – An instance of type
<pen>
.
- Values:
width – An instance of type
<pen-width>
. The units that specify the width of the pen may be#"normal"
,#"points"
, or#"device"
.
- Discussion:
Returns the pen width, that is how wide a stroke the pen draws, of pen . A width of
#"normal"
is a comfortably visible thin line.- See also:
- read-image Generic function¶
Reads an image.
- Signature:
read-image resource-id #key image-type: image-type #all-keys => image
- Parameters:
locator – An instance of type
type-union(<string>, <locator>)
.image-type – On Windows, an instance of type
one-of(#"bitmap", #"icon")
.
- Values:
image – An instance of type
<image>
.
- Discussion:
Reads an image from the location resource-id. This function calls read-image-as.
- See also:
- read-image-as Generic function¶
Reads an image.
- Signature:
read-image-as class locator image-type #key #all-keys => image
- Parameters:
- Values:
image – An instance of type
<image>
.
- Discussion:
Reads the image in the location pointed to be locator, as an instance of a particular class*.* This function is called by read-image.
The class represents the class that the image is read as an instance of.
- See also:
- $red Constant¶
The usual definition of the color red.
- remove-colors Generic function¶
Removes one or more colors from a palette and returns the updated palette.
- $solid-pen Constant¶
A pen that draws a solid line.
- Type:
- Discussion:
A pen that draws a solid line. The width of the line is
1
, anddashes:
is#f
.- See also:
- <stencil> Concrete Sealed Class¶
The class for stencils.
- Superclasses:
- Init-Keywords:
array – An instance of type
<array>
. Required.transform – An instance of type
<transform>
. Default value:#f
.
- Discussion:
The class for stencils. A stencil is a special kind of pattern that contains only opacities.
- Operations:
The following operations are exported from the DUIM-DCs module.
The following operation is exported from the DUIM-Geometry module.
- See also:
- stencil? Generic function¶
Returns
#t
if its argument is a stencil.
- <text-style> Abstract Instantiable Class¶
The protocol class for text styles.
- Superclasses:
- Init-Keywords:
family – An instance of type
one-of(#"fix", #"serif", #"sans-serif", #f)
. Default value:#f
.weight – An instance of type
one-of(#"normal", #"condensed", #"thin", #"extra-light", #"light", #"medium", #"demibold", #"bold", #"extra-bold", #"black", #f)
.slant – An instance of type
one-of(#"roman", #"italic", #"oblique", #f)
.size – An instance of
<integer>
, or an instance of typeone-of(#"normal", #"tiny", #"very-small", #"small", #"large", #"very-large:", #"huge", #"smaller", #"larger", #f)
. Default value:#f
.underline? – An instance of type
<boolean>
. Default value:#f
.strikeout? – An instance of type
<boolean>
. Default value:#f
.
- Discussion:
The protocol class for text styles. When specifying a particular appearance for rendered characters, there is a tension between portability and access to specific font for a display device. DUIM provides a portable mechanism for describing the desired text style in abstract terms. Each port defines a mapping between these abstract style specifications and particular device-specific fonts. In this way, an application programmer can specify the desired text style in abstract terms secure in the knowledge that an appropriate device font will be selected at run time. However, some applications may require direct access to particular device fonts. The text style mechanism supports specifying device fonts by name, allowing the programmer to sacrifice portability for control.
If
size:
is specified as an integer, then it represents the font size in printer’s points.- Operations:
The following operations are exported from the DUIM-DCs module.
=
The following operations are exported from the DUIM-Sheets module.
- See also:
- text-style? Generic function¶
Returns
#t
if its argument is a text-style.
- text-style-components Generic function¶
Returns the components of a text style as the values family, face, slant, size, underline and strikeout.
- Signature:
text-style-components text-style => family weight slant size underline? strikeout?
- Parameters:
text-style – An instance of type
<text-style>
.slant – An instance of type
one-of(#"roman", #"italic", #"oblique", #f)
.
- Values:
family – An instance of type
one-of(#"fix", #"serif", #"sans-serif", #f)
.weight – An instance of type
one-of(#"normal", #"condensed", #"thin", #"extra-light", #"light", #"medium", #"demibold", #"bold", #"extra-bold", #"black", #f)
.size – An instance of
<integer>
, or an instance of typeone-of(#"normal", #"tiny", #"very-small", #"small", #"large", #"very-large:", #"huge", #"smaller", #"larger", #f)
. Default value:#f
.underline? – An instance of type
<boolean>
.strikeout? – An instance of type
<boolean>
.
- Discussion:
Returns the components of the text style text-style as the values family, face, slant, size, underline and strikeout.
- See also:
- text-style-family Generic function¶
Returns the family component of the specified text style.
- Signature:
text-style-family text-style => family
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
family – An instance of type
one-of(#"fix", #"serif", #"sans-serif", #f)
.
- Discussion:
Returns the family component of the specified text style.
- See also:
- text-style-size Generic function¶
Returns the style component of the specified text style.
- Signature:
text-style-size text-style => size
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
size – An instance of
<integer>
, or an instance of typeone-of(#"normal", #"tiny", #"very-small", #"small", #"large", #"very-large:", #"huge", #"smaller", #"larger", #f)
. Default value:#f
.
- Discussion:
Returns the style component of the specified text style.
- See also:
- text-style-slant Generic function¶
Returns the slant component of the specified text style.
- Signature:
text-style-slant text-style => slant
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
slant – An instance of type
one-of(#"roman", #"italic", #"oblique", #f)
.
- Discussion:
Returns the slant component of the specified text style.
- See also:
- text-style-strikeout? Generic function¶
Returns
#t
if the text style includes a line through it, striking it out.- Signature:
text-style-strikeout? text-style => strikeout?
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
strikeout? – An instance of type
<boolean>
.
- Discussion:
Returns
#t
if the text style includes a line through it, striking it out.- See also:
- text-style-underline? Generic function¶
Returns
#t
if the text style is underlined.- Signature:
text-style-underline? text-style => underline?
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
underline? – An instance of type
<boolean>
.
- Discussion:
Returns
#t
if the text style is underlined.- See also:
- text-style-weight Generic function¶
Returns the weight component of the specified text style.
- Signature:
text-style-weight text-style => weight
- Parameters:
text-style – An instance of type
<text-style>
.
- Values:
weight – An instance of type
one-of(#"normal", #"condensed", #"thin", #"extra-light", #"light", #"medium", #"demibold", #"bold", #"extra-bold", #"black", #f)
.
- Discussion:
Returns the weight component of the text style.
- See also:
- $tiles-stipple Constant¶
A stipple pattern for use in creating a patterned brush with lines and spaces suggesting tiles
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with lines and spaces suggesting tiles
- See also:
- $vertical-hatch Constant¶
A stipple pattern for use in creating a patterned brush with alternating vertical columns of lines and spaces.
- Type:
<array>
- Discussion:
A stipple pattern for use in creating a patterned brush with alternating vertical columns of lines and spaces.
- See also:
- $white Constant¶
The usual definition of white.
- write-image Generic function¶
Writes out a copy of an image to disk (or other designated medium).
- $xor-brush Constant¶
A standard brush with the drawing property of $boole-xor.
- Type:
- Discussion:
A standard brush with the drawing property of $boole-xor.