First, some elemental structures.
typedef struct
{
short x, y;
} XPoint;
typedef struct
{
short x1, y1,x2,y2;
} XSegment;
typedef struct
{
short x, y;
unsigned short width, height;
} XRectangle;
typedef struct
{
short x, y;
unsigned short width, height;
short angle1,angle2;
} XArc; The following routines make extensive use of the GC (refer
to the manual for further information on exactly which components are
relevant). Lines of width 0 come out with a thickness of 1 drawn using
a different, faster, algorithm.
They write to drawables (pixmaps
or windows that can accept graphic input).
XDrawPoint(display,d,gc,x,y)
XDrawPoints(display,d,gc,points,npoints,mode)
int mode; /* CoordModeOrigin or CoordModePrevious */
XDrawLine(display,d,gc,x1, y1, x2, y2)
XDrawLines(display,d,gc,points.npoints,mode)
int mode; /* CoordModeOrigin or CoordModePrevious */
XDrawSegments(display,d,gc,segments,nsegments)
XDrawRectangle(display,d,gc,x,y,width,height)
XDrawRectangles(display,d,gc,rectangles,nrectangles)
XDrawArc(display,d,gc,x,y,width,height,angle1,angle2)
unsigned int width,height /*major and minor axes of arc*/
int angle1 /*start of arc, clockwise from 3 o'clock,scaled by 64 */
int angle2 /*path and extent of arc, relative to angle1, scaled by 64*/
XDrawArcs(display,d,gc,arcs,narcs)
XFillRectangle(display,d,gc,x,y,width,height)
XFillRectangles(display,d,gc,rectangles,nrectangles)
The last 2 routines fill rectangles that are 1 pixel shorter and narrower
than the XDrawRectangle routines.
XFillPolygon(display,d,gc,points,npoints,shape,mode)
int shape /*Complex,Convex,NonConvex ;
helps select best fill algorithm */
int mode; /* CoordModeOrigin or CoordModePrevious */
XFillArc(display,d,gc,x,y,width,height,angle1,angle2)
XFillArcs(display,d,gc,arcs,narcs)
XMoveArea(display, w, srcX, srcY, dstX, dstY, width, height)
int srcX, srcY; /* position of top LH corner of area */
int dstX, dstY; /* where top LH corner must end up */
int width, length; /* size of area to be moved */
XCopyArea(display,src,dest,gc,src_x, src_y,width, height, dest_x,dest_y)
Drawable src_x, src_y; /* position of top LH corner of area */
int src_x,src_y,dest_x, dest_y; /* where top LH corner must end up */
unsigned int width, height; /* size of area being copied */
/* The depth of the source and destination must be the same. */
XCopyPlane(display,src,dest,gc,src_x,src_y,width,height,dest_x,dest_y,plane)
/* src and dest are drawables with the same root */
unsigned int width,height;
unsigned long plane;
XClearArea(display,w,x,y,width,height,exposures)
int width, height;/* if width=0 then width is set to window_width-x
and similarly for y */
Bool exposures; /* if True then exposure events generated */
XClearWindow(display,w) /* clears the window */