<sxg> <!-- width and height declarations --> <picture id="pen"> <type>pixmap</type> <size>scaled</size> <width>16</width> <height>16</height> </picture> <render id="pen"> <!-- Graphic context commands --> </render> </sxg>
After declaring one or more
pictures
s,
the
render
elements
execute commands for the picture object specified by their
id
attribute.
A picture
object with the id
“main” gets automatically created by default.
It represents the final
drawn picture.
Each render
element itself
contains a list of commands to execute, and the
SXG file itself has a list of
gc
and
render
elements, which are processed
in the order of their appearance.
It's possible to have more than one appearance of a
render
element referencing the same picture
id
:
<sxg> <!-- ... --> <render id="pen"> <!-- ... --> </render> <gc id="pixmap1_gc"> <!-- ... --> </gc> <render id="pen"> <!-- ... --> </render> <render id="main"> <!-- ... --> </render> </sxg>
This executes some rendering commands for the “pen” picture, followed by graphic context commands for the graphic context “pixmap1_gc”, followed by more render commands for picture “pen”, and finally some render commands for the “main” picture.
op
<!-- --> <op>atop</op> <!-- -->
Several commands described below contain an optional
op
which specifies the compositing
operator.
Its value must be one of the following, setting
the correposnding compositing operation from the RENDER
specification:
“clear
”,
“src
”,
“dst
”,
“over
”,
“over_reverse
”,
“in
”,
“in_reverse
”,
“out
”,
“out_reverse
”,
“atop
”,
“atop_reverse
”,
“xor
”,
“add
”,
“saturate
”,
“disjoint_clear
”,
“disjoint_src
”,
“disjoint_dst
”,
“disjoint_over
”,
“disjoint_over_reverse
”,
“disjoint_in
”,
“disjoint_in_reverse
”,
“disjoint_out
”,
“disjoint_out_reverse
”,
“disjoint_atop
”,
“disjoint_atop_reverse
”,
“disjoint_xor
”,
“conjoint_clear
”,
“conjoint_src
”,
“conjoint_dst
”,
“conjoint_over
”,
“conjoint_over_reverse
”,
“conjoint_in
”,
“conjoint_in_reverse
”,
“conjoint_out
”,
“conjoint_out_reverse
”,
“conjoint_atop
”,
“conjoint_atop_reverse
”,
“conjoint_xor
”,
“multiply
”,
“screen
”,
“overlay
”,
“darken
”,
“lighten
”,
“color_dodge
”,
“color_burn
”,
“hard_light
”,
“soft_light
”,
“difference
”,
“exclusion
”,
“hsl_hue
”,
“hsl_saturation
”,
“hsl_color
”, or
“hsl_luminosity
”.
The last fifteen compositing operators are not specified in the RENDER extension, but are defined by the XCB library, and these definitions are available, as is. Since SXG uses the display server to execute all drawing instructions, support for each compositing operator depends on the display server.
repeat
<render id="pic1"> <!-- --> <repeat>normal</repeat> <!-- --> </render>
The
repeat
element sets the picture's
repeat
attribute.
The value must be
“none”,
“normal”,
“pad”,
or
“reflect”.
clip
<render id="pic1"> <!-- --> <clip> <pixmap>pixmap1</pixmap> <clipped> <fill> <!-- --> </fill> </clipped> </clip> <clip> <rectangle> <x>0</x> <!-- optional --> <y>0</y> <width>10</width> <height><10</height> </rectangle> <rectangle> <x>10</x> <y>10</y> <width>10</width> <height><10</height> </rectangle> <clipped> <fill> <!-- --> </fill> </clipped> </clip> <!-- --> </render>
The
clip
element sets the picture's
clip area in one of two different ways:
Using the id label of a
pixmap
that serves as a clipping mask.
This pixmap
must be declared with a
mask
element.
This option sets the picture object's
clip-mask
attribute directly.
Using a list of rectangles.
Each rectangle's coordinates get scaled according to the
pixture's
size
.
This option uses the SetPictureClipRectangles
command to set the picture object's
clip-mask
attribute.
The optional x
and
y
elements set the
“clip-x-origin”, and
“clip-y-origin” attributes values.
The coordinates get scaled according
to the picture's
size
.
If not specified, they default to actual (0, 0) coordinates.
The clip
must have exactly one
clipped
inner widget, which
contains a list of any widget that can appear in a
render
, except for another
clip
.
The elements in clipped
get executed
with the clip mask in effect, after which point the clip mask
is removed.
fill
<render id="pic1"> <!-- --> <fill> <op>over</op> <!-- optional, defaults to src --> <r>1</r> <g>1</g> <rectangle> <x>0</x> <y>0</y> <width>10</width> <height><10</height> </rectangle> <rectangle> <x>10</x> <y>10</y> <width>10</width> <height><10</height> </rectangle> </fill> <!-- --> </render>
The
fill
element executes a
FillRectangles
render command.
Its
r
,
g
,
b
, and
a
elements specify the value
of the red, green, blue, and alpha channels, respectively.
Each value ranges between 0 (minimum) and
1 (maximum).
r
,
g
, and
b
defaults to 0, minimum intensity.
a
defaults to 1, maximum intensity.
Alternatively, a
predefined theme color
can also be specified.
The optional
op
elements defaults to src
,
Each rectangle's coordinates get scaled according to the
pixture's
size
.
composite
<render id="pic1"> <!-- --> <composite> <op>over</op> <x>0</x> <!-- optional --> <y>0</y> <width>10</width> <height>10</height> <src> <picture>yellow</picture> <x>0</x> <!-- optional --> <y>0</y> </src> <mask> <!-- optional --> <pixmap>pixmap1</pixmap> <x>0</x> <!-- optional --> <y>0</y> </mask> </composite> <!-- --> <composite> <op>over</op> <x>5</x> <y>5</y> <srcsize /> <halign>centered</halign> <valign>middle</valign> <src> <picture>prompt</picture> </src> </composite> <!-- --> </render>
The
composite
element executes a
Composite
render command. The
Composite
's
dst
picture is the
render
element that contains
the
composite
command.
x
,
y
,
width
, and
height
specify the
dst-x
,
dst-y
,
width
and
height
parameters.
A srcsize
is an alternative to
width
and
height
, this uses the source picture's
width and height, instead.
The optional
halign
and
valign
elements determine how
x
,
y
values are interpreted.
halign
may be
left
(default),
centered
, or
right
.
valign
may be
top
(default),
middle
, or
or bottom
.
op
specifies the compositing operator.
src
specifies the
src
picture's label id, and
the
src-x
and
src-y
parameters.
The optional
mask
gives the ID of the pixmap
for the mask
parameter (the RENDER extension
specifies this
as a picture object, and SXG provides a picture object for the
given pixmap); together with
the
mask-x
and
mask-y
parameters.
All coordinates get scaled according
to their respective widget's
size
.
If not specified, they default to actual (0, 0) coordinates.
Both the destination picture, the source picture, and the optional
masking pixmap if specified, should have the same
size
setting.
triangles
<render id="pic1"> <!-- --> <triangles> <op>over</op> <!-- optional --> <mask>pixmap1</mask> <!-- optional --> <x>0</x> <!-- optional --> <y>0</y> <!-- optional --> <src>yellow</src> <triangle> <p1> <x>0</x> <y>0</y> </p1> <p2> <x>10</x> <y>0</y> </p2> <p3> <x>0</x> <y>10</y> </p3> </triangle> <triangle> <p1> <x>10</x> <y>0</y> </p1> <p2> <x>20</x> <y>0</y> </p2> <p3> <x>20</x> <y>10</y> </p3> </triangle> </triangles> <!-- --> </render>
The
triangles
element executes a
Triangles
render command. The optional
op
specifies the compositing operator, and defaults to
src
.
The optional
mask
gives the ID of the pixmap
for the mask
parameter (the RENDER extension
specifies this
as a picture object, and SXG provides a picture object for the
given pixmap).
The optional
x
and
y
set
Triangles
'
src-x
and
src-y
parameters.
The coordinates get scaled according
to the picture's
size
.
If not specified, they default to actual (0, 0) coordinates.
The src
element is the id label of
a picture that sets the
src
parameter.
The
triangle
elements define each triangle's
three corners.
All coordinates get scaled according to the
pixture's
size
.
tristrip
and trifan
<render id="pic1"> <!-- --> <tristrip> <op>over</op> <!-- optional --> <mask>pixmap1</mask> <!-- optional --> <x>0</x> <!-- optional --> <y>0</y> <!-- optional --> <src>yellow</src> <point> <x>0</x> <y>0</y> </point> <point> <x>10</x> <y>0</y> </point> <point> <x>10</x> <y>10</y> </point> <point> <x>20</x> <y>10</y> </point> </tristrip> <trifan> <op>over</op> <!-- optional --> <mask>pixmap1</mask> <!-- optional --> <x>0</x> <!-- optional --> <y>0</y> <!-- optional --> <src>yellow</src> <point> <x>0</x> <y>0</y> </point> <point> <x>10</x> <y>0</y> </point> <point> <x>10</x> <y>10</y> </point> <point> <x>0</x> <y>10</y> </point> </trifan> <!-- --> </render>
These elements execute the
TriStrip
or the
TriFan
render command.
The optional
op
specifies the compositing operator, and defaults to
src
.
The optional
mask
gives the ID of the pixmap
for the mask
parameter (the RENDER extension
specifies this
as a picture object, and SXG provides a picture object for the
given pixmap).
The optional
x
and
y
parameters set
src-x
and
src-y
parameters.
The coordinates get scaled according
to the picture's
size
.
If not specified, they default to actual (0, 0) coordinates.
The src
element is the id label of
a picture that sets the
src
parameter.
A list of point
elements provides
the coordinates for the points
command parameter.
All coordinates get scaled according to the
pixture's
size
.