2358 lines
52 KiB
Plaintext
2358 lines
52 KiB
Plaintext
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
|
|
.\"
|
|
.\" Permission is hereby granted, free of charge, to any person obtaining
|
|
.\" a copy of this software and associated documentation files (the
|
|
.\" "Software"), to deal in the Software without restriction, including
|
|
.\" without limitation the rights to use, copy, modify, merge, publish,
|
|
.\" distribute, sublicense, and/or sell copies of the Software, and to
|
|
.\" permit persons to whom the Software is furnished to do so, subject to
|
|
.\" the following conditions:
|
|
.\"
|
|
.\" The above copyright notice and this permission notice shall be included
|
|
.\" in all copies or substantial portions of the Software.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
.\" OTHER DEALINGS IN THE SOFTWARE.
|
|
.\"
|
|
.\" Except as contained in this notice, the name of the X Consortium shall
|
|
.\" not be used in advertising or otherwise to promote the sale, use or
|
|
.\" other dealings in this Software without prior written authorization
|
|
.\" from the X Consortium.
|
|
.\"
|
|
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
|
|
.\" Digital Equipment Corporation
|
|
.\"
|
|
.\" Portions Copyright \(co 1990, 1991 by
|
|
.\" Tektronix, Inc.
|
|
.\"
|
|
.\" Permission to use, copy, modify and distribute this documentation for
|
|
.\" any purpose and without fee is hereby granted, provided that the above
|
|
.\" copyright notice appears in all copies and that both that copyright notice
|
|
.\" and this permission notice appear in all copies, and that the names of
|
|
.\" Digital and Tektronix not be used in in advertising or publicity pertaining
|
|
.\" to this documentation without specific, written prior permission.
|
|
.\" Digital and Tektronix makes no representations about the suitability
|
|
.\" of this documentation for any purpose.
|
|
.\" It is provided ``as is'' without express or implied warranty.
|
|
.\"
|
|
\&
|
|
.sp 1
|
|
.ce 3
|
|
\s+1\fBChapter 7\fP\s-1
|
|
|
|
\s+1\fBGraphics Context Functions\fP\s-1
|
|
.sp 2
|
|
.nr H1 7
|
|
.nr H2 0
|
|
.nr H3 0
|
|
.nr H4 0
|
|
.nr H5 0
|
|
.na
|
|
.LP
|
|
.XS
|
|
Chapter 7: Graphics Context Functions
|
|
.XE
|
|
A number of resources are used when performing graphics operations in X.
|
|
Most information about performing graphics (for example, foreground
|
|
color, background color, line style, and so on) is stored in
|
|
resources called graphics contexts (GCs).
|
|
.IN "Graphics context"
|
|
Most graphics operations (see chapter 8) take a
|
|
GC as an argument.
|
|
Although in theory the X protocol permits sharing of GCs between applications,
|
|
it is expected that applications will use their own
|
|
GCs when performing operations.
|
|
Sharing of GCs is highly discouraged because the library may cache GC state.
|
|
.LP
|
|
Graphics operations can be performed to either windows or pixmaps,
|
|
which collectively are called drawables.
|
|
.IN "Root"
|
|
Each drawable exists on a single screen.
|
|
A GC is created for a specific screen and drawable depth
|
|
and can only be used with drawables of matching
|
|
screen and depth.
|
|
.LP
|
|
This chapter discusses how to:
|
|
.IP \(bu 5
|
|
Manipulate graphics context/state
|
|
.IP \(bu 5
|
|
Use graphics context convenience functions
|
|
.NH 2
|
|
Manipulating Graphics Context/State
|
|
.XS
|
|
\*(SN Manipulating Graphics Context/State
|
|
.XE
|
|
.LP
|
|
Most attributes of graphics operations are stored in GCs.
|
|
These include line width, line style, plane mask, foreground, background,
|
|
tile, stipple, clipping region, end style, join style, and so on.
|
|
Graphics operations (for example, drawing lines) use these values
|
|
to determine the actual drawing operation.
|
|
Extensions to X may add additional components to GCs.
|
|
The contents of a GC are private to Xlib.
|
|
.LP
|
|
Xlib implements a write-back cache for all elements of a GC that are not
|
|
resource IDs to allow Xlib to implement the transparent coalescing of changes
|
|
to GCs.
|
|
For example,
|
|
a call to
|
|
.PN XSetForeground
|
|
of a GC followed by a call to
|
|
.PN XSetLineAttributes
|
|
results in only a single-change GC protocol request to the server.
|
|
GCs are neither expected nor encouraged to be shared between client
|
|
applications, so this write-back caching should present no problems.
|
|
Applications cannot share GCs without external synchronization.
|
|
Therefore,
|
|
sharing GCs between applications is highly discouraged.
|
|
.LP
|
|
To set an attribute of a GC,
|
|
set the appropriate member of the
|
|
.PN XGCValues
|
|
structure and OR in the corresponding value bitmask in your subsequent calls to
|
|
.PN XCreateGC .
|
|
The symbols for the value mask bits and the
|
|
.PN XGCValues
|
|
structure are:
|
|
.sM
|
|
.LP
|
|
/* GC attribute value mask bits */
|
|
.TS
|
|
lw(.5i) lw(2.5i) lw(.75i).
|
|
#define\
|
|
T{
|
|
.PN GCFunction
|
|
T} T{
|
|
(1L<<0)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCPlaneMask
|
|
T} T{
|
|
(1L<<1)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCForeground
|
|
T} T{
|
|
(1L<<2)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCBackground
|
|
T} T{
|
|
(1L<<3)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCLineWidth
|
|
T} T{
|
|
(1L<<4)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCLineStyle
|
|
T} T{
|
|
(1L<<5)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCCapStyle
|
|
T} T{
|
|
(1L<<6)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCJoinStyle
|
|
T} T{
|
|
(1L<<7)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCFillStyle
|
|
T} T{
|
|
(1L<<8)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCFillRule
|
|
T} T{
|
|
(1L<<9)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCTile
|
|
T} T{
|
|
(1L<<10)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCStipple
|
|
T} T{
|
|
(1L<<11)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCTileStipXOrigin
|
|
T} T{
|
|
(1L<<12)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCTileStipYOrigin
|
|
T} T{
|
|
(1L<<13)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCFont
|
|
T} T{
|
|
(1L<<14)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCSubwindowMode
|
|
T} T{
|
|
(1L<<15)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCGraphicsExposures
|
|
T} T{
|
|
(1L<<16)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCClipXOrigin
|
|
T} T{
|
|
(1L<<17)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCClipYOrigin
|
|
T} T{
|
|
(1L<<18)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCClipMask
|
|
T} T{
|
|
(1L<<19)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCDashOffset
|
|
T} T{
|
|
(1L<<20)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCDashList
|
|
T} T{
|
|
(1L<<21)
|
|
T}
|
|
#define\
|
|
T{
|
|
.PN GCArcMode
|
|
T} T{
|
|
(1L<<22)
|
|
T}
|
|
.TE
|
|
.IN "XGCValues" "" "@DEF@"
|
|
.Ds 0
|
|
.TA .5i 3i
|
|
.ta .5i 3i
|
|
/* Values */
|
|
|
|
typedef struct {
|
|
int function; /* logical operation */
|
|
unsigned long plane_mask; /* plane mask */
|
|
unsigned long foreground; /* foreground pixel */
|
|
unsigned long background; /* background pixel */
|
|
int line_width; /* line width (in pixels) */
|
|
int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
|
|
int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */
|
|
int join_style; /* JoinMiter, JoinRound, JoinBevel */
|
|
int fill_style; /* FillSolid, FillTiled, FillStippled FillOpaqueStippled*/
|
|
int fill_rule; /* EvenOddRule, WindingRule */
|
|
int arc_mode; /* ArcChord, ArcPieSlice */
|
|
Pixmap tile; /* tile pixmap for tiling operations */
|
|
Pixmap stipple; /* stipple 1 plane pixmap for stippling */
|
|
int ts_x_origin; /* offset for tile or stipple operations */
|
|
int ts_y_origin;
|
|
Font font; /* default text font for text operations */
|
|
int subwindow_mode; /* ClipByChildren, IncludeInferiors */
|
|
Bool graphics_exposures; /* boolean, should exposures be generated */
|
|
int clip_x_origin; /* origin for clipping */
|
|
int clip_y_origin;
|
|
Pixmap clip_mask; /* bitmap clipping; other calls for rects */
|
|
int dash_offset; /* patterned/dashed line information */
|
|
char dashes;
|
|
} XGCValues;
|
|
.De
|
|
.LP
|
|
.eM
|
|
The default GC values are:
|
|
.TS H
|
|
l l.
|
|
_
|
|
.sp 6p
|
|
.B
|
|
Component Default
|
|
.sp 6p
|
|
_
|
|
.sp 6p
|
|
.TH
|
|
.R
|
|
T{
|
|
function
|
|
T} T{
|
|
.PN GXcopy
|
|
T}
|
|
plane_mask All ones
|
|
foreground 0
|
|
background 1
|
|
line_width 0
|
|
T{
|
|
line_style
|
|
T} T{
|
|
.PN LineSolid
|
|
T}
|
|
T{
|
|
cap_style
|
|
T} T{
|
|
.PN CapButt
|
|
T}
|
|
T{
|
|
join_style
|
|
T} T{
|
|
.PN JoinMiter
|
|
T}
|
|
T{
|
|
fill_style
|
|
T} T{
|
|
.PN FillSolid
|
|
T}
|
|
T{
|
|
fill_rule
|
|
T} T{
|
|
.PN EvenOddRule
|
|
T}
|
|
T{
|
|
arc_mode
|
|
T} T{
|
|
.PN ArcPieSlice
|
|
T}
|
|
tile Pixmap of unspecified size filled with foreground pixel
|
|
(that is, client specified pixel if any, else 0)
|
|
(subsequent changes to foreground do not affect this pixmap)
|
|
stipple Pixmap of unspecified size filled with ones
|
|
ts_x_origin 0
|
|
ts_y_origin 0
|
|
font <implementation dependent>
|
|
T{
|
|
subwindow_mode
|
|
T} T{
|
|
.PN ClipByChildren
|
|
T}
|
|
T{
|
|
graphics_exposures
|
|
T} T{
|
|
.PN True
|
|
T}
|
|
clip_x_origin 0
|
|
clip_y_origin 0
|
|
T{
|
|
clip_mask
|
|
T} T{
|
|
.PN None
|
|
T}
|
|
dash_offset 0
|
|
dashes 4 (that is, the list [4, 4])
|
|
.sp 6p
|
|
_
|
|
.TE
|
|
.LP
|
|
Note that foreground and background are not set to any values likely
|
|
to be useful in a window.
|
|
.LP
|
|
.IN "Display Functions" "" "@DEF@"
|
|
.IN "Source" "" "@DEF@"
|
|
.IN "Destination" "" "@DEF@"
|
|
The function attributes of a GC are used when you update a section of
|
|
a drawable (the destination) with bits from somewhere else (the source).
|
|
The function in a GC defines how the new destination bits are to be
|
|
computed from the source bits and the old destination bits.
|
|
.PN GXcopy
|
|
is typically the most useful because it will work on a color display,
|
|
but special applications may use other functions,
|
|
particularly in concert with particular planes of a color display.
|
|
The 16 GC functions, defined in
|
|
.hN X11/X.h ,
|
|
are:
|
|
.\" are listed in Table 5-1 along with the
|
|
.\"the associated hexadecimal code
|
|
.\" and operation.
|
|
.\".CP T 1
|
|
.\"Display Functions
|
|
.TS H
|
|
lw(1.5i) cw(.5i) lw(2i).
|
|
_
|
|
.sp 6p
|
|
.B
|
|
Function Name Value Operation
|
|
.sp 6p
|
|
_
|
|
.sp 6p
|
|
.TH
|
|
T{
|
|
.PN GXclear
|
|
T} T{
|
|
0x0
|
|
T} T{
|
|
0
|
|
T}
|
|
T{
|
|
.PN GXand
|
|
T} T{
|
|
0x1
|
|
T} T{
|
|
src AND dst
|
|
T}
|
|
T{
|
|
.PN GXandReverse
|
|
T} T{
|
|
0x2
|
|
T} T{
|
|
src AND NOT dst
|
|
T}
|
|
T{
|
|
.PN GXcopy
|
|
T} T{
|
|
0x3
|
|
T} T{
|
|
src
|
|
T}
|
|
T{
|
|
.PN GXandInverted
|
|
T} T{
|
|
0x4
|
|
T} T{
|
|
(NOT src) AND dst
|
|
T}
|
|
T{
|
|
.PN GXnoop
|
|
T} T{
|
|
0x5
|
|
T} T{
|
|
dst
|
|
T}
|
|
T{
|
|
.PN GXxor
|
|
T} T{
|
|
0x6
|
|
T} T{
|
|
src XOR dst
|
|
T}
|
|
T{
|
|
.PN GXor
|
|
T} T{
|
|
0x7
|
|
T} T{
|
|
src OR dst
|
|
T}
|
|
T{
|
|
.PN GXnor
|
|
T} T{
|
|
0x8
|
|
T} T{
|
|
(NOT src) AND (NOT dst)
|
|
T}
|
|
T{
|
|
.PN GXequiv
|
|
T} T{
|
|
0x9
|
|
T} T{
|
|
(NOT src) XOR dst
|
|
T}
|
|
T{
|
|
.PN GXinvert
|
|
T} T{
|
|
0xa
|
|
T} T{
|
|
NOT dst
|
|
T}
|
|
T{
|
|
.PN GXorReverse
|
|
T} T{
|
|
0xb
|
|
T} T{
|
|
src OR (NOT dst)
|
|
T}
|
|
T{
|
|
.PN GXcopyInverted
|
|
T} T{
|
|
0xc
|
|
T} T{
|
|
NOT src
|
|
T}
|
|
T{
|
|
.PN GXorInverted
|
|
T} T{
|
|
0xd
|
|
T} T{
|
|
(NOT src) OR dst
|
|
T}
|
|
T{
|
|
.PN GXnand
|
|
T} T{
|
|
0xe
|
|
T} T{
|
|
(NOT src) OR (NOT dst)
|
|
T}
|
|
T{
|
|
.PN GXset
|
|
T} T{
|
|
0xf
|
|
T} T{
|
|
1
|
|
T}
|
|
.sp 6p
|
|
_
|
|
.TE
|
|
.LP
|
|
Many graphics operations depend on either pixel values or planes in a GC.
|
|
.IN "Pixel value"
|
|
The planes attribute is of type long, and it specifies which planes of the
|
|
destination are to be modified, one bit per plane.
|
|
.IN "Plane" "mask"
|
|
A monochrome display has only one plane and
|
|
will be the least significant bit of the word.
|
|
As planes are added to the display hardware, they will occupy more
|
|
significant bits in the plane mask.
|
|
.LP
|
|
In graphics operations, given a source and destination pixel,
|
|
the result is computed bitwise on corresponding bits of the pixels.
|
|
That is, a Boolean operation is performed in each bit plane.
|
|
The plane_mask restricts the operation to a subset of planes.
|
|
A macro constant
|
|
.PN AllPlanes
|
|
can be used to refer to all planes of the screen simultaneously.
|
|
The result is computed by the following:
|
|
.LP
|
|
.Ds
|
|
((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
|
|
.De
|
|
.LP
|
|
Range checking is not performed on the values for foreground,
|
|
background, or plane_mask.
|
|
They are simply truncated to the appropriate
|
|
number of bits.
|
|
The line-width is measured in pixels and either can be greater than or equal to
|
|
one (wide line) or can be the special value zero (thin line).
|
|
.LP
|
|
Wide lines are drawn centered on the path described by the graphics request.
|
|
Unless otherwise specified by the join-style or cap-style,
|
|
the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and
|
|
width w is a rectangle with vertices at the following real coordinates:
|
|
.LP
|
|
.Ds
|
|
.TA .5i 2.5i
|
|
.ta .5i 2.5i
|
|
[x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)],
|
|
[x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)]
|
|
.De
|
|
.LP
|
|
Here sn is the sine of the angle of the line,
|
|
and cs is the cosine of the angle of the line.
|
|
A pixel is part of the line and so is drawn
|
|
if the center of the pixel is fully inside the bounding box
|
|
(which is viewed as having infinitely thin edges).
|
|
If the center of the pixel is exactly on the bounding box,
|
|
it is part of the line if and only if the interior is immediately to its right
|
|
(x increasing direction).
|
|
Pixels with centers on a horizontal edge are a special case and are part of
|
|
the line if and only if the interior or the boundary is immediately below
|
|
(y increasing direction) and the interior or the boundary is immediately
|
|
to the right (x increasing direction).
|
|
.LP
|
|
Thin lines (zero line-width) are one-pixel-wide lines drawn using an
|
|
unspecified, device-dependent algorithm.
|
|
There are only two constraints on this algorithm.
|
|
.IP 1. 5
|
|
If a line is drawn unclipped from [x1,y1] to [x2,y2] and
|
|
if another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy],
|
|
a point [x,y] is touched by drawing the first line
|
|
if and only if the point [x+dx,y+dy] is touched by drawing the second line.
|
|
.IP 2. 5
|
|
The effective set of points comprising a line cannot be affected by clipping.
|
|
That is, a point is touched in a clipped line if and only if the point
|
|
lies inside the clipping region and the point would be touched
|
|
by the line when drawn unclipped.
|
|
.LP
|
|
A wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels
|
|
as a wide line drawn from [x2,y2] to [x1,y1], not counting cap-style
|
|
and join-style.
|
|
It is recommended that this property be true for thin lines,
|
|
but this is not required.
|
|
A line-width of zero may differ from a line-width of one in which pixels are
|
|
drawn.
|
|
This permits the use of many manufacturers' line drawing hardware,
|
|
which may run many times faster than the more precisely specified
|
|
wide lines.
|
|
.LP
|
|
In general,
|
|
drawing a thin line will be faster than drawing a wide line of width one.
|
|
However, because of their different drawing algorithms,
|
|
thin lines may not mix well aesthetically with wide lines.
|
|
If it is desirable to obtain precise and uniform results across all displays,
|
|
a client should always use a line-width of one rather than a line-width of zero.
|
|
.LP
|
|
The line-style defines which sections of a line are drawn:
|
|
.TS
|
|
lw(1.3i) lw(4.5i).
|
|
T{
|
|
.PN LineSolid
|
|
T} T{
|
|
The full path of the line is drawn.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN LineDoubleDash
|
|
T} T{
|
|
The full path of the line is drawn,
|
|
but the even dashes are filled differently
|
|
from the odd dashes (see fill-style) with
|
|
.PN CapButt
|
|
style used where even and odd dashes meet.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN LineOnOffDash
|
|
T} T{
|
|
Only the even dashes are drawn,
|
|
and cap-style applies to
|
|
all internal ends of the individual dashes,
|
|
except
|
|
.PN CapNotLast
|
|
is treated as
|
|
.PN CapButt .
|
|
T}
|
|
.TE
|
|
.LP
|
|
The cap-style defines how the endpoints of a path are drawn:
|
|
.IN "Graphics context" "path"
|
|
.TS
|
|
lw(1.3i) lw(4.5i).
|
|
T{
|
|
.PN CapNotLast
|
|
T} T{
|
|
This is equivalent to
|
|
.PN CapButt
|
|
except that for a line-width of zero the final endpoint is not drawn.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapButt
|
|
T} T{
|
|
The line is square at the endpoint (perpendicular to the slope of the line)
|
|
with no projection beyond.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapRound
|
|
T} T{
|
|
The line has a circular arc with the diameter equal to the line-width,
|
|
centered on the endpoint.
|
|
(This is equivalent to
|
|
.PN CapButt
|
|
for line-width of zero).
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapProjecting
|
|
T} T{
|
|
The line is square at the end, but the path continues beyond the endpoint
|
|
for a distance equal to half the line-width.
|
|
(This is equivalent to
|
|
.PN CapButt
|
|
for line-width of zero).
|
|
T}
|
|
.TE
|
|
.LP
|
|
The join-style defines how corners are drawn for wide lines:
|
|
.TS
|
|
lw(1.3i) lw(4.5i).
|
|
T{
|
|
.PN JoinMiter
|
|
T} T{
|
|
The outer edges of two lines extend to meet at an angle.
|
|
However, if the angle is less than 11 degrees,
|
|
then a
|
|
.PN JoinBevel
|
|
join-style is used instead.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN JoinRound
|
|
T} T{
|
|
The corner is a circular arc with the diameter equal to the line-width,
|
|
centered on the joinpoint.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN JoinBevel
|
|
T} T{
|
|
The corner has
|
|
.PN CapButt
|
|
endpoint styles with the triangular notch filled.
|
|
T}
|
|
.TE
|
|
.LP
|
|
For a line with coincident endpoints (x1=x2, y1=y2),
|
|
when the cap-style is applied to both endpoints,
|
|
the semantics depends on the line-width and the cap-style:
|
|
.TS
|
|
lw(1.3i) lw(.5i) lw(4i).
|
|
T{
|
|
.PN CapNotLast
|
|
T} T{
|
|
thin
|
|
T} T{
|
|
The results are device dependent,
|
|
but the desired effect is that nothing is drawn.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapButt
|
|
T} T{
|
|
thin
|
|
T} T{
|
|
The results are device dependent,
|
|
but the desired effect is that a single pixel is drawn.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapRound
|
|
T} T{
|
|
thin
|
|
T} T{
|
|
The results are the same as for
|
|
.PN CapButt /thin.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapProjecting
|
|
T} T{
|
|
thin
|
|
T} T{
|
|
The results are the same as for
|
|
.PN CapButt /thin.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapButt
|
|
T} T{
|
|
wide
|
|
T} T{
|
|
Nothing is drawn.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapRound
|
|
T} T{
|
|
wide
|
|
T} T{
|
|
The closed path is a circle, centered at the endpoint, and
|
|
with the diameter equal to the line-width.
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN CapProjecting
|
|
T} T{
|
|
wide
|
|
T} T{
|
|
The closed path is a square, aligned with the coordinate axes, centered at the
|
|
endpoint, and with the sides equal to the line-width.
|
|
T}
|
|
.TE
|
|
.LP
|
|
For a line with coincident endpoints (x1=x2, y1=y2),
|
|
when the join-style is applied at one or both endpoints,
|
|
the effect is as if the line was removed from the overall path.
|
|
However, if the total path consists of or is reduced to a single point joined
|
|
with itself, the effect is the same as when the cap-style is applied at both
|
|
endpoints.
|
|
.LP
|
|
The tile/stipple represents an infinite two-dimensional plane,
|
|
with the tile/stipple replicated in all dimensions.
|
|
When that plane is superimposed on the drawable
|
|
for use in a graphics operation, the upper-left corner
|
|
of some instance of the tile/stipple is at the coordinates within
|
|
the drawable specified by the tile/stipple origin.
|
|
The tile/stipple and clip origins are interpreted relative to the
|
|
origin of whatever destination drawable is specified in a graphics
|
|
request.
|
|
The tile pixmap must have the same root and depth as the GC,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
The stipple pixmap must have depth one and must have the same root as the
|
|
GC, or a
|
|
.PN BadMatch
|
|
error results.
|
|
For stipple operations where the fill-style is
|
|
.PN FillStippled
|
|
but not
|
|
.PN FillOpaqueStippled ,
|
|
the stipple pattern is tiled in a
|
|
single plane and acts as an additional clip mask to be ANDed with the clip-mask.
|
|
Although some sizes may be faster to use than others,
|
|
any size pixmap can be used for tiling or stippling.
|
|
.LP
|
|
The fill-style defines the contents of the source for line, text, and
|
|
fill requests.
|
|
For all text and fill requests (for example,
|
|
.PN XDrawText ,
|
|
.PN XDrawText16 ,
|
|
.PN XFillRectangle ,
|
|
.PN XFillPolygon ,
|
|
and
|
|
.PN XFillArc );
|
|
for line requests
|
|
with line-style
|
|
.PN LineSolid
|
|
(for example,
|
|
.PN XDrawLine ,
|
|
.PN XDrawSegments ,
|
|
.PN XDrawRectangle ,
|
|
.PN XDrawArc );
|
|
and for the even dashes for line requests with line-style
|
|
.PN LineOnOffDash
|
|
or
|
|
.PN LineDoubleDash ,
|
|
the following apply:
|
|
.TS
|
|
lw(1.8i) lw(4i).
|
|
T{
|
|
.PN FillSolid
|
|
T} T{
|
|
Foreground
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillTiled
|
|
T} T{
|
|
Tile
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillOpaqueStippled
|
|
T} T{
|
|
A tile with the same width and height as stipple,
|
|
but with background everywhere stipple has a zero
|
|
and with foreground everywhere stipple has a one
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillStippled
|
|
T} T{
|
|
Foreground masked by stipple
|
|
T}
|
|
.TE
|
|
.LP
|
|
When drawing lines with line-style
|
|
.PN LineDoubleDash ,
|
|
the odd dashes are controlled by the fill-style in the following manner:
|
|
.TS
|
|
lw(1.8i) lw(4i).
|
|
T{
|
|
.PN FillSolid
|
|
T} T{
|
|
Background
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillTiled
|
|
T} T{
|
|
Same as for even dashes
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillOpaqueStippled
|
|
T} T{
|
|
Same as for even dashes
|
|
T}
|
|
.sp 6p
|
|
T{
|
|
.PN FillStippled
|
|
T} T{
|
|
Background masked by stipple
|
|
T}
|
|
.TE
|
|
.LP
|
|
Storing a pixmap in a GC might or might not result in a copy
|
|
being made.
|
|
If the pixmap is later used as the destination for a graphics request,
|
|
the change might or might not be reflected in the GC.
|
|
If the pixmap is used simultaneously in a graphics request both as
|
|
a destination and as a tile or stipple,
|
|
the results are undefined.
|
|
.LP
|
|
For optimum performance,
|
|
you should draw as much as possible with the same GC
|
|
(without changing its components).
|
|
The costs of changing GC components relative to using different GCs
|
|
depend on the display hardware and the server implementation.
|
|
It is quite likely that some amount of GC information will be
|
|
cached in display hardware and that such hardware can only cache a small number
|
|
of GCs.
|
|
.LP
|
|
The dashes value is actually a simplified form of the
|
|
more general patterns that can be set with
|
|
.PN XSetDashes .
|
|
Specifying a
|
|
value of N is equivalent to specifying the two-element list [N, N] in
|
|
.PN XSetDashes .
|
|
The value must be nonzero,
|
|
or a
|
|
.PN BadValue
|
|
error results.
|
|
.LP
|
|
The clip-mask restricts writes to the destination drawable.
|
|
If the clip-mask is set to a pixmap,
|
|
it must have depth one and have the same root as the GC,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
If clip-mask is set to
|
|
.PN None ,
|
|
the pixels are always drawn regardless of the clip origin.
|
|
The clip-mask also can be set by calling the
|
|
.PN XSetClipRectangles
|
|
or
|
|
.PN XSetRegion
|
|
functions.
|
|
Only pixels where the clip-mask has a bit set to 1 are drawn.
|
|
Pixels are not drawn outside the area covered by the clip-mask
|
|
or where the clip-mask has a bit set to 0.
|
|
The clip-mask affects all graphics requests.
|
|
The clip-mask does not clip sources.
|
|
The clip-mask origin is interpreted relative to the origin of whatever
|
|
destination drawable is specified in a graphics request.
|
|
.LP
|
|
You can set the subwindow-mode to
|
|
.PN ClipByChildren
|
|
or
|
|
.PN IncludeInferiors .
|
|
For
|
|
.PN ClipByChildren ,
|
|
both source and destination windows are
|
|
additionally clipped by all viewable
|
|
.PN InputOutput
|
|
children.
|
|
For
|
|
.PN IncludeInferiors ,
|
|
neither source nor destination window is clipped by inferiors.
|
|
This will result in including subwindow contents in the source
|
|
and drawing through subwindow boundaries of the destination.
|
|
The use of
|
|
.PN IncludeInferiors
|
|
on a window of one depth with mapped
|
|
inferiors of differing depth is not illegal, but the semantics are
|
|
undefined by the core protocol.
|
|
.LP
|
|
The fill-rule defines what pixels are inside (drawn) for
|
|
paths given in
|
|
.PN XFillPolygon
|
|
requests and can be set to
|
|
.PN EvenOddRule
|
|
or
|
|
.PN WindingRule .
|
|
For
|
|
.PN EvenOddRule ,
|
|
a point is inside if
|
|
an infinite ray with the point as origin crosses the path an odd number
|
|
of times.
|
|
For
|
|
.PN WindingRule ,
|
|
a point is inside if an infinite ray with the
|
|
point as origin crosses an unequal number of clockwise and
|
|
counterclockwise directed path segments.
|
|
A clockwise directed path segment is one that crosses the ray from left to
|
|
right as observed from the point.
|
|
A counterclockwise segment is one that crosses the ray from right to left
|
|
as observed from the point.
|
|
The case where a directed line segment is coincident with the ray is
|
|
uninteresting because you can simply choose a different ray that is not
|
|
coincident with a segment.
|
|
.LP
|
|
For both
|
|
.PN EvenOddRule
|
|
and
|
|
.PN WindingRule ,
|
|
a point is infinitely small,
|
|
and the path is an infinitely thin line.
|
|
A pixel is inside if the center point of the pixel is inside
|
|
and the center point is not on the boundary.
|
|
If the center point is on the boundary,
|
|
the pixel is inside if and only if the polygon interior is immediately to
|
|
its right (x increasing direction).
|
|
Pixels with centers on a horizontal edge are a special case
|
|
and are inside if and only if the polygon interior is immediately below
|
|
(y increasing direction).
|
|
.LP
|
|
The arc-mode controls filling in the
|
|
.PN XFillArcs
|
|
function and can be set to
|
|
.PN ArcPieSlice
|
|
or
|
|
.PN ArcChord .
|
|
For
|
|
.PN ArcPieSlice ,
|
|
the arcs are pie-slice filled.
|
|
For
|
|
.PN ArcChord ,
|
|
the arcs are chord filled.
|
|
.LP
|
|
The graphics-exposure flag controls
|
|
.PN GraphicsExpose
|
|
event generation
|
|
for
|
|
.PN XCopyArea
|
|
and
|
|
.PN XCopyPlane
|
|
requests (and any similar requests defined by extensions).
|
|
.LP
|
|
.sp
|
|
To create a new GC that is usable on a given screen with a
|
|
depth of drawable, use
|
|
.PN XCreateGC .
|
|
.IN "Graphics context" "initializing"
|
|
.IN "XCreateGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
GC XCreateGC\^(\^\fIdisplay\fP, \fId\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
Drawable \fId\fP\^;
|
|
.br
|
|
unsigned long \fIvaluemask\fP\^;
|
|
.br
|
|
XGCValues *\^\fIvalues\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fId\fP 1i
|
|
Specifies the drawable.
|
|
.ds Vm set using the information in the specified values structure
|
|
.IP \fIvaluemask\fP 1i
|
|
Specifies which components in the GC are to be \*(Vm.
|
|
This argument is the bitwise inclusive OR of zero or more of the valid
|
|
GC component mask bits.
|
|
.IP \fIvalues\fP 1i
|
|
Specifies any values as specified by the valuemask.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XCreateGC
|
|
function creates a graphics context and returns a GC.
|
|
The GC can be used with any destination drawable having the same root
|
|
and depth as the specified drawable.
|
|
Use with other drawables results in a
|
|
.PN BadMatch
|
|
error.
|
|
.LP
|
|
.PN XCreateGC
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadDrawable ,
|
|
.PN BadFont ,
|
|
.PN BadMatch ,
|
|
.PN BadPixmap ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To copy components from a source GC to a destination GC, use
|
|
.PN XCopyGC .
|
|
.IN "XCopyGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XCopyGC\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIvaluemask\fP\^, \fIdest\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIsrc\fP\^, \fIdest\fP\^;
|
|
.br
|
|
unsigned long \fIvaluemask\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIsrc\fP 1i
|
|
Specifies the components of the source GC.
|
|
.ds Vm copied to the destination GC
|
|
.IP \fIvaluemask\fP 1i
|
|
Specifies which components in the GC are to be \*(Vm.
|
|
This argument is the bitwise inclusive OR of zero or more of the valid
|
|
GC component mask bits.
|
|
.IP \fIdest\fP 1i
|
|
Specifies the destination GC.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XCopyGC
|
|
function copies the specified components from the source GC
|
|
to the destination GC.
|
|
The source and destination GCs must have the same root and depth,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
The valuemask specifies which component to copy, as for
|
|
.PN XCreateGC .
|
|
.LP
|
|
.PN XCopyGC
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadMatch
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To change the components in a given GC, use
|
|
.PN XChangeGC .
|
|
.IN "XChangeGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XChangeGC\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIvaluemask\fP\^;
|
|
.br
|
|
XGCValues *\^\fIvalues\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.ds Vm changed using information in the specified values structure
|
|
.IP \fIvaluemask\fP 1i
|
|
Specifies which components in the GC are to be \*(Vm.
|
|
This argument is the bitwise inclusive OR of zero or more of the valid
|
|
GC component mask bits.
|
|
.IP \fIvalues\fP 1i
|
|
Specifies any values as specified by the valuemask.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XChangeGC
|
|
function changes the components specified by valuemask for
|
|
the specified GC.
|
|
The values argument contains the values to be set.
|
|
The values and restrictions are the same as for
|
|
.PN XCreateGC .
|
|
Changing the clip-mask overrides any previous
|
|
.PN XSetClipRectangles
|
|
request on the context.
|
|
Changing the dash-offset or dash-list
|
|
overrides any previous
|
|
.PN XSetDashes
|
|
request on the context.
|
|
The order in which components are verified and altered is server dependent.
|
|
If an error is generated, a subset of the components may have been altered.
|
|
.LP
|
|
.PN XChangeGC
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadFont ,
|
|
.PN BadGC ,
|
|
.PN BadMatch ,
|
|
.PN BadPixmap ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To obtain components of a given GC, use
|
|
.PN XGetGCValues .
|
|
.IN "XGetGCValues" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
Status XGetGCValues\^(\^\fIdisplay\fP, \fIgc\fP, \fIvaluemask\fP, \
|
|
\fIvalues_return\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIvaluemask\fP\^;
|
|
.br
|
|
XGCValues *\fIvalues_return\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.ds Vm returned in the values_return argument
|
|
.IP \fIvaluemask\fP 1i
|
|
Specifies which components in the GC are to be \*(Vm.
|
|
This argument is the bitwise inclusive OR of zero or more of the valid
|
|
GC component mask bits.
|
|
.IP \fIvalues_return\fP 1i
|
|
Returns the GC values in the specified
|
|
.PN XGCValues
|
|
structure.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XGetGCValues
|
|
function returns the components specified by valuemask for the specified GC.
|
|
If the valuemask contains a valid set of GC mask bits
|
|
.Pn ( GCFunction ,
|
|
.PN GCPlaneMask ,
|
|
.PN GCForeground ,
|
|
.PN GCBackground ,
|
|
.PN GCLineWidth ,
|
|
.PN GCLineStyle ,
|
|
.PN GCCapStyle ,
|
|
.PN GCJoinStyle ,
|
|
.PN GCFillStyle ,
|
|
.PN GCFillRule ,
|
|
.PN GCTile ,
|
|
.PN GCStipple ,
|
|
.PN GCTileStipXOrigin ,
|
|
.PN GCTileStipYOrigin ,
|
|
.PN GCFont ,
|
|
.PN GCSubwindowMode ,
|
|
.PN GCGraphicsExposures ,
|
|
.PN GCClipXOrigin ,
|
|
.PN GCCLipYOrigin ,
|
|
.PN GCDashOffset ,
|
|
or
|
|
.PN GCArcMode )
|
|
and no error occurs,
|
|
.PN XGetGCValues
|
|
sets the requested components in values_return and returns a nonzero status.
|
|
Otherwise, it returns a zero status.
|
|
Note that the clip-mask and dash-list (represented by the
|
|
.PN GCClipMask
|
|
and
|
|
.PN GCDashList
|
|
bits, respectively, in the valuemask)
|
|
cannot be requested.
|
|
Also note that an invalid resource ID (with one or more of the three
|
|
most significant bits set to 1) will be returned for
|
|
.PN GCFont ,
|
|
.PN GCTile ,
|
|
and
|
|
.PN GCStipple
|
|
if the component has never been explicitly set by the client.
|
|
.LP
|
|
.sp
|
|
To free a given GC, use
|
|
.PN XFreeGC .
|
|
.IN "XFreeGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XFreeGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XFreeGC
|
|
function destroys the specified GC as well as all the associated storage.
|
|
.LP
|
|
.PN XFreeGC
|
|
can generate a
|
|
.PN BadGC
|
|
error.
|
|
.LP
|
|
.sp
|
|
To obtain the
|
|
.PN GContext
|
|
resource ID for a given GC, use
|
|
.PN XGContextFromGC .
|
|
.IN "XGContextFromGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
GContext XGContextFromGC\^(\^\fIgc\fP\^)
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.FN
|
|
.ds Gc for which you want the resource ID
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC \*(Gc.
|
|
.LP
|
|
.eM
|
|
.sp
|
|
Xlib usually defers sending changes to the components of a GC to the server
|
|
until a graphics function is actually called with that GC.
|
|
This permits batching of component changes into a single server request.
|
|
In some circumstances, however, it may be necessary for the client
|
|
to explicitly force sending the changes to the server.
|
|
An example might be when a protocol extension uses the GC indirectly,
|
|
in such a way that the extension interface cannot know what GC will be used.
|
|
To force sending GC component changes, use
|
|
.PN XFlushGC .
|
|
.IN "XFlushGC" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
void XFlushGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.LP
|
|
.eM
|
|
.NH 2
|
|
Using Graphics Context Convenience Routines
|
|
.XS
|
|
\*(SN Using Graphics Context Convenience Routines
|
|
.XE
|
|
.LP
|
|
This section discusses how to set the:
|
|
.IP \(bu 5
|
|
Foreground, background, plane mask, or function components
|
|
.IP \(bu 5
|
|
Line attributes and dashes components
|
|
.IP \(bu 5
|
|
Fill style and fill rule components
|
|
.IP \(bu 5
|
|
Fill tile and stipple components
|
|
.IP \(bu 5
|
|
Font component
|
|
.IP \(bu 5
|
|
Clip region component
|
|
.IP \(bu 5
|
|
Arc mode, subwindow mode, and graphics exposure components
|
|
.NH 3
|
|
Setting the Foreground, Background, Function, or Plane Mask
|
|
.XS
|
|
\*(SN Setting the Foreground, Background, Function, or Plane Mask
|
|
.XE
|
|
.LP
|
|
To set the foreground, background, plane mask, and function components
|
|
for a given GC, use
|
|
.PN XSetState .
|
|
.IN "XSetState" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetState\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^, \fIbackground\fP\^, \fIfunction\fP\^, \fIplane_mask\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIforeground\fP\^, \fIbackground\fP\^;
|
|
.br
|
|
int \fIfunction\fP\^;
|
|
.br
|
|
unsigned long \fIplane_mask\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIforeground\fP 1i
|
|
Specifies the foreground you want to set for the specified GC.
|
|
.IP \fIbackground\fP 1i
|
|
Specifies the background you want to set for the specified GC.
|
|
.IP \fIfunction\fP 1i
|
|
Specifies the function you want to set for the specified GC.
|
|
.IP \fIplane_mask\fP 1i
|
|
Specifies the plane mask.
|
|
.\" *** JIM: NEED MORE INFO FOR THIS. ***
|
|
.LP
|
|
.eM
|
|
.PN XSetState
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the foreground of a given GC, use
|
|
.PN XSetForeground .
|
|
.IN "XSetForeground" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetForeground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIforeground\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIforeground\fP 1i
|
|
Specifies the foreground you want to set for the specified GC.
|
|
.LP
|
|
.eM
|
|
.PN XSetForeground
|
|
can generate
|
|
.PN BadAlloc
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the background of a given GC, use
|
|
.PN XSetBackground .
|
|
.IN "XSetBackground" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetBackground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIbackground\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIbackground\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIbackground\fP 1i
|
|
Specifies the background you want to set for the specified GC.
|
|
.LP
|
|
.eM
|
|
.PN XSetBackground
|
|
can generate
|
|
.PN BadAlloc
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the display function in a given GC, use
|
|
.PN XSetFunction .
|
|
.IN "XSetFunction" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetFunction\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfunction\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIfunction\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIfunction\fP 1i
|
|
Specifies the function you want to set for the specified GC.
|
|
.LP
|
|
.eM
|
|
.PN XSetFunction
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the plane mask of a given GC, use
|
|
.PN XSetPlaneMask .
|
|
.IN "XSetPlaneMask" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetPlaneMask\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIplane_mask\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned long \fIplane_mask\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIplane_mask\fP 1i
|
|
Specifies the plane mask.
|
|
.\" *** JIM: NEED MORE INFO FOR THIS. ***
|
|
.LP
|
|
.eM
|
|
.PN XSetPlaneMask
|
|
can generate
|
|
.PN BadAlloc
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.NH 3
|
|
Setting the Line Attributes and Dashes
|
|
.XS
|
|
\*(SN Setting the Line Attributes and Dashes
|
|
.XE
|
|
.LP
|
|
To set the line drawing components of a given GC, use
|
|
.PN XSetLineAttributes .
|
|
.IN "XSetLineAttributes" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetLineAttributes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIline_width\fP\^, \fIline_style\fP\^, \fIcap_style\fP\^, \fIjoin_style\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
unsigned int \fIline_width\fP\^;
|
|
.br
|
|
int \fIline_style\fP\^;
|
|
.br
|
|
int \fIcap_style\fP\^;
|
|
.br
|
|
int \fIjoin_style\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIline_width\fP 1i
|
|
Specifies the line-width you want to set for the specified GC.
|
|
.IP \fIline_style\fP 1i
|
|
Specifies the line-style you want to set for the specified GC.
|
|
You can pass
|
|
.PN LineSolid ,
|
|
.PN LineOnOffDash ,
|
|
or
|
|
.PN LineDoubleDash .
|
|
.IP \fIcap_style\fP 1i
|
|
Specifies the line-style and cap-style you want to set for the specified GC.
|
|
You can pass
|
|
.PN CapNotLast ,
|
|
.PN CapButt ,
|
|
.PN CapRound ,
|
|
or
|
|
.PN CapProjecting .
|
|
.IP \fIjoin_style\fP 1i
|
|
Specifies the line join-style you want to set for the specified GC.
|
|
You can pass
|
|
.PN JoinMiter ,
|
|
.PN JoinRound ,
|
|
or
|
|
.PN JoinBevel .
|
|
.LP
|
|
.eM
|
|
.PN XSetLineAttributes
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the dash-offset and dash-list for dashed line styles of a given GC, use
|
|
.PN XSetDashes .
|
|
.IN "XSetDashes" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetDashes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIdash_offset\fP\^, \fIdash_list\fP\^, \fIn\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIdash_offset\fP\^;
|
|
.br
|
|
char \fIdash_list\fP[]\^;
|
|
.br
|
|
int \fIn\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIdash_offset\fP 1i
|
|
Specifies the phase of the pattern for the dashed line-style you want to set
|
|
for the specified GC.
|
|
.IP \fIdash_list\fP 1i
|
|
Specifies the dash-list for the dashed line-style
|
|
you want to set for the specified GC.
|
|
.IP \fIn\fP 1i
|
|
Specifies the number of elements in dash_list.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XSetDashes
|
|
function sets the dash-offset and dash-list attributes for dashed line styles
|
|
in the specified GC.
|
|
There must be at least one element in the specified dash_list,
|
|
or a
|
|
.PN BadValue
|
|
error results.
|
|
The initial and alternating elements (second, fourth, and so on)
|
|
of the dash_list are the even dashes, and
|
|
the others are the odd dashes.
|
|
Each element specifies a dash length in pixels.
|
|
All of the elements must be nonzero,
|
|
or a
|
|
.PN BadValue
|
|
error results.
|
|
Specifying an odd-length list is equivalent to specifying the same list
|
|
concatenated with itself to produce an even-length list.
|
|
.LP
|
|
The dash-offset defines the phase of the pattern,
|
|
specifying how many pixels into the dash-list the pattern
|
|
should actually begin in any single graphics request.
|
|
Dashing is continuous through path elements combined with a join-style
|
|
but is reset to the dash-offset between each sequence of joined lines.
|
|
.LP
|
|
The unit of measure for dashes is the same for the ordinary coordinate system.
|
|
Ideally, a dash length is measured along the slope of the line, but implementations
|
|
are only required to match this ideal for horizontal and vertical lines.
|
|
Failing the ideal semantics, it is suggested that the length be measured along the
|
|
major axis of the line.
|
|
The major axis is defined as the x axis for lines drawn at an angle of between
|
|
\-45 and +45 degrees or between 135 and 225 degrees from the x axis.
|
|
For all other lines, the major axis is the y axis.
|
|
.LP
|
|
.PN XSetDashes
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.NH 3
|
|
Setting the Fill Style and Fill Rule
|
|
.XS
|
|
\*(SN Setting the Fill Style and Fill Rule
|
|
.XE
|
|
.LP
|
|
To set the fill-style of a given GC, use
|
|
.PN XSetFillStyle .
|
|
.IN "XSetFillStyle" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetFillStyle\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_style\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIfill_style\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIfill_style\fP 1i
|
|
Specifies the fill-style you want to set for the specified GC.
|
|
You can pass
|
|
.PN FillSolid ,
|
|
.PN FillTiled ,
|
|
.PN FillStippled ,
|
|
or
|
|
.PN FillOpaqueStippled .
|
|
.LP
|
|
.eM
|
|
.PN XSetFillStyle
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the fill-rule of a given GC, use
|
|
.PN XSetFillRule .
|
|
.IN "XSetFillRule" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetFillRule\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_rule\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIfill_rule\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIfill_rule\fP 1i
|
|
Specifies the fill-rule you want to set for the specified GC.
|
|
You can pass
|
|
.PN EvenOddRule
|
|
or
|
|
.PN WindingRule .
|
|
.LP
|
|
.eM
|
|
.PN XSetFillRule
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.NH 3
|
|
Setting the Fill Tile and Stipple
|
|
.XS
|
|
\*(SN Setting the Fill Tile and Stipple
|
|
.XE
|
|
.LP
|
|
Some displays have hardware support for tiling or
|
|
stippling with patterns of specific sizes.
|
|
Tiling and stippling operations that restrict themselves to those specific
|
|
sizes run much faster than such operations with arbitrary size patterns.
|
|
Xlib provides functions that you can use to determine the best size,
|
|
tile, or stipple for the display
|
|
as well as to set the tile or stipple shape and the tile or stipple origin.
|
|
.LP
|
|
.sp
|
|
To obtain the best size of a tile, stipple, or cursor, use
|
|
.PN XQueryBestSize .
|
|
.IN "XQueryBestSize" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
Status XQueryBestSize\^(\^\fIdisplay\fP, \fIclass\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
int \fIclass\fP\^;
|
|
.br
|
|
Drawable \fIwhich_screen\fP\^;
|
|
.br
|
|
unsigned int \fIwidth\fP, \fIheight\fP\^;
|
|
.br
|
|
unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIclass\fP 1i
|
|
Specifies the class that you are interested in.
|
|
You can pass
|
|
.PN TileShape ,
|
|
.PN CursorShape ,
|
|
or
|
|
.PN StippleShape .
|
|
.IP \fIwhich_screen\fP 1i
|
|
Specifies any drawable on the screen.
|
|
.IP \fIwidth\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight\fP 1i
|
|
Specify the width and height.
|
|
.IP \fIwidth_return\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight_return\fP 1i
|
|
Return the width and height of the object best supported
|
|
by the display hardware.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XQueryBestSize
|
|
function returns the best or closest size to the specified size.
|
|
For
|
|
.PN CursorShape ,
|
|
this is the largest size that can be fully displayed on the screen specified by
|
|
which_screen.
|
|
For
|
|
.PN TileShape ,
|
|
this is the size that can be tiled fastest.
|
|
For
|
|
.PN StippleShape ,
|
|
this is the size that can be stippled fastest.
|
|
For
|
|
.PN CursorShape ,
|
|
the drawable indicates the desired screen.
|
|
For
|
|
.PN TileShape
|
|
and
|
|
.PN StippleShape ,
|
|
the drawable indicates the screen and possibly the window class and depth.
|
|
An
|
|
.PN InputOnly
|
|
window cannot be used as the drawable for
|
|
.PN TileShape
|
|
or
|
|
.PN StippleShape ,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
.LP
|
|
.PN XQueryBestSize
|
|
can generate
|
|
.PN BadDrawable ,
|
|
.PN BadMatch ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To obtain the best fill tile shape, use
|
|
.PN XQueryBestTile .
|
|
.IN "XQueryBestTile" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
Status XQueryBestTile\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
Drawable \fIwhich_screen\fP\^;
|
|
.br
|
|
unsigned int \fIwidth\fP, \fIheight\fP\^;
|
|
.br
|
|
unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIwhich_screen\fP 1i
|
|
Specifies any drawable on the screen.
|
|
.IP \fIwidth\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight\fP 1i
|
|
Specify the width and height.
|
|
.IP \fIwidth_return\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight_return\fP 1i
|
|
Return the width and height of the object best supported
|
|
by the display hardware.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XQueryBestTile
|
|
function returns the best or closest size, that is, the size that can be
|
|
tiled fastest on the screen specified by which_screen.
|
|
The drawable indicates the screen and possibly the window class and depth.
|
|
If an
|
|
.PN InputOnly
|
|
window is used as the drawable, a
|
|
.PN BadMatch
|
|
error results.
|
|
.LP
|
|
.PN XQueryBestTile
|
|
can generate
|
|
.PN BadDrawable
|
|
and
|
|
.PN BadMatch
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To obtain the best stipple shape, use
|
|
.PN XQueryBestStipple .
|
|
.IN "XQueryBestStipple" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
Status XQueryBestStipple\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
Drawable \fIwhich_screen\fP\^;
|
|
.br
|
|
unsigned int \fIwidth\fP, \fIheight\fP\^;
|
|
.br
|
|
unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIwhich_screen\fP 1i
|
|
Specifies any drawable on the screen.
|
|
.IP \fIwidth\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight\fP 1i
|
|
Specify the width and height.
|
|
.IP \fIwidth_return\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIheight_return\fP 1i
|
|
Return the width and height of the object best supported
|
|
by the display hardware.
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XQueryBestStipple
|
|
function returns the best or closest size, that is, the size that can be
|
|
stippled fastest on the screen specified by which_screen.
|
|
The drawable indicates the screen and possibly the window class and depth.
|
|
If an
|
|
.PN InputOnly
|
|
window is used as the drawable, a
|
|
.PN BadMatch
|
|
error results.
|
|
.LP
|
|
.PN XQueryBestStipple
|
|
can generate
|
|
.PN BadDrawable
|
|
and
|
|
.PN BadMatch
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the fill tile of a given GC, use
|
|
.PN XSetTile .
|
|
.IN "XSetTile" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetTile\^(\^\fIdisplay\fP, \fIgc\fP\^, \fItile\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
Pixmap \fItile\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fItile\fP 1i
|
|
Specifies the fill tile you want to set for the specified GC.
|
|
.LP
|
|
.eM
|
|
The tile and GC must have the same depth,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
.LP
|
|
.PN XSetTile
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
.PN BadMatch ,
|
|
and
|
|
.PN BadPixmap
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the stipple of a given GC, use
|
|
.PN XSetStipple .
|
|
.IN "XSetStipple" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetStipple\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIstipple\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
Pixmap \fIstipple\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIstipple\fP 1i
|
|
Specifies the stipple you want to set for the specified GC.
|
|
.LP
|
|
.eM
|
|
The stipple must have a depth of one,
|
|
or a
|
|
.PN BadMatch
|
|
error results.
|
|
.LP
|
|
.PN XSetStipple
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
.PN BadMatch ,
|
|
and
|
|
.PN BadPixmap
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the tile or stipple origin of a given GC, use
|
|
.PN XSetTSOrigin .
|
|
.IN "XSetTSOrigin" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetTSOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIts_x_origin\fP\^, \fIts_y_origin\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIts_x_origin\fP\^, \fIts_y_origin\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIts_x_origin\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIts_y_origin\fP 1i
|
|
Specify the x and y coordinates of the tile and stipple origin.
|
|
.LP
|
|
.eM
|
|
When graphics requests call for tiling or stippling,
|
|
the parent's origin will be interpreted relative to whatever destination
|
|
drawable is specified in the graphics request.
|
|
.LP
|
|
.PN XSetTSOrigin
|
|
can generate
|
|
.PN BadAlloc
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.NH 3
|
|
Setting the Current Font
|
|
.XS
|
|
\*(SN Setting the Current Font
|
|
.XE
|
|
.LP
|
|
To set the current font of a given GC, use
|
|
.PN XSetFont .
|
|
.IN "XSetFont" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetFont\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfont\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
Font \fIfont\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIfont\fP 1i
|
|
Specifies the font.
|
|
.LP
|
|
.eM
|
|
.PN XSetFont
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadFont ,
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.NH 3
|
|
Setting the Clip Region
|
|
.XS
|
|
\*(SN Setting the Clip Region
|
|
.XE
|
|
.LP
|
|
Xlib provides functions that you can use to set the clip-origin
|
|
and the clip-mask or set the clip-mask to a list of rectangles.
|
|
.LP
|
|
.sp
|
|
To set the clip-origin of a given GC, use
|
|
.PN XSetClipOrigin .
|
|
.IN "XSetClipOrigin" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetClipOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIclip_x_origin\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIclip_y_origin\fP 1i
|
|
Specify the x and y coordinates of the clip-mask origin.
|
|
.LP
|
|
.eM
|
|
The clip-mask origin is interpreted relative to the origin of whatever
|
|
destination drawable is specified in the graphics request.
|
|
.LP
|
|
.PN XSetClipOrigin
|
|
can generate
|
|
.PN BadAlloc
|
|
and
|
|
.PN BadGC
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the clip-mask of a given GC to the specified pixmap, use
|
|
.PN XSetClipMask .
|
|
.IN "XSetClipMask" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetClipMask\^(\^\fIdisplay\fP, \fIgc\fP, \fIpixmap\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
Pixmap \fIpixmap\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIpixmap\fP 1i
|
|
Specifies the pixmap or
|
|
.PN None .
|
|
.LP
|
|
.eM
|
|
If the clip-mask is set to
|
|
.PN None ,
|
|
the pixels are always drawn (regardless of the clip-origin).
|
|
.LP
|
|
.PN XSetClipMask
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
.PN BadMatch ,
|
|
and
|
|
.PN BadPixmap
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the clip-mask of a given GC to the specified list of rectangles, use
|
|
.PN XSetClipRectangles .
|
|
.IN "XSetClipRectangles" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetClipRectangles\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^, \fIrectangles\fP\^, \fIn\fP\^, \fIordering\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
|
|
.br
|
|
XRectangle \fIrectangles\fP[]\^;
|
|
.br
|
|
int \fIn\fP\^;
|
|
.br
|
|
int \fIordering\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIclip_x_origin\fP 1i
|
|
.br
|
|
.ns
|
|
.IP \fIclip_y_origin\fP 1i
|
|
Specify the x and y coordinates of the clip-mask origin.
|
|
.IP \fIrectangles\fP 1i
|
|
Specifies an array of rectangles that define the clip-mask.
|
|
.IP \fIn\fP 1i
|
|
Specifies the number of rectangles.
|
|
.IP \fIordering\fP 1i
|
|
Specifies the ordering relations on the rectangles.
|
|
You can pass
|
|
.PN Unsorted ,
|
|
.PN YSorted ,
|
|
.PN YXSorted ,
|
|
or
|
|
.PN YXBanded .
|
|
.LP
|
|
.eM
|
|
The
|
|
.PN XSetClipRectangles
|
|
function changes the clip-mask in the specified GC
|
|
to the specified list of rectangles and sets the clip origin.
|
|
The output is clipped to remain contained within the
|
|
rectangles.
|
|
The clip-origin is interpreted relative to the origin of
|
|
whatever destination drawable is specified in a graphics request.
|
|
The rectangle coordinates are interpreted relative to the clip-origin.
|
|
The rectangles should be nonintersecting, or the graphics results will be
|
|
undefined.
|
|
Note that the list of rectangles can be empty,
|
|
which effectively disables output.
|
|
This is the opposite of passing
|
|
.PN None
|
|
as the clip-mask in
|
|
.PN XCreateGC ,
|
|
.PN XChangeGC ,
|
|
and
|
|
.PN XSetClipMask .
|
|
.LP
|
|
If known by the client, ordering relations on the rectangles can be
|
|
specified with the ordering argument.
|
|
This may provide faster operation
|
|
by the server.
|
|
If an incorrect ordering is specified, the X server may generate a
|
|
.PN BadMatch
|
|
error, but it is not required to do so.
|
|
If no error is generated, the graphics
|
|
results are undefined.
|
|
.PN Unsorted
|
|
means the rectangles are in arbitrary order.
|
|
.PN YSorted
|
|
means that the rectangles are nondecreasing in their Y origin.
|
|
.PN YXSorted
|
|
additionally constrains
|
|
.PN YSorted
|
|
order in that all
|
|
rectangles with an equal Y origin are nondecreasing in their X
|
|
origin.
|
|
.PN YXBanded
|
|
additionally constrains
|
|
.PN YXSorted
|
|
by requiring that,
|
|
for every possible Y scanline, all rectangles that include that
|
|
scanline have an identical Y origins and Y extents.
|
|
.LP
|
|
.PN XSetClipRectangles
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
.PN BadMatch ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
Xlib provides a set of basic functions for performing
|
|
region arithmetic.
|
|
For information about these functions,
|
|
see section 16.5.
|
|
.NH 3
|
|
Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
|
|
.XS
|
|
\*(SN Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
|
|
.XE
|
|
.LP
|
|
To set the arc mode of a given GC, use
|
|
.PN XSetArcMode .
|
|
.IN "XSetArcMode" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetArcMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIarc_mode\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIarc_mode\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIarc_mode\fP 1i
|
|
Specifies the arc mode.
|
|
You can pass
|
|
.PN ArcChord
|
|
or
|
|
.PN ArcPieSlice .
|
|
.LP
|
|
.eM
|
|
.PN XSetArcMode
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the subwindow mode of a given GC, use
|
|
.PN XSetSubwindowMode .
|
|
.IN "XSetSubwindowMode" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetSubwindowMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIsubwindow_mode\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
int \fIsubwindow_mode\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIsubwindow_mode\fP 1i
|
|
Specifies the subwindow mode.
|
|
You can pass
|
|
.PN ClipByChildren
|
|
or
|
|
.PN IncludeInferiors .
|
|
.LP
|
|
.eM
|
|
.PN XSetSubwindowMode
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.LP
|
|
.sp
|
|
To set the graphics-exposures flag of a given GC, use
|
|
.PN XSetGraphicsExposures .
|
|
.IN "XSetGraphicsExposures" "" "@DEF@"
|
|
.sM
|
|
.FD 0
|
|
XSetGraphicsExposures\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIgraphics_exposures\fP\^)
|
|
.br
|
|
Display *\fIdisplay\fP\^;
|
|
.br
|
|
GC \fIgc\fP\^;
|
|
.br
|
|
Bool \fIgraphics_exposures\fP\^;
|
|
.FN
|
|
.IP \fIdisplay\fP 1i
|
|
Specifies the connection to the X server.
|
|
.IP \fIgc\fP 1i
|
|
Specifies the GC.
|
|
.IP \fIgraphics_exposures\fP 1i
|
|
Specifies a Boolean value that indicates whether you want
|
|
.PN GraphicsExpose
|
|
and
|
|
.PN NoExpose
|
|
events to be reported when calling
|
|
.PN XCopyArea
|
|
and
|
|
.PN XCopyPlane
|
|
with this GC.
|
|
.LP
|
|
.eM
|
|
.PN XSetGraphicsExposures
|
|
can generate
|
|
.PN BadAlloc ,
|
|
.PN BadGC ,
|
|
and
|
|
.PN BadValue
|
|
errors.
|
|
.bp
|