<sxg> <width>16</width> <height>16</height> <widthmm>10</widthmm> <heightmm>10</widthmm> <picture id="pen"> <type>pixmap</type> <size>scaled</size> <width>16</width> <height>16</height> </picture> <picture id="checkerboard"> <type>pixmap</type> <size> <type>mmrounded</type> <factor>.5</factor> </size> <width>16</width> <height>16</height> </picture> <!-- ... --> </sxg>
A picture
's
id
attribute gives the label that the
drawing instructions in the SXG file use to refer to this picture.
A picture
's
type
element specifies the picture's
type. There are three picture types:
rgb
This creates a solid color picture.
text
This creates a text picture.
pixmap
This creates a picture for a new pixmap.
The picture uses the same pictformat as the
“main”
picture
, creating a new pixmap of
the appropriate depth.
A pixmap picture
's
size
element calculates the pixmap's
actual size. A
pixmap
has the same
size
element, too:
scaled
“scaled” is the default sizing type, if not
specified.
“scaled”
picture
s' pixmaps
get scaled according to
the “main” picture's size.
This example specifies a 16x16 pixmap for this picture,
with a 16x16 SXG
file. With the picture's dimension matching the dimensions of the
SXG file, this
picture
s' pixmap
always gets scaled to match the scaled
image's size.
If this SXG file gets scaled to a 32x32 image, this picture's
pixmap's actual size also gets scaled accordingly.
In this example, if the picture
's
width
is 8, this
always creates a pixmap for this picture that's
half as wide as the
“main” picture's pixmap.
The coordinates and dimensions given in a
“scaled” picture's
render
commands also get scaled
accordingly.
fixed
The
picture
's
width
and
height
elements specify a fixed
picture size in pixels. The
picture
, and the coordinates for
its render
commands, do not get
scaled.
“fixed”
picture
s
get typically used to create pixel-specific rendering
patterns.
mm
Similar to “fixed”
picture
s, but
the
width
and
height
specify the size of the
picture in millimeters.
The width and height can be fractional, but the final
picture
size gets rounded off to the
nearest whole pixel size.
render
command coordinates
for “mm”
picture
get scaled accordingly.
For example, a 10mm by 10mm
picture
's coordinates range from 0
and up to, but not including, 10. The coordinate (5, 5) is
the center. If the display's resolution is 2.5 pixels per
millimenter, the
picture
's pixmap's actual size is
25x25 pixels. Coordinates for the
picture
's
render
ing commands get scaled and
rounded to the nearest pixel boundary, so the
virtual coordinate (5, 5) gets scaled to the actual
coordinate (13, 13), the center of the actual picture.
mmrounded
A special format that calculates the pixmap or the picture's
size, and coordinates, based on scaled
“pseudo-millimeters”.
The scaling factors are based on the number of pixels per
millimeter multiplied by
factor
(which defaults to 1),
then rounded off
to the nearest whole pixel value.
Example: the display's resolution is
4.5 pixels per millimeter,
factor
is .5, with a "10x10" picture
or pixmap size.
Multiplying 4.5*.5 gives 2.25, which gets rounded off to
two pixels per "pseudo-millimeter", and the resulting image
size becoms 20 pixels wide, and high.
If rounding off results in zero, this gets increased to one, so the result cannot be zero pixels per "pseudo-millimeter".
This is a convenient way to produce relatively small patterns that do not suffer from display artifacts due to rounding. Pixel coordinates can be fractional, but consider a small checkerboard-style pattern, with two columns and rows, defined by a pixmap or a picture object that's 1x1 millimeters in size, and a display with five pixels per millimeter. This may result in a visually-noticeable, uneven pattern of alternating two and three pixel-wide rows and columns.
Alternatively, using a mmrounded
size with
a factor of .5, the pixmap or picture's size can be specified
as 2x2
“rounded-off pseudo-millimeters”, the final object
size is guaranteed to have an even number of pixels.
A picture
initial contents are cleared
to a transparent background color (zero red, green, blue, and alpha
channels).