OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/trunk/mw/doc
    from Rev 673 to Rev 1765
    Reverse comparison

Rev 673 → Rev 1765

/nano-X/nano-X-sections.txt
0,0 → 1,135
<SECTION>
<FILE>general</FILE>
GrFlush
GrOpen
GrClose
GrMainLoop
GrGetScreenInfo
GrSetErrorHandler
GrDefaultErrorHandler
</SECTION>
<SECTION>
<FILE>window</FILE>
GrNewWindow
GrNewPixmap
GrNewInputWindow
GrDestroyWindow
GrMapWindow
GrUnmapWindow
GrRaiseWindow
GrLowerWindow
GrMoveWindow
GrResizeWindow
GrReparentWindow
GrGetWindowInfo
GrSetWMProperties
GrGetWMProperties
GrSetFocus
GrGetFocus
GrSetBorderColor
GrSetBackgroundPixmap
GrClearWindow
GrCloseWindow
GrKillWindow
</SECTION>
<SECTION>
<FILE>graphics</FILE>
GrNewGC
GrCopyGC
GrGetGCInfo
GrDestroyGC
GrLine
GrPoint
GrPoints
GrRect
GrFillRect
GrPoly
GrFillPoly
GrEllipse
GrFillEllipse
GrArc
GrArcAngle
GrSetGCForeground
GrSetGCBackground
GrSetGCUseBackground
GrSetGCMode
GrSetGCFont
GrGetGCTextSize
GrReadArea
GrArea
GrCopyArea
GrBitmap
GrFreeImage
GrGetImageInfo
GrDrawImageFromFile
GrLoadImageFromFile
GrDrawImageToFit
GrDrawImageBits
GrText
</SECTION>
<SECTION>
<FILE>events</FILE>
GrSelectEvents
GrGetNextEvent
GrGetNextEventTimeout
GrCheckNextEvent
GrPeekEvent
</SECTION>
<SECTION>
<FILE>fonts</FILE>
GrCreateFont
GrSetFontSize
GrSetFontRotation
GrSetFontAttr
GrDestroyFont
GrGetFontInfo
</SECTION>
<SECTION>
<FILE>pointer</FILE>
GrSetCursor
GrMoveCursor
GrInjectPointerEvent
</SECTION>
<SECTION>
<FILE>colours</FILE>
GrGetSystemPalette
GrSetSystemPalette
GrFindColor
GrGetSysColor
</SECTION>
<SECTION>
<FILE>regions</FILE>
GrNewRegion
GrDestroyRegion
GrUnionRectWithRegion
GrUnionRegion
GrSubtractRegion
GrXorRegion
GrIntersectRegion
GrSetGCRegion
GrPointInRegion
GrRectInRegion
GrEmptyRegion
GrEqualRegion
GrOffsetRegion
GrGetRegionBox
GrNewPolygonRegion
</SECTION>
<SECTION>
<FILE>selections</FILE>
GrSetSelectionOwner
GrGetSelectionOwner
GrRequestClientData
GrSendClientData
</SECTION>
<SECTION>
<FILE>misc</FILE>
GrRegisterDragAndDropWindow
GrReqShmCmds
GrInjectKeyboardEvent
GrRegisterInput
GrPrepareSelect
GrServiceSelect
GrBell
GrSetScreenSaverTimeout
</SECTION>
/nano-X/html/nano-x-graphics.html
0,0 → 1,5504
<HTML
><HEAD
><TITLE
>graphics</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="window"
HREF="nano-x-window.html"><LINK
REL="NEXT"
TITLE="events"
HREF="nano-x-events.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-window.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-events.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>graphics</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN707"
></A
><H2
>Name</H2
>graphics &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN710"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> <A
HREF="nano-x-graphics.html#GRNEWGC"
>GrNewGC</A
> (void);
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> <A
HREF="nano-x-graphics.html#GRCOPYGC"
>GrCopyGC</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc);
void <A
HREF="nano-x-graphics.html#GRGETGCINFO"
>GrGetGCInfo</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-GC-INFO-CAPS"
>GR_GC_INFO</GTKDOCLINK
> *gcip);
void <A
HREF="nano-x-graphics.html#GRDESTROYGC"
>GrDestroyGC</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc);
void <A
HREF="nano-x-graphics.html#GRLINE"
>GrLine</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x2,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y2);
void <A
HREF="nano-x-graphics.html#GRPOINT"
>GrPoint</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);
void <A
HREF="nano-x-graphics.html#GRPOINTS"
>GrPoints</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);
void <A
HREF="nano-x-graphics.html#GRRECT"
>GrRect</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);
void <A
HREF="nano-x-graphics.html#GRFILLRECT"
>GrFillRect</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);
void <A
HREF="nano-x-graphics.html#GRPOLY"
>GrPoly</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);
void <A
HREF="nano-x-graphics.html#GRFILLPOLY"
>GrFillPoly</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);
void <A
HREF="nano-x-graphics.html#GRELLIPSE"
>GrEllipse</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry);
void <A
HREF="nano-x-graphics.html#GRFILLELLIPSE"
>GrFillEllipse</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry);
void <A
HREF="nano-x-graphics.html#GRARC"
>GrArc</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> ax,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> ay,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> bx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> by,
int type);
void <A
HREF="nano-x-graphics.html#GRARCANGLE"
>GrArcAngle</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> angle1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> angle2,
int type);
void <A
HREF="nano-x-graphics.html#GRSETGCFOREGROUND"
>GrSetGCForeground</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> foreground);
void <A
HREF="nano-x-graphics.html#GRSETGCBACKGROUND"
>GrSetGCBackground</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background);
void <A
HREF="nano-x-graphics.html#GRSETGCUSEBACKGROUND"
>GrSetGCUseBackground</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> flag);
void <A
HREF="nano-x-graphics.html#GRSETGCMODE"
>GrSetGCMode</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
int mode);
void <A
HREF="nano-x-graphics.html#GRSETGCFONT"
>GrSetGCFont</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> font);
void <A
HREF="nano-x-graphics.html#GRGETGCTEXTSIZE"
>GrGetGCTextSize</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
void *str,
int count,
int flags,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retwidth,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retheight,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retbase);
void <A
HREF="nano-x-graphics.html#GRREADAREA"
>GrReadArea</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-PIXELVAL-CAPS"
>GR_PIXELVAL</GTKDOCLINK
> *pixels);
void <A
HREF="nano-x-graphics.html#GRAREA"
>GrArea</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
void *pixels,
int pixtype);
void <A
HREF="nano-x-graphics.html#GRCOPYAREA"
>GrCopyArea</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> srcid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> srcx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> srcy,
int op);
void <A
HREF="nano-x-graphics.html#GRBITMAP"
>GrBitmap</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *imagebits);
void <A
HREF="nano-x-graphics.html#GRFREEIMAGE"
>GrFreeImage</A
> (<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> id);
void <A
HREF="nano-x-graphics.html#GRGETIMAGEINFO"
>GrGetImageInfo</A
> (<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-IMAGE-INFO-CAPS"
>GR_IMAGE_INFO</GTKDOCLINK
> *iip);
void <A
HREF="nano-x-graphics.html#GRDRAWIMAGEFROMFILE"
>GrDrawImageFromFile</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
char *path,
int flags);
<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> <A
HREF="nano-x-graphics.html#GRLOADIMAGEFROMFILE"
>GrLoadImageFromFile</A
> (char *path,
int flags);
void <A
HREF="nano-x-graphics.html#GRDRAWIMAGETOFIT"
>GrDrawImageToFit</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> imageid);
void <A
HREF="nano-x-graphics.html#GRDRAWIMAGEBITS"
>GrDrawImageBits</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-IMAGE-HDR-CAPS"
>GR_IMAGE_HDR</GTKDOCLINK
> *pimage);
void <A
HREF="nano-x-graphics.html#GRTEXT"
>GrText</A
> (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
void *str,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
int flags);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN883"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN886"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN888"
></A
><H3
><A
NAME="GRNEWGC"
></A
>GrNewGC ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> GrNewGC (void);</PRE
></TD
></TR
></TABLE
><P
>Creates a new graphics context structure and returns the ID used to refer
to it. The structure is initialised with a set of default parameters.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created graphics context or 0 on error</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN904"
></A
><H3
><A
NAME="GRCOPYGC"
></A
>GrCopyGC ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> GrCopyGC (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc);</PRE
></TD
></TR
></TABLE
><P
>Creates a new graphics context structure and fills it in with the values
from the specified already existing graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the already existing graphics context to copy the parameters from</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created graphics context or 0 on error</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN925"
></A
><H3
><A
NAME="GRGETGCINFO"
></A
>GrGetGCInfo ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetGCInfo (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-GC-INFO-CAPS"
>GR_GC_INFO</GTKDOCLINK
> *gcip);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified GR_GC_INFO structure with information regarding the
specified graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> a graphics context</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gcip</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_GC_INFO structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN946"
></A
><H3
><A
NAME="GRDESTROYGC"
></A
>GrDestroyGC ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDestroyGC (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc);</PRE
></TD
></TR
></TABLE
><P
>Destroys the graphics context structure with the specified ID.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context structure to destroy</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN962"
></A
><H3
><A
NAME="GRLINE"
></A
>GrLine ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrLine (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x2,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y2);</PRE
></TD
></TR
></TABLE
><P
>Draws a line using the specified graphics context on the specified drawable
from (x1, y1) to (x2, y2), with coordinates given relative to the drawable.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the line on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the line</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the start of the line relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the start of the line relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the end of the line relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the end of the line relative to the drawable</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1003"
></A
><H3
><A
NAME="GRPOINT"
></A
>GrPoint ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrPoint (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);</PRE
></TD
></TR
></TABLE
><P
>Draws a point using the specified graphics context at the specified position
on the specified drawable.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw a point on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the point</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the point at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the point at relative to the drawable</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1034"
></A
><H3
><A
NAME="GRPOINTS"
></A
>GrPoints ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrPoints (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);</PRE
></TD
></TR
></TABLE
><P
>Draws a set of points using the specified graphics context at the positions
specified by the point table on the specified drawable.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw a point on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the point</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of points in the point table</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pointtable</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_POINT array which lists the points to draw</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1065"
></A
><H3
><A
NAME="GRRECT"
></A
>GrRect ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrRect (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);</PRE
></TD
></TR
></TABLE
><P
>Draw the boundary of a rectangle of the specified dimensions and position
on the specified drawable using the specified graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the rectangle on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the rectangle</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the rectangle relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the rectangle relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the rectangle</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the rectangle</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1106"
></A
><H3
><A
NAME="GRFILLRECT"
></A
>GrFillRect ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFillRect (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);</PRE
></TD
></TR
></TABLE
><P
>Draw a filled rectangle of the specified dimensions and position on the
specified drawable using the specified graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the rectangle on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the rectangle</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the rectangle relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the rectangle relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the rectangle</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the rectangle</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1147"
></A
><H3
><A
NAME="GRPOLY"
></A
>GrPoly ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrPoly (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);</PRE
></TD
></TR
></TABLE
><P
>Draws an unfilled polygon on the specified drawable using the specified
graphics context. The polygon is specified by an array of point structures.
The polygon is not automatically closed- if a closed polygon is desired,
the last point must be the same as the first.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the polygon onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the polygon</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of points in the point array</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pointtable</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to an array of points describing the polygon</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1178"
></A
><H3
><A
NAME="GRFILLPOLY"
></A
>GrFillPoly ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFillPoly (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *pointtable);</PRE
></TD
></TR
></TABLE
><P
>Draws a filled polygon on the specified drawable using the specified
graphics context. The polygon is specified by an array of point structures.
The polygon is automatically closed- the last point need not be the same as
the first in order for the polygon to be closed.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the polygon onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the polygon</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of points in the point array</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pointtable</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to an array of points describing the polygon</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1209"
></A
><H3
><A
NAME="GRELLIPSE"
></A
>GrEllipse ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrEllipse (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry);</PRE
></TD
></TR
></TABLE
><P
>Draws the boundary of ellipse at the specified position using the specified
dimensions and graphics context on the specified drawable.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the ellipse on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the ellipse</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the ellipse at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the ellipse at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the ellipse on the X axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ry</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the ellipse on the Y axis</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1250"
></A
><H3
><A
NAME="GRFILLELLIPSE"
></A
>GrFillEllipse ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFillEllipse (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry);</PRE
></TD
></TR
></TABLE
><P
>Draws a filled ellipse at the specified position using the specified
dimensions and graphics context on the specified drawable.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the filled ellipse on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the ellipse</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the ellipse at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the ellipse at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the ellipse on the X axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ry</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the ellipse on the Y axis</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1291"
></A
><H3
><A
NAME="GRARC"
></A
>GrArc ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrArc (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> ax,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> ay,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> bx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> by,
int type);</PRE
></TD
></TR
></TABLE
><P
>Draws an arc with the specified dimensions at the specified position
on the specified drawable using the specified graphics context.
The type specifies the fill type. Possible values include GR_ARC and
GR_PIE.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the arc on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the graphics context to use when drawing the arc</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the arc at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the arc at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the arc on the X axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ry</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the arc on the Y axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ax</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the start of the arc relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ay</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the start of the arc relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>bx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the end of the arc relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>by</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the end of the arc relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>type</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the fill style to use when drawing the arc</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1356"
></A
><H3
><A
NAME="GRARCANGLE"
></A
>GrArcAngle ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrArcAngle (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> rx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> ry,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> angle1,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> angle2,
int type);</PRE
></TD
></TR
></TABLE
><P
>Draws an arc with the specified dimensions at the specified position
on the specified drawable using the specified graphics context.
The type specifies the fill type. Possible values include GR_ARC and
GR_PIE. This function requires floating point support, and is slightly
slower than the <A
HREF="nano-x-graphics.html#GRARC"
>GrArc</A
>() function which does not require floating point.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the arc on</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the graphics context to use when drawing the arc</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the arc at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the arc at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the arc on the X axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ry</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the radius of the arc on the Y axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>angle1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the angle of the start of the arc</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>angle2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the angle of the end of the arc</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>type</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the fill style to use when drawing the arc</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1412"
></A
><H3
><A
NAME="GRSETGCFOREGROUND"
></A
>GrSetGCForeground ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCForeground (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> foreground);</PRE
></TD
></TR
></TABLE
><P
>Changes the foreground colour of the specified graphics context to the
specified colour.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to set the foreground colour of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>foreground</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour to use as the new foreground colour</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1433"
></A
><H3
><A
NAME="GRSETGCBACKGROUND"
></A
>GrSetGCBackground ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCBackground (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background);</PRE
></TD
></TR
></TABLE
><P
>Changes the background colour of the specified graphics context to the
specified colour.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to set the background colour of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>background</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour to use as the new background colour</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1454"
></A
><H3
><A
NAME="GRSETGCUSEBACKGROUND"
></A
>GrSetGCUseBackground ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCUseBackground (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> flag);</PRE
></TD
></TR
></TABLE
><P
>Sets the flag which chooses whether or not the background colour is used
when drawing bitmaps and text using the specified graphics context to the
specified value.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to change the "use background" flag of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flag</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> flag specifying whether to use the background colour or not</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1475"
></A
><H3
><A
NAME="GRSETGCMODE"
></A
>GrSetGCMode ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCMode (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
int mode);</PRE
></TD
></TR
></TABLE
><P
>Changes the drawing mode (SET, XOR, OR, AND, etc.) of the specified
graphics context to the specified mode.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to set the drawing mode of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>mode</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the new drawing mode</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1495"
></A
><H3
><A
NAME="GRSETGCFONT"
></A
>GrSetGCFont ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCFont (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> font);</PRE
></TD
></TR
></TABLE
><P
>Sets the font to be used for text drawing in the specified graphics
context to the specified font ID.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to set the font of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>font</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the font</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1516"
></A
><H3
><A
NAME="GRGETGCTEXTSIZE"
></A
>GrGetGCTextSize ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetGCTextSize (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
void *str,
int count,
int flags,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retwidth,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retheight,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> *retbase);</PRE
></TD
></TR
></TABLE
><P
>Calculates the dimensions of the specified text string using the current font
and flags in the specified graphics context. The count argument can be -1
if the string is null terminated.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the graphics context</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>str</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a text string</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the length of the string</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> text rendering flags (GR_TF*)</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>retwidth</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the variable the width will be returned in</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>retheight</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the variable the height will be returned in</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>retbase</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the variable the baseline height will be returned in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1559"
></A
><H3
><A
NAME="GRREADAREA"
></A
>GrReadArea ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrReadArea (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-PIXELVAL-CAPS"
>GR_PIXELVAL</GTKDOCLINK
> *pixels);</PRE
></TD
></TR
></TABLE
><P
>Reads the pixel data of the specified size from the specified position on
the specified drawable into the specified pixel array. If the drawable is
a window, the data returned will be the pixel values from the relevant
position on the screen regardless of whether the window is obscured by other
windows. If the window is unmapped, or partially or fully outside a window
boundary, black pixel values will be returned.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to read an area from</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to read the area from relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to read the area from relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the area to read</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the area to read</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pixels</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to an area of memory to place the pixel data in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1600"
></A
><H3
><A
NAME="GRAREA"
></A
>GrArea ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrArea (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
void *pixels,
int pixtype);</PRE
></TD
></TR
></TABLE
><P
>Draws the specified pixel array of the specified size and format onto the
specified drawable using the specified graphics context at the specified
position. Note that colour conversion is currently only performed when using
the GR_PF_RGB format, which is an unsigned long containing RGBX data.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the area onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the area</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the area at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the area at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the area</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the area</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pixels</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to an array containing the pixel data</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pixtype</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the format of the pixel data</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1649"
></A
><H3
><A
NAME="GRCOPYAREA"
></A
>GrCopyArea ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrCopyArea (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> srcid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> srcx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> srcy,
int op);</PRE
></TD
></TR
></TABLE
><P
>Copies the specified area of the specified size between the specified
drawables at the specified positions using the specified graphics context
and ROP codes. 0 is a sensible default ROP code in most cases.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to copy the area to</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when copying the area</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to copy the area to within the destination drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to copy the area to within the destination drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the area to copy</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the area to copy</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>srcid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to copy the area from</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>srcx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to copy the area from within the source drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>srcy</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to copy the area from within the source drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>op</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ROP codes to pass to the blitter when performing the copy</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1709"
></A
><H3
><A
NAME="GRBITMAP"
></A
>GrBitmap ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrBitmap (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *imagebits);</PRE
></TD
></TR
></TABLE
><P
>Draws the monochrome bitmap data provided in the bitmaptable argument
at the specified position on the specified drawable using the specified
graphics context. Note that the bitmap data should be an array of aligned
16 bit words. The usebackground flag in the graphics context specifies
whether to draw the background colour wherever a bit value is zero.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the bitmap onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the bitmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the bitmap at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the bitmap at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the bitmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the bitmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>imagebits</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1755"
></A
><H3
><A
NAME="GRFREEIMAGE"
></A
>GrFreeImage ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFreeImage (<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> id);</PRE
></TD
></TR
></TABLE
><P
>Destroys the specified image buffer and reclaims the memory used by it.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of the image buffer to free</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1771"
></A
><H3
><A
NAME="GRGETIMAGEINFO"
></A
>GrGetImageInfo ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetImageInfo (<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-IMAGE-INFO-CAPS"
>GR_IMAGE_INFO</GTKDOCLINK
> *iip);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified image information structure with the details of the
specified image buffer.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of an image buffer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>iip</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_IMAGE_INFO structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1792"
></A
><H3
><A
NAME="GRDRAWIMAGEFROMFILE"
></A
>GrDrawImageFromFile ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDrawImageFromFile (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
char *path,
int flags);</PRE
></TD
></TR
></TABLE
><P
>Loads the specified image file and draws it at the specified position
on the specified drawable using the specified graphics context. The
width and height values specify the size of the image to draw- if the
actual image is a different size, it will be scaled to fit. The image type
is automatically detected using the magic numbers in the image header (ie.
the filename extension is irrelevant). The currently supported image types
include GIF, JPEG, Windows BMP, PNG, XPM, and both ascii and binary
variants of PBM, PGM, and PPM. However the image types supported by a
particular server depend on which image types were enabled in the server
configuration at build time.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the image onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the image</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the maximum image width</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the maximum image height</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>path</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> string containing the filename of the image to load</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> flags specific to the particular image loader</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1841"
></A
><H3
><A
NAME="GRLOADIMAGEFROMFILE"
></A
>GrLoadImageFromFile ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> GrLoadImageFromFile (char *path,
int flags);</PRE
></TD
></TR
></TABLE
><P
>Loads the specified image file into a newly created server image buffer
and returns the ID of the buffer. The image type is automatically detected
using the magic numbers in the image header (ie. the filename extension is
irrelevant). The currently supported image types include GIF, JPEG, Windows
BMP, PNG, XPM, and both ascii and binary variants of PBM, PGM, and PPM.
However the image types supported by a particular server depend on which
image types were enabled in the server configuration at build time.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>path</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> string containing the filename of the image to load</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> flags specific to the particular image loader</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of the image buffer the image was loaded into</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1865"
></A
><H3
><A
NAME="GRDRAWIMAGETOFIT"
></A
>GrDrawImageToFit ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDrawImageToFit (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-IMAGE-ID-CAPS"
>GR_IMAGE_ID</GTKDOCLINK
> imageid);</PRE
></TD
></TR
></TABLE
><P
>Draws the image from the specified image buffer at the specified position
on the specified drawable using the specified graphics context. The
width and height values specify the size of the image to draw- if the
actual image is a different size, it will be scaled to fit.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the image onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the image</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the maximum image width</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the maximum image height</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>imageid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the image buffer containing the image to display</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1911"
></A
><H3
><A
NAME="GRDRAWIMAGEBITS"
></A
>GrDrawImageBits ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDrawImageBits (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-IMAGE-HDR-CAPS"
>GR_IMAGE_HDR</GTKDOCLINK
> *pimage);</PRE
></TD
></TR
></TABLE
><P
>Draws the image contained in the specified image structure onto the
specified drawable at the specified coordinates using the specified
graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the image onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the image</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the image at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pimage</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the image structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1947"
></A
><H3
><A
NAME="GRTEXT"
></A
>GrText ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrText (<GTKDOCLINK
HREF="GR-DRAW-ID-CAPS"
>GR_DRAW_ID</GTKDOCLINK
> id,
<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
void *str,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
int flags);</PRE
></TD
></TR
></TABLE
><P
>Draws the specified text string at the specified position on the specified
drawable using the specified graphics context and flags. The default flags
specify ASCII encoding and baseline alignment.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>id</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the drawable to draw the text string onto</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to use when drawing the text string</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to draw the string at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to draw the string at relative to the drawable</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>str</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the text string to draw</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of characters (not bytes) in the string</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> flags specifying text encoding, alignment, etc.</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-window.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-events.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>window</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>events</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-pointer.html
0,0 → 1,780
<HTML
><HEAD
><TITLE
>pointer</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="fonts"
HREF="nano-x-fonts.html"><LINK
REL="NEXT"
TITLE="colours"
HREF="nano-x-colours.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-fonts.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-colours.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>pointer</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2286"
></A
><H2
>Name</H2
>pointer &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2289"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-pointer.html#GRSETCURSOR"
>GrSetCursor</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> hotx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> hoty,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> foreground,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *fbbitmap,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *bgbitmap);
void <A
HREF="nano-x-pointer.html#GRMOVECURSOR"
>GrMoveCursor</A
> (<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);
void <A
HREF="nano-x-pointer.html#GRINJECTPOINTEREVENT"
>GrInjectPointerEvent</A
> (<GTKDOCLINK
HREF="MWCOORD-CAPS"
>MWCOORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="MWCOORD-CAPS"
>MWCOORD</GTKDOCLINK
> y,
int button,
int visible);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2308"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2311"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN2313"
></A
><H3
><A
NAME="GRSETCURSOR"
></A
>GrSetCursor ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetCursor (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> hotx,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> hoty,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> foreground,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *fbbitmap,
<GTKDOCLINK
HREF="GR-BITMAP-CAPS"
>GR_BITMAP</GTKDOCLINK
> *bgbitmap);</PRE
></TD
></TR
></TABLE
><P
>Specifies a cursor (mouse pointer graphic) to display when the mouse
pointer is over the specified window and subsequently created children.
Points in the bitmap which have neither the foreground or background bits
set are not painted.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the cursor of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the pointer bitmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the pointer bitmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>hotx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate within the bitmap used as the target of the pointer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>hoty</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate within the bitmap used as the target of the pointer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>foreground</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour to use for the foreground of the pointer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>background</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour to use for the background of the pointer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fbbitmap</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>bgbitmap</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to bitmap data specifying the background of the pointer</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2369"
></A
><H3
><A
NAME="GRMOVECURSOR"
></A
>GrMoveCursor ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrMoveCursor (<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);</PRE
></TD
></TR
></TABLE
><P
>Moves the cursor (mouse pointer) to the specified coordinates.
The coordinates are relative to the root window, where (0,0) is the upper
left hand corner of the screen. The reference point used for the pointer
is that of the "hot spot". After moving the pointer, the graphic used for
the pointer will change to the graphic defined for use in the window which
it is over.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to move the pointer to</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to move the pointer to</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2390"
></A
><H3
><A
NAME="GRINJECTPOINTEREVENT"
></A
>GrInjectPointerEvent ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrInjectPointerEvent (<GTKDOCLINK
HREF="MWCOORD-CAPS"
>MWCOORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="MWCOORD-CAPS"
>MWCOORD</GTKDOCLINK
> y,
int button,
int visible);</PRE
></TD
></TR
></TABLE
><P
>Sets the pointer invisible if the visible parameter is GR_FALSE, or visible
if it is GR_TRUE, then moves the pointer to the specified position and
generates a mouse event with the specified button status. Also performs
a <A
HREF="nano-x-general.html#GRFLUSH"
>GrFlush</A
>() so that the event takes effect immediately.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the pointer event relevant to the root window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the pointer event relevant to the root window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>button</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the pointer button status</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>visible</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> whether to display the pointer after the event</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-fonts.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-colours.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>fonts</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>colours</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-events.html
0,0 → 1,700
<HTML
><HEAD
><TITLE
>events</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="graphics"
HREF="nano-x-graphics.html"><LINK
REL="NEXT"
TITLE="fonts"
HREF="nano-x-fonts.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-graphics.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-fonts.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>events</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN1996"
></A
><H2
>Name</H2
>events &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN1999"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-events.html#GRSELECTEVENTS"
>GrSelectEvents</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-EVENT-MASK-CAPS"
>GR_EVENT_MASK</GTKDOCLINK
> eventmask);
void <A
HREF="nano-x-events.html#GRGETNEXTEVENT"
>GrGetNextEvent</A
> (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);
void <A
HREF="nano-x-events.html#GRGETNEXTEVENTTIMEOUT"
>GrGetNextEventTimeout</A
> (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep,
<GTKDOCLINK
HREF="GR-TIMEOUT-CAPS"
>GR_TIMEOUT</GTKDOCLINK
> timeout);
void <A
HREF="nano-x-events.html#GRCHECKNEXTEVENT"
>GrCheckNextEvent</A
> (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);
int <A
HREF="nano-x-events.html#GRPEEKEVENT"
>GrPeekEvent</A
> (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2014"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2017"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN2019"
></A
><H3
><A
NAME="GRSELECTEVENTS"
></A
>GrSelectEvents ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSelectEvents (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-EVENT-MASK-CAPS"
>GR_EVENT_MASK</GTKDOCLINK
> eventmask);</PRE
></TD
></TR
></TABLE
><P
>Select the event types which should be returned for the specified window.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the event mask of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>eventmask</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> a bit field specifying the desired event mask</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2040"
></A
><H3
><A
NAME="GRGETNEXTEVENT"
></A
>GrGetNextEvent ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetNextEvent (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
><P
>Gets the next event from the event queue and places it in the specified
GR_EVENT structure. If the queue is currently empty, we sleep until the
next event arrives from the server or input is read on a file descriptor
previously specified by <A
HREF="nano-x-misc.html#GRREGISTERINPUT"
>GrRegisterInput</A
>().</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ep</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the GR_EVENT structure to return the event in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2057"
></A
><H3
><A
NAME="GRGETNEXTEVENTTIMEOUT"
></A
>GrGetNextEventTimeout ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetNextEventTimeout (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep,
<GTKDOCLINK
HREF="GR-TIMEOUT-CAPS"
>GR_TIMEOUT</GTKDOCLINK
> timeout);</PRE
></TD
></TR
></TABLE
><P
>Gets the next event from the event queue and places it in the specified
GR_EVENT structure. If the queue is currently empty, we sleep until the
next event arrives from the server, input is read on a file descriptor
previously specified by <A
HREF="nano-x-misc.html#GRREGISTERINPUT"
>GrRegisterInput</A
>(), or a timeout occurs. Note
that a value of 0 for the timeout parameter doesn't mean "timeout after 0
milliseconds" but is in fact a magic number meaning "never time out".</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ep</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the GR_EVENT structure to return the event in</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>timeout</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of milliseconds to wait before timing out</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2079"
></A
><H3
><A
NAME="GRCHECKNEXTEVENT"
></A
>GrCheckNextEvent ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrCheckNextEvent (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
><P
>Gets the next event from the event queue if there is one, or returns
immediately with an event type of GR_EVENT_TYPE_NONE if it is empty.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ep</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the GR_EVENT structure to return the event in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2095"
></A
><H3
><A
NAME="GRPEEKEVENT"
></A
>GrPeekEvent ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>int GrPeekEvent (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified event structure with a copy of the next event on the
queue, without actually removing it from the queue. An event type of
GR_EVENT_TYPE_NONE is given if the queue is empty.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ep</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the GR_EVENT structure to return the event in</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> 1 if an event was returned, or 0 if the queue was empty</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-graphics.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-fonts.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>graphics</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>fonts</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-regions.html
0,0 → 1,1994
<HTML
><HEAD
><TITLE
>regions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="colours"
HREF="nano-x-colours.html"><LINK
REL="NEXT"
TITLE="selections"
HREF="nano-x-selections.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-colours.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-selections.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>regions</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2529"
></A
><H2
>Name</H2
>regions &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2532"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> <A
HREF="nano-x-regions.html#GRNEWREGION"
>GrNewRegion</A
> (void);
void <A
HREF="nano-x-regions.html#GRDESTROYREGION"
>GrDestroyRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);
void <A
HREF="nano-x-regions.html#GRUNIONRECTWITHREGION"
>GrUnionRectWithRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-RECT-CAPS"
>GR_RECT</GTKDOCLINK
> *rect);
void <A
HREF="nano-x-regions.html#GRUNIONREGION"
>GrUnionRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);
void <A
HREF="nano-x-regions.html#GRSUBTRACTREGION"
>GrSubtractRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);
void <A
HREF="nano-x-regions.html#GRXORREGION"
>GrXorRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);
void <A
HREF="nano-x-regions.html#GRINTERSECTREGION"
>GrIntersectRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);
void <A
HREF="nano-x-regions.html#GRSETGCREGION"
>GrSetGCRegion</A
> (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> <A
HREF="nano-x-regions.html#GRPOINTINREGION"
>GrPointInRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);
int <A
HREF="nano-x-regions.html#GRRECTINREGION"
>GrRectInRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> w,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> h);
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> <A
HREF="nano-x-regions.html#GREMPTYREGION"
>GrEmptyRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> <A
HREF="nano-x-regions.html#GREQUALREGION"
>GrEqualRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> rgn2);
void <A
HREF="nano-x-regions.html#GROFFSETREGION"
>GrOffsetRegion</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> dx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> dy);
int <A
HREF="nano-x-regions.html#GRGETREGIONBOX"
>GrGetRegionBox</A
> (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-RECT-CAPS"
>GR_RECT</GTKDOCLINK
> *rect);
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> <A
HREF="nano-x-regions.html#GRNEWPOLYGONREGION"
>GrNewPolygonRegion</A
> (int mode,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *points);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2590"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2593"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN2595"
></A
><H3
><A
NAME="GRNEWREGION"
></A
>GrNewRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> GrNewRegion (void);</PRE
></TD
></TR
></TABLE
><P
>Creates a new region structure and returns the ID used to refer to it.
The structure is initialised with a set of default parameters.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2611"
></A
><H3
><A
NAME="GRDESTROYREGION"
></A
>GrDestroyRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDestroyRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);</PRE
></TD
></TR
></TABLE
><P
>Destroys the region structure with the specified ID.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region structure to destroy</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2627"
></A
><H3
><A
NAME="GRUNIONRECTWITHREGION"
></A
>GrUnionRectWithRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrUnionRectWithRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-RECT-CAPS"
>GR_RECT</GTKDOCLINK
> *rect);</PRE
></TD
></TR
></TABLE
><P
>Makes a union of the specified region and the specified rectangle and
places the result back in the source region.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to modify</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rect</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> a pointer to the rectangle to add to the region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2648"
></A
><H3
><A
NAME="GRUNIONREGION"
></A
>GrUnionRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrUnionRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);</PRE
></TD
></TR
></TABLE
><P
>Makes a union of the specified source regions and places the result in the
specified destination region.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dst_rgn</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the destination region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the first source region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the second source region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2674"
></A
><H3
><A
NAME="GRSUBTRACTREGION"
></A
>GrSubtractRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSubtractRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);</PRE
></TD
></TR
></TABLE
><P
>Subtracts the second source region from the first source region and places
the result in the specified destination region.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dst_rgn</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the destination region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the first source region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the second source region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2700"
></A
><H3
><A
NAME="GRXORREGION"
></A
>GrXorRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrXorRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);</PRE
></TD
></TR
></TABLE
><P
>Performs a logical exclusive OR operation on the specified source regions
and places the result in the destination region. The destination region
will contain only the parts of the source regions which do not overlap.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dst_rgn</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the destination region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the first source region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the second source region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2726"
></A
><H3
><A
NAME="GRINTERSECTREGION"
></A
>GrIntersectRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrIntersectRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> dst_rgn,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> src_rgn2);</PRE
></TD
></TR
></TABLE
><P
>Calculates the intersection of the two specified source regions and places
the result in the specified destination region. The destination region
will contain only the parts of the source regions which overlap each other.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dst_rgn</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the destination region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the first source region</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>src_rgn2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the second source region</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2752"
></A
><H3
><A
NAME="GRSETGCREGION"
></A
>GrSetGCRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetGCRegion (<GTKDOCLINK
HREF="GR-GC-ID-CAPS"
>GR_GC_ID</GTKDOCLINK
> gc,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);</PRE
></TD
></TR
></TABLE
><P
>Sets the clip mask of the specified graphics context to the specified
region. Subsequent drawing operations using this graphics context will not
draw outside the specified region. The region ID can be set to 0 to remove
the clipping region from the specified graphics context.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>gc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the graphics context to set the clip mask of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to use as the clip mask</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2773"
></A
><H3
><A
NAME="GRPOINTINREGION"
></A
>GrPointInRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> GrPointInRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);</PRE
></TD
></TR
></TABLE
><P
>Tests whether the specified point is within the specified region, and
then returns either True or False depending on the result.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to examine</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the point to test for</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the point to test for</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> True if the point is within the region, or False otherwise</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2804"
></A
><H3
><A
NAME="GRRECTINREGION"
></A
>GrRectInRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>int GrRectInRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> w,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> h);</PRE
></TD
></TR
></TABLE
><P
>Tests whether the specified rectangle is contained within the specified
region. Returns GR_RECT_OUT if it is not inside it at all, GR_RECT_ALLIN
if it is completely contained within the region, or GR_RECT_PARTIN if
it is partially contained within the region.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to examine</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinates of the rectangle to test</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinates of the rectangle to test</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>w</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the rectangle to test</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>h</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the rectangle to test</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> GR_RECT_PARTIN, GR_RECT_ALLIN, or GR_RECT_OUT</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2844"
></A
><H3
><A
NAME="GREMPTYREGION"
></A
>GrEmptyRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> GrEmptyRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region);</PRE
></TD
></TR
></TABLE
><P
>Determines whether the specified region is empty, and returns GR_TRUE
if it is, or GR_FALSE otherwise.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to examine</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> GR_TRUE if the region is empty, or GR_FALSE if it is not</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2865"
></A
><H3
><A
NAME="GREQUALREGION"
></A
>GrEqualRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> GrEqualRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> rgn1,
<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> rgn2);</PRE
></TD
></TR
></TABLE
><P
>Determines whether the specified regions are identical, and returns GR_TRUE
if it is, or GR_FALSE otherwise.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rgn1</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the first region to examine</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rgn2</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the second region to examine</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> GR_TRUE if the regions are equal, or GR_FALSE otherwise</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2891"
></A
><H3
><A
NAME="GROFFSETREGION"
></A
>GrOffsetRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrOffsetRegion (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> dx,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> dy);</PRE
></TD
></TR
></TABLE
><P
>Offsets the specified region by the specified distance.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to offset</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the distance to offset the region by in the X axis</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>dy</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the distance to offset the region by in the Y axis</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2917"
></A
><H3
><A
NAME="GRGETREGIONBOX"
></A
>GrGetRegionBox ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>int GrGetRegionBox (<GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> region,
<GTKDOCLINK
HREF="GR-RECT-CAPS"
>GR_RECT</GTKDOCLINK
> *rect);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified rectangle structure with a bounding box that would
completely enclose the specified region, and also returns the type of the
specified region.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>region</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the region to get the bounding box of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rect</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a rectangle structure</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the region type</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2942"
></A
><H3
><A
NAME="GRNEWPOLYGONREGION"
></A
>GrNewPolygonRegion ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-REGION-ID-CAPS"
>GR_REGION_ID</GTKDOCLINK
> GrNewPolygonRegion (int mode,
<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> count,
<GTKDOCLINK
HREF="GR-POINT-CAPS"
>GR_POINT</GTKDOCLINK
> *points);</PRE
></TD
></TR
></TABLE
><P
>Creates a new region structure, fills it with the region described by the
specified polygon, and returns the ID used to refer to it.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>mode</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the polygon mode to use (GR_POLY_EVENODD or GR_POLY_WINDING)</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>count</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of points in the polygon</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>points</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to an array of point structures describing the polygon</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly allocated region structure, or 0 on error</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-colours.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-selections.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>colours</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>selections</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-colours.html
0,0 → 1,617
<HTML
><HEAD
><TITLE
>colours</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="pointer"
HREF="nano-x-pointer.html"><LINK
REL="NEXT"
TITLE="regions"
HREF="nano-x-regions.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-pointer.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-regions.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>colours</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2425"
></A
><H2
>Name</H2
>colours &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2428"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-colours.html#GRGETSYSTEMPALETTE"
>GrGetSystemPalette</A
> (<GTKDOCLINK
HREF="GR-PALETTE-CAPS"
>GR_PALETTE</GTKDOCLINK
> *pal);
void <A
HREF="nano-x-colours.html#GRSETSYSTEMPALETTE"
>GrSetSystemPalette</A
> (<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> first,
<GTKDOCLINK
HREF="GR-PALETTE-CAPS"
>GR_PALETTE</GTKDOCLINK
> *pal);
void <A
HREF="nano-x-colours.html#GRFINDCOLOR"
>GrFindColor</A
> (<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> c,
<GTKDOCLINK
HREF="GR-PIXELVAL-CAPS"
>GR_PIXELVAL</GTKDOCLINK
> *retpixel);
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> <A
HREF="nano-x-colours.html#GRGETSYSCOLOR"
>GrGetSysColor</A
> (int index);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2441"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2444"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN2446"
></A
><H3
><A
NAME="GRGETSYSTEMPALETTE"
></A
>GrGetSystemPalette ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetSystemPalette (<GTKDOCLINK
HREF="GR-PALETTE-CAPS"
>GR_PALETTE</GTKDOCLINK
> *pal);</PRE
></TD
></TR
></TABLE
><P
>Retrieves the system palette and places it in the specified palette
structure.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pal</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a palette structure to fill in with the system palette</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2462"
></A
><H3
><A
NAME="GRSETSYSTEMPALETTE"
></A
>GrSetSystemPalette ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetSystemPalette (<GTKDOCLINK
HREF="GR-COUNT-CAPS"
>GR_COUNT</GTKDOCLINK
> first,
<GTKDOCLINK
HREF="GR-PALETTE-CAPS"
>GR_PALETTE</GTKDOCLINK
> *pal);</PRE
></TD
></TR
></TABLE
><P
>Sets the system palette to the values stored in the specified palette
structure. The values before the specified first value are not set.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>first</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the first palette value to set</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pal</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a palette structure containing the new values</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2483"
></A
><H3
><A
NAME="GRFINDCOLOR"
></A
>GrFindColor ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFindColor (<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> c,
<GTKDOCLINK
HREF="GR-PIXELVAL-CAPS"
>GR_PIXELVAL</GTKDOCLINK
> *retpixel);</PRE
></TD
></TR
></TABLE
><P
>Calculates the pixel value to use to display the specified colour value.
The colour value is specified as a GR_COLOR, which is a 32 bit truecolour
value stored as RGBX. The pixel value size depends on the architecture.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>c</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour value to find</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>retpixel</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the returned pixel value</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2504"
></A
><H3
><A
NAME="GRGETSYSCOLOR"
></A
>GrGetSysColor ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> GrGetSysColor (int index);</PRE
></TD
></TR
></TABLE
><P
></P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>index</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> an index into the server's colour look up table</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour found at the specified index</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-pointer.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-regions.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>pointer</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>regions</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-window.html
0,0 → 1,2491
<HTML
><HEAD
><TITLE
>window</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="general"
HREF="nano-x-general.html"><LINK
REL="NEXT"
TITLE="graphics"
HREF="nano-x-graphics.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-general.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-graphics.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>window</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN137"
></A
><H2
>Name</H2
>window &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN140"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> <A
HREF="nano-x-window.html#GRNEWWINDOW"
>GrNewWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> parent,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> bordersize,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> bordercolor);
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> <A
HREF="nano-x-window.html#GRNEWPIXMAP"
>GrNewPixmap</A
> (<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
void *addr);
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> <A
HREF="nano-x-window.html#GRNEWINPUTWINDOW"
>GrNewInputWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> parent,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);
void <A
HREF="nano-x-window.html#GRDESTROYWINDOW"
>GrDestroyWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRMAPWINDOW"
>GrMapWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRUNMAPWINDOW"
>GrUnmapWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRRAISEWINDOW"
>GrRaiseWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRLOWERWINDOW"
>GrLowerWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRMOVEWINDOW"
>GrMoveWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);
void <A
HREF="nano-x-window.html#GRRESIZEWINDOW"
>GrResizeWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);
void <A
HREF="nano-x-window.html#GRREPARENTWINDOW"
>GrReparentWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> pwid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);
void <A
HREF="nano-x-window.html#GRGETWINDOWINFO"
>GrGetWindowInfo</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-INFO-CAPS"
>GR_WINDOW_INFO</GTKDOCLINK
> *infoptr);
void <A
HREF="nano-x-window.html#GRSETWMPROPERTIES"
>GrSetWMProperties</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WM-PROPERTIES-CAPS"
>GR_WM_PROPERTIES</GTKDOCLINK
> *props);
void <A
HREF="nano-x-window.html#GRGETWMPROPERTIES"
>GrGetWMProperties</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WM-PROPERTIES-CAPS"
>GR_WM_PROPERTIES</GTKDOCLINK
> *props);
void <A
HREF="nano-x-window.html#GRSETFOCUS"
>GrSetFocus</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> <A
HREF="nano-x-window.html#GRGETFOCUS"
>GrGetFocus</A
> (void);
void <A
HREF="nano-x-window.html#GRSETBORDERCOLOR"
>GrSetBorderColor</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> color);
void <A
HREF="nano-x-window.html#GRSETBACKGROUNDPIXMAP"
>GrSetBackgroundPixmap</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> pixmap,
int flags);
void <A
HREF="nano-x-window.html#GRCLEARWINDOW"
>GrClearWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> exposeflag);
void <A
HREF="nano-x-window.html#GRCLOSEWINDOW"
>GrCloseWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);
void <A
HREF="nano-x-window.html#GRKILLWINDOW"
>GrKillWindow</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN213"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN216"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN218"
></A
><H3
><A
NAME="GRNEWWINDOW"
></A
>GrNewWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> GrNewWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> parent,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> bordersize,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> background,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> bordercolor);</PRE
></TD
></TR
></TABLE
><P
>Create a new window with the specified parent and window attributes.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>parent</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the new window relative to the parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the new window relative to the parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the new window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the new window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>bordersize</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the window border</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>background</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour of the window background</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>bordercolor</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the colour of the window border</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created window</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN274"
></A
><H3
><A
NAME="GRNEWPIXMAP"
></A
>GrNewPixmap ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> GrNewPixmap (<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height,
void *addr);</PRE
></TD
></TR
></TABLE
><P
>Create a new server side pixmap (an offscreen drawing area which can be
copied into a window using a GrCopyArea call) of the specified width and
height.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the pixmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the pixmap</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>addr</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> currently unused in client/server mode</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created pixmap</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN304"
></A
><H3
><A
NAME="GRNEWINPUTWINDOW"
></A
>GrNewInputWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> GrNewInputWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> parent,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);</PRE
></TD
></TR
></TABLE
><P
>Create a new input-only window with the specified dimensions which is a
child of the specified parent window.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>parent</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to use as the parent of the new window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate of the new window relative to the parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate of the new window relative to the parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width of the new window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height of the new window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the newly created window</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN345"
></A
><H3
><A
NAME="GRDESTROYWINDOW"
></A
>GrDestroyWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDestroyWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Recursively unmaps and frees the data structures associated with the
specified window and all of its children.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to destroy</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN361"
></A
><H3
><A
NAME="GRMAPWINDOW"
></A
>GrMapWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrMapWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Recursively maps (makes visible) the specified window and all of the
child windows which have a sufficient map count. The border and background
of the window are painted, and an exposure event is generated for the
window and every child which becomes visible.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to map</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN377"
></A
><H3
><A
NAME="GRUNMAPWINDOW"
></A
>GrUnmapWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrUnmapWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Recursively unmaps (makes invisible) the specified window and all of the
child windows.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to unmap</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN393"
></A
><H3
><A
NAME="GRRAISEWINDOW"
></A
>GrRaiseWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrRaiseWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Places the specified window at the top of its parents drawing stack, above
all of its sibling windows.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to raise</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN409"
></A
><H3
><A
NAME="GRLOWERWINDOW"
></A
>GrLowerWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrLowerWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Places the specified window at the bottom of its parents drawing stack,
below all of its sibling windows.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to lower</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN425"
></A
><H3
><A
NAME="GRMOVEWINDOW"
></A
>GrMoveWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrMoveWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);</PRE
></TD
></TR
></TABLE
><P
>Moves the specified window to the specified position relative to its
parent window.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to move</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to move the window to relative to its parent.</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to move the window to relative to its parent.</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN451"
></A
><H3
><A
NAME="GRRESIZEWINDOW"
></A
>GrResizeWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrResizeWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> width,
<GTKDOCLINK
HREF="GR-SIZE-CAPS"
>GR_SIZE</GTKDOCLINK
> height);</PRE
></TD
></TR
></TABLE
><P
>Resizes the specified window to be the specified width and height.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to resize</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>width</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the width to resize the window to</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the height to resize the window to</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN477"
></A
><H3
><A
NAME="GRREPARENTWINDOW"
></A
>GrReparentWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrReparentWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> pwid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> x,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> y);</PRE
></TD
></TR
></TABLE
><P
>Changes the parent window of the specified window to the specified parent
window and places it at the specified coordinates relative to the new
parent.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to reparent</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pwid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the new parent window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>x</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the X coordinate to place the window at relative to the new parent</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>y</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the Y coordinate to place the window at relative to the new parent</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN508"
></A
><H3
><A
NAME="GRGETWINDOWINFO"
></A
>GrGetWindowInfo ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetWindowInfo (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-INFO-CAPS"
>GR_WINDOW_INFO</GTKDOCLINK
> *infoptr);</PRE
></TD
></TR
></TABLE
><P
>Fills in a GR_WINDOW_INFO structure with information regarding the window
with the specified window ID.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to retrieve information about</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>infoptr</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_WINDOW_INFO structure to return the information in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN529"
></A
><H3
><A
NAME="GRSETWMPROPERTIES"
></A
>GrSetWMProperties ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetWMProperties (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WM-PROPERTIES-CAPS"
>GR_WM_PROPERTIES</GTKDOCLINK
> *props);</PRE
></TD
></TR
></TABLE
><P
>Copies the provided GR_WM_PROPERTIES structure into the the GR_WM_PROPERTIES
structure of the specified window id.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the WM properties of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>props</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_WM_PROPERTIES structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN550"
></A
><H3
><A
NAME="GRGETWMPROPERTIES"
></A
>GrGetWMProperties ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetWMProperties (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WM-PROPERTIES-CAPS"
>GR_WM_PROPERTIES</GTKDOCLINK
> *props);</PRE
></TD
></TR
></TABLE
><P
>Reads the GR_WM_PROPERTIES structure for the window with the specified
id and fills in the provided structure with the information.
It is the callers responsibility to free the title member as it is allocated
dynamically. The title field will be set to NULL if the window has no title.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to retreive the WM properties of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>props</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_WM_PROPERTIES structure to fill in</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN571"
></A
><H3
><A
NAME="GRSETFOCUS"
></A
>GrSetFocus ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetFocus (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Sets the keyboard focus to the specified window.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the focus to</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN587"
></A
><H3
><A
NAME="GRGETFOCUS"
></A
>GrGetFocus ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> GrGetFocus (void);</PRE
></TD
></TR
></TABLE
><P
></P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window which currently has the keyboard focus</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN603"
></A
><H3
><A
NAME="GRSETBORDERCOLOR"
></A
>GrSetBorderColor ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetBorderColor (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-COLOR-CAPS"
>GR_COLOR</GTKDOCLINK
> color);</PRE
></TD
></TR
></TABLE
><P
>Sets the border colour of the specified window to the specified colour.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the border colour of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>color</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN624"
></A
><H3
><A
NAME="GRSETBACKGROUNDPIXMAP"
></A
>GrSetBackgroundPixmap ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetBackgroundPixmap (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> pixmap,
int flags);</PRE
></TD
></TR
></TABLE
><P
>Sets the background of the specified window to the specified pixmap.
The flags which specify how to draw the pixmap (in the top left of the
window, in the centre of the window, tiled, etc.) are those which start with
GR_BACKGROUND_ in nano-X.h. If the pixmap value is 0, the server will
disable the background pixmap and return to using a solid colour fill.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of the window to set the background of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>pixmap</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of the pixmap to use as the background</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> flags specifying how to draw the pixmap onto the window</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN649"
></A
><H3
><A
NAME="GRCLEARWINDOW"
></A
>GrClearWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrClearWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-BOOL-CAPS"
>GR_BOOL</GTKDOCLINK
> exposeflag);</PRE
></TD
></TR
></TABLE
><P
>Clears the specified window by setting it to its background color.
If the exposeflag parameter is non zero, an exposure event is generated for
the window after it has been cleared.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to clear</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>exposeflag</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> a flag indicating whether to also generate an exposure event</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN670"
></A
><H3
><A
NAME="GRCLOSEWINDOW"
></A
>GrCloseWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrCloseWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Sends a CLOSE_REQ event to the specified window if the client has selected
to receive CLOSE_REQ events on this window. Used to request an application
to shut down but not force it to do so immediately, so the application can
ask whether to save changed files before shutting down cleanly.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to send the CLOSE_REQ event to</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN686"
></A
><H3
><A
NAME="GRKILLWINDOW"
></A
>GrKillWindow ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrKillWindow (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid);</PRE
></TD
></TR
></TABLE
><P
>Forcibly disconnects the client which owns this window with the specified
ID number. Used to kill an application which has locked up and is not
responding to CLOSE_REQ events.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to kill</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-general.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-graphics.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>general</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>graphics</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/index.sgml
0,0 → 1,114
<ANCHOR id ="NANO-X-GENERAL" href="--module=nano-X/nano-x-general.html">
<ANCHOR id ="GRFLUSH" href="--module=nano-X/nano-x-general.html#GRFLUSH">
<ANCHOR id ="GROPEN" href="--module=nano-X/nano-x-general.html#GROPEN">
<ANCHOR id ="GRCLOSE" href="--module=nano-X/nano-x-general.html#GRCLOSE">
<ANCHOR id ="GRMAINLOOP" href="--module=nano-X/nano-x-general.html#GRMAINLOOP">
<ANCHOR id ="GRGETSCREENINFO" href="--module=nano-X/nano-x-general.html#GRGETSCREENINFO">
<ANCHOR id ="GRSETERRORHANDLER" href="--module=nano-X/nano-x-general.html#GRSETERRORHANDLER">
<ANCHOR id ="GRDEFAULTERRORHANDLER" href="--module=nano-X/nano-x-general.html#GRDEFAULTERRORHANDLER">
<ANCHOR id ="NANO-X-WINDOW" href="--module=nano-X/nano-x-window.html">
<ANCHOR id ="GRNEWWINDOW" href="--module=nano-X/nano-x-window.html#GRNEWWINDOW">
<ANCHOR id ="GRNEWPIXMAP" href="--module=nano-X/nano-x-window.html#GRNEWPIXMAP">
<ANCHOR id ="GRNEWINPUTWINDOW" href="--module=nano-X/nano-x-window.html#GRNEWINPUTWINDOW">
<ANCHOR id ="GRDESTROYWINDOW" href="--module=nano-X/nano-x-window.html#GRDESTROYWINDOW">
<ANCHOR id ="GRMAPWINDOW" href="--module=nano-X/nano-x-window.html#GRMAPWINDOW">
<ANCHOR id ="GRUNMAPWINDOW" href="--module=nano-X/nano-x-window.html#GRUNMAPWINDOW">
<ANCHOR id ="GRRAISEWINDOW" href="--module=nano-X/nano-x-window.html#GRRAISEWINDOW">
<ANCHOR id ="GRLOWERWINDOW" href="--module=nano-X/nano-x-window.html#GRLOWERWINDOW">
<ANCHOR id ="GRMOVEWINDOW" href="--module=nano-X/nano-x-window.html#GRMOVEWINDOW">
<ANCHOR id ="GRRESIZEWINDOW" href="--module=nano-X/nano-x-window.html#GRRESIZEWINDOW">
<ANCHOR id ="GRREPARENTWINDOW" href="--module=nano-X/nano-x-window.html#GRREPARENTWINDOW">
<ANCHOR id ="GRGETWINDOWINFO" href="--module=nano-X/nano-x-window.html#GRGETWINDOWINFO">
<ANCHOR id ="GRSETWMPROPERTIES" href="--module=nano-X/nano-x-window.html#GRSETWMPROPERTIES">
<ANCHOR id ="GRGETWMPROPERTIES" href="--module=nano-X/nano-x-window.html#GRGETWMPROPERTIES">
<ANCHOR id ="GRSETFOCUS" href="--module=nano-X/nano-x-window.html#GRSETFOCUS">
<ANCHOR id ="GRGETFOCUS" href="--module=nano-X/nano-x-window.html#GRGETFOCUS">
<ANCHOR id ="GRSETBORDERCOLOR" href="--module=nano-X/nano-x-window.html#GRSETBORDERCOLOR">
<ANCHOR id ="GRSETBACKGROUNDPIXMAP" href="--module=nano-X/nano-x-window.html#GRSETBACKGROUNDPIXMAP">
<ANCHOR id ="GRCLEARWINDOW" href="--module=nano-X/nano-x-window.html#GRCLEARWINDOW">
<ANCHOR id ="GRCLOSEWINDOW" href="--module=nano-X/nano-x-window.html#GRCLOSEWINDOW">
<ANCHOR id ="GRKILLWINDOW" href="--module=nano-X/nano-x-window.html#GRKILLWINDOW">
<ANCHOR id ="NANO-X-GRAPHICS" href="--module=nano-X/nano-x-graphics.html">
<ANCHOR id ="GRNEWGC" href="--module=nano-X/nano-x-graphics.html#GRNEWGC">
<ANCHOR id ="GRCOPYGC" href="--module=nano-X/nano-x-graphics.html#GRCOPYGC">
<ANCHOR id ="GRGETGCINFO" href="--module=nano-X/nano-x-graphics.html#GRGETGCINFO">
<ANCHOR id ="GRDESTROYGC" href="--module=nano-X/nano-x-graphics.html#GRDESTROYGC">
<ANCHOR id ="GRLINE" href="--module=nano-X/nano-x-graphics.html#GRLINE">
<ANCHOR id ="GRPOINT" href="--module=nano-X/nano-x-graphics.html#GRPOINT">
<ANCHOR id ="GRPOINTS" href="--module=nano-X/nano-x-graphics.html#GRPOINTS">
<ANCHOR id ="GRRECT" href="--module=nano-X/nano-x-graphics.html#GRRECT">
<ANCHOR id ="GRFILLRECT" href="--module=nano-X/nano-x-graphics.html#GRFILLRECT">
<ANCHOR id ="GRPOLY" href="--module=nano-X/nano-x-graphics.html#GRPOLY">
<ANCHOR id ="GRFILLPOLY" href="--module=nano-X/nano-x-graphics.html#GRFILLPOLY">
<ANCHOR id ="GRELLIPSE" href="--module=nano-X/nano-x-graphics.html#GRELLIPSE">
<ANCHOR id ="GRFILLELLIPSE" href="--module=nano-X/nano-x-graphics.html#GRFILLELLIPSE">
<ANCHOR id ="GRARC" href="--module=nano-X/nano-x-graphics.html#GRARC">
<ANCHOR id ="GRARCANGLE" href="--module=nano-X/nano-x-graphics.html#GRARCANGLE">
<ANCHOR id ="GRSETGCFOREGROUND" href="--module=nano-X/nano-x-graphics.html#GRSETGCFOREGROUND">
<ANCHOR id ="GRSETGCBACKGROUND" href="--module=nano-X/nano-x-graphics.html#GRSETGCBACKGROUND">
<ANCHOR id ="GRSETGCUSEBACKGROUND" href="--module=nano-X/nano-x-graphics.html#GRSETGCUSEBACKGROUND">
<ANCHOR id ="GRSETGCMODE" href="--module=nano-X/nano-x-graphics.html#GRSETGCMODE">
<ANCHOR id ="GRSETGCFONT" href="--module=nano-X/nano-x-graphics.html#GRSETGCFONT">
<ANCHOR id ="GRGETGCTEXTSIZE" href="--module=nano-X/nano-x-graphics.html#GRGETGCTEXTSIZE">
<ANCHOR id ="GRREADAREA" href="--module=nano-X/nano-x-graphics.html#GRREADAREA">
<ANCHOR id ="GRAREA" href="--module=nano-X/nano-x-graphics.html#GRAREA">
<ANCHOR id ="GRCOPYAREA" href="--module=nano-X/nano-x-graphics.html#GRCOPYAREA">
<ANCHOR id ="GRBITMAP" href="--module=nano-X/nano-x-graphics.html#GRBITMAP">
<ANCHOR id ="GRFREEIMAGE" href="--module=nano-X/nano-x-graphics.html#GRFREEIMAGE">
<ANCHOR id ="GRGETIMAGEINFO" href="--module=nano-X/nano-x-graphics.html#GRGETIMAGEINFO">
<ANCHOR id ="GRDRAWIMAGEFROMFILE" href="--module=nano-X/nano-x-graphics.html#GRDRAWIMAGEFROMFILE">
<ANCHOR id ="GRLOADIMAGEFROMFILE" href="--module=nano-X/nano-x-graphics.html#GRLOADIMAGEFROMFILE">
<ANCHOR id ="GRDRAWIMAGETOFIT" href="--module=nano-X/nano-x-graphics.html#GRDRAWIMAGETOFIT">
<ANCHOR id ="GRDRAWIMAGEBITS" href="--module=nano-X/nano-x-graphics.html#GRDRAWIMAGEBITS">
<ANCHOR id ="GRTEXT" href="--module=nano-X/nano-x-graphics.html#GRTEXT">
<ANCHOR id ="NANO-X-EVENTS" href="--module=nano-X/nano-x-events.html">
<ANCHOR id ="GRSELECTEVENTS" href="--module=nano-X/nano-x-events.html#GRSELECTEVENTS">
<ANCHOR id ="GRGETNEXTEVENT" href="--module=nano-X/nano-x-events.html#GRGETNEXTEVENT">
<ANCHOR id ="GRGETNEXTEVENTTIMEOUT" href="--module=nano-X/nano-x-events.html#GRGETNEXTEVENTTIMEOUT">
<ANCHOR id ="GRCHECKNEXTEVENT" href="--module=nano-X/nano-x-events.html#GRCHECKNEXTEVENT">
<ANCHOR id ="GRPEEKEVENT" href="--module=nano-X/nano-x-events.html#GRPEEKEVENT">
<ANCHOR id ="NANO-X-FONTS" href="--module=nano-X/nano-x-fonts.html">
<ANCHOR id ="GRCREATEFONT" href="--module=nano-X/nano-x-fonts.html#GRCREATEFONT">
<ANCHOR id ="GRSETFONTSIZE" href="--module=nano-X/nano-x-fonts.html#GRSETFONTSIZE">
<ANCHOR id ="GRSETFONTROTATION" href="--module=nano-X/nano-x-fonts.html#GRSETFONTROTATION">
<ANCHOR id ="GRSETFONTATTR" href="--module=nano-X/nano-x-fonts.html#GRSETFONTATTR">
<ANCHOR id ="GRDESTROYFONT" href="--module=nano-X/nano-x-fonts.html#GRDESTROYFONT">
<ANCHOR id ="GRGETFONTINFO" href="--module=nano-X/nano-x-fonts.html#GRGETFONTINFO">
<ANCHOR id ="NANO-X-POINTER" href="--module=nano-X/nano-x-pointer.html">
<ANCHOR id ="GRSETCURSOR" href="--module=nano-X/nano-x-pointer.html#GRSETCURSOR">
<ANCHOR id ="GRMOVECURSOR" href="--module=nano-X/nano-x-pointer.html#GRMOVECURSOR">
<ANCHOR id ="GRINJECTPOINTEREVENT" href="--module=nano-X/nano-x-pointer.html#GRINJECTPOINTEREVENT">
<ANCHOR id ="NANO-X-COLOURS" href="--module=nano-X/nano-x-colours.html">
<ANCHOR id ="GRGETSYSTEMPALETTE" href="--module=nano-X/nano-x-colours.html#GRGETSYSTEMPALETTE">
<ANCHOR id ="GRSETSYSTEMPALETTE" href="--module=nano-X/nano-x-colours.html#GRSETSYSTEMPALETTE">
<ANCHOR id ="GRFINDCOLOR" href="--module=nano-X/nano-x-colours.html#GRFINDCOLOR">
<ANCHOR id ="GRGETSYSCOLOR" href="--module=nano-X/nano-x-colours.html#GRGETSYSCOLOR">
<ANCHOR id ="NANO-X-REGIONS" href="--module=nano-X/nano-x-regions.html">
<ANCHOR id ="GRNEWREGION" href="--module=nano-X/nano-x-regions.html#GRNEWREGION">
<ANCHOR id ="GRDESTROYREGION" href="--module=nano-X/nano-x-regions.html#GRDESTROYREGION">
<ANCHOR id ="GRUNIONRECTWITHREGION" href="--module=nano-X/nano-x-regions.html#GRUNIONRECTWITHREGION">
<ANCHOR id ="GRUNIONREGION" href="--module=nano-X/nano-x-regions.html#GRUNIONREGION">
<ANCHOR id ="GRSUBTRACTREGION" href="--module=nano-X/nano-x-regions.html#GRSUBTRACTREGION">
<ANCHOR id ="GRXORREGION" href="--module=nano-X/nano-x-regions.html#GRXORREGION">
<ANCHOR id ="GRINTERSECTREGION" href="--module=nano-X/nano-x-regions.html#GRINTERSECTREGION">
<ANCHOR id ="GRSETGCREGION" href="--module=nano-X/nano-x-regions.html#GRSETGCREGION">
<ANCHOR id ="GRPOINTINREGION" href="--module=nano-X/nano-x-regions.html#GRPOINTINREGION">
<ANCHOR id ="GRRECTINREGION" href="--module=nano-X/nano-x-regions.html#GRRECTINREGION">
<ANCHOR id ="GREMPTYREGION" href="--module=nano-X/nano-x-regions.html#GREMPTYREGION">
<ANCHOR id ="GREQUALREGION" href="--module=nano-X/nano-x-regions.html#GREQUALREGION">
<ANCHOR id ="GROFFSETREGION" href="--module=nano-X/nano-x-regions.html#GROFFSETREGION">
<ANCHOR id ="GRGETREGIONBOX" href="--module=nano-X/nano-x-regions.html#GRGETREGIONBOX">
<ANCHOR id ="GRNEWPOLYGONREGION" href="--module=nano-X/nano-x-regions.html#GRNEWPOLYGONREGION">
<ANCHOR id ="NANO-X-SELECTIONS" href="--module=nano-X/nano-x-selections.html">
<ANCHOR id ="GRSETSELECTIONOWNER" href="--module=nano-X/nano-x-selections.html#GRSETSELECTIONOWNER">
<ANCHOR id ="GRGETSELECTIONOWNER" href="--module=nano-X/nano-x-selections.html#GRGETSELECTIONOWNER">
<ANCHOR id ="GRREQUESTCLIENTDATA" href="--module=nano-X/nano-x-selections.html#GRREQUESTCLIENTDATA">
<ANCHOR id ="GRSENDCLIENTDATA" href="--module=nano-X/nano-x-selections.html#GRSENDCLIENTDATA">
<ANCHOR id ="NANO-X-MISC" href="--module=nano-X/nano-x-misc.html">
<ANCHOR id ="GRREQSHMCMDS" href="--module=nano-X/nano-x-misc.html#GRREQSHMCMDS">
<ANCHOR id ="GRINJECTKEYBOARDEVENT" href="--module=nano-X/nano-x-misc.html#GRINJECTKEYBOARDEVENT">
<ANCHOR id ="GRREGISTERINPUT" href="--module=nano-X/nano-x-misc.html#GRREGISTERINPUT">
<ANCHOR id ="GRPREPARESELECT" href="--module=nano-X/nano-x-misc.html#GRPREPARESELECT">
<ANCHOR id ="GRSERVICESELECT" href="--module=nano-X/nano-x-misc.html#GRSERVICESELECT">
<ANCHOR id ="GRBELL" href="--module=nano-X/nano-x-misc.html#GRBELL">
<ANCHOR id ="GRSETSCREENSAVERTIMEOUT" href="--module=nano-X/nano-x-misc.html#GRSETSCREENSAVERTIMEOUT">
/nano-X/html/nano-x-selections.html
0,0 → 1,824
<HTML
><HEAD
><TITLE
>selections</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="regions"
HREF="nano-x-regions.html"><LINK
REL="NEXT"
TITLE="misc"
HREF="nano-x-misc.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-regions.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-misc.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>selections</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2977"
></A
><H2
>Name</H2
>selections &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2980"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-selections.html#GRSETSELECTIONOWNER"
>GrSetSelectionOwner</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> *typelist);
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> <A
HREF="nano-x-selections.html#GRGETSELECTIONOWNER"
>GrGetSelectionOwner</A
> (<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> **typelist);
void <A
HREF="nano-x-selections.html#GRREQUESTCLIENTDATA"
>GrRequestClientData</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> rid,
<GTKDOCLINK
HREF="GR-SERIALNO-CAPS"
>GR_SERIALNO</GTKDOCLINK
> serial,
<GTKDOCLINK
HREF="GR-MIMETYPE-CAPS"
>GR_MIMETYPE</GTKDOCLINK
> mimetype);
void <A
HREF="nano-x-selections.html#GRSENDCLIENTDATA"
>GrSendClientData</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> did,
<GTKDOCLINK
HREF="GR-SERIALNO-CAPS"
>GR_SERIALNO</GTKDOCLINK
> serial,
<GTKDOCLINK
HREF="GR-LENGTH-CAPS"
>GR_LENGTH</GTKDOCLINK
> len,
<GTKDOCLINK
HREF="GR-LENGTH-CAPS"
>GR_LENGTH</GTKDOCLINK
> thislen,
void *data);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3000"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3003"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN3005"
></A
><H3
><A
NAME="GRSETSELECTIONOWNER"
></A
>GrSetSelectionOwner ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetSelectionOwner (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> *typelist);</PRE
></TD
></TR
></TABLE
><P
>Sets the current selection (otherwise known as the clipboard) ownership
to the specified window. Specifying an owner of 0 disowns the selection.
The typelist argument is a list of mime types (seperated by space
characters) which the window is able to supply the data as. At least one
type must be specified unless you are disowning the selection (typically
text/plain for plain ASCII text or text/uri-list for a filename).</P
><P
>The window which owns the current selection must be prepared to handle
SELECTION_LOST events (received when another window takes ownership of the
selection) and CLIENT_DATA_REQ events (received when a client wishes to
retreive the selection data).</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to set the selection owner to</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>typelist</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> list of mime types selection data can be supplied as</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3027"
></A
><H3
><A
NAME="GRGETSELECTIONOWNER"
></A
>GrGetSelectionOwner ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> GrGetSelectionOwner (<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> **typelist);</PRE
></TD
></TR
></TABLE
><P
>Finds the window which currently owns the selection and returns its ID,
or 0 if no window currently owns the selection. A pointer to the list of
mime types the selection owner is capable of supplying is placed in the
pointer specified by the typelist argument. The typelist is null terminated,
and the fields are seperated by space characters. It is the callers
responsibility to free the typelist string, as it is allocated dynamically.
If the allocation fails, it will be set to a NULL pointer, so remember to
check the value of it before using it.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>typelist</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer used to return the list of available mime types </TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window which currently owns the selection, or 0</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3048"
></A
><H3
><A
NAME="GRREQUESTCLIENTDATA"
></A
>GrRequestClientData ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrRequestClientData (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> rid,
<GTKDOCLINK
HREF="GR-SERIALNO-CAPS"
>GR_SERIALNO</GTKDOCLINK
> serial,
<GTKDOCLINK
HREF="GR-MIMETYPE-CAPS"
>GR_MIMETYPE</GTKDOCLINK
> mimetype);</PRE
></TD
></TR
></TABLE
><P
>Sends a CLIENT_DATA_REQ event to the specified window. Used for requesting
both selection and "drag and drop" data. The mimetype argument specifies
the format of the data you would like to receive, as an index into the list
returned by GrGetSelectionOwner (the first type in the list is index 0).
The server makes no guarantees as to when, or even if, the client will
reply to the request. If the client does reply, the reply will take the
form of one or more CLIENT_DATA events. The request serial number is
typically a unique ID which the client can assign to a request in order for
it to be able to keep track of transfers (CLIENT_DATA events contain the
same number in the sid field). Remember to free the data field of the
CLIENT_DATA events as they are dynamically allocated. Also note that if
the allocation fails the data field will be set to NULL, so you should
check the value before using it.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window requesting the data</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window to request the data from</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>serial</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the serial number of the request</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>mimetype</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of the desired mime type to request</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3079"
></A
><H3
><A
NAME="GRSENDCLIENTDATA"
></A
>GrSendClientData ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSendClientData (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> did,
<GTKDOCLINK
HREF="GR-SERIALNO-CAPS"
>GR_SERIALNO</GTKDOCLINK
> serial,
<GTKDOCLINK
HREF="GR-LENGTH-CAPS"
>GR_LENGTH</GTKDOCLINK
> len,
<GTKDOCLINK
HREF="GR-LENGTH-CAPS"
>GR_LENGTH</GTKDOCLINK
> thislen,
void *data);</PRE
></TD
></TR
></TABLE
><P
>Used as the response to a CLIENT_DATA_REQ event. Sends the specified data
of the specified length to the specified window using the specified source
window ID and transfer serial number. Any fragmentation of the data into
multiple CLIENT_DATA events which is required is handled automatically.
The serial number should always be set to the value supplied by the
CLIENT_DATA_REQ event. The thislen parameter is used internally to split
the data up into packets. It should be set to the same value as the len
parameter.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the window sending the data</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>did</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the destination window</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>serial</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>len</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of bytes of data to transfer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>thislen</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of bytes in this packet</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>data</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the data to transfer</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-regions.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-misc.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>regions</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>misc</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/index.html
0,0 → 1,183
<HTML
><HEAD
><TITLE
>Nano-X API Reference Manual</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="NEXT"
TITLE="libnano-X"
HREF="libnano-x.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="BOOK"
><DIV
CLASS="TITLEPAGE"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
ALIGN="center"
VALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="7"
><P
CLASS="TITLE"
><A
NAME="AEN2"
>Nano-X API Reference Manual</A
></P
></FONT
></TH
></TR
></TABLE
></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="libnano-x.html"
>libnano-X</A
></DT
><DD
><DL
><DT
><A
HREF="nano-x-general.html"
>general</A
> &#8212; </DT
><DT
><A
HREF="nano-x-window.html"
>window</A
> &#8212; </DT
><DT
><A
HREF="nano-x-graphics.html"
>graphics</A
> &#8212; </DT
><DT
><A
HREF="nano-x-events.html"
>events</A
> &#8212; </DT
><DT
><A
HREF="nano-x-fonts.html"
>fonts</A
> &#8212; </DT
><DT
><A
HREF="nano-x-pointer.html"
>pointer</A
> &#8212; </DT
><DT
><A
HREF="nano-x-colours.html"
>colours</A
> &#8212; </DT
><DT
><A
HREF="nano-x-regions.html"
>regions</A
> &#8212; </DT
><DT
><A
HREF="nano-x-selections.html"
>selections</A
> &#8212; </DT
><DT
><A
HREF="nano-x-misc.html"
>misc</A
> &#8212; </DT
></DL
></DD
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
>&nbsp;</TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&nbsp;</B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&nbsp;</B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
>&nbsp;</TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>libnano-X</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/libnano-x.html
0,0 → 1,264
<HTML
><HEAD
><TITLE
>libnano-X</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="NEXT"
TITLE="general"
HREF="nano-x-general.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&nbsp;</B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-general.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="LIBNANO-X"
>libnano-X</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="nano-x-general.html"
>general</A
> &#8212; </DT
><DT
><A
HREF="nano-x-window.html"
>window</A
> &#8212; </DT
><DT
><A
HREF="nano-x-graphics.html"
>graphics</A
> &#8212; </DT
><DT
><A
HREF="nano-x-events.html"
>events</A
> &#8212; </DT
><DT
><A
HREF="nano-x-fonts.html"
>fonts</A
> &#8212; </DT
><DT
><A
HREF="nano-x-pointer.html"
>pointer</A
> &#8212; </DT
><DT
><A
HREF="nano-x-colours.html"
>colours</A
> &#8212; </DT
><DT
><A
HREF="nano-x-regions.html"
>regions</A
> &#8212; </DT
><DT
><A
HREF="nano-x-selections.html"
>selections</A
> &#8212; </DT
><DT
><A
HREF="nano-x-misc.html"
>misc</A
> &#8212; </DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&nbsp;</B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-general.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Nano-X API Reference Manual</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>general</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-fonts.html
0,0 → 1,876
<HTML
><HEAD
><TITLE
>fonts</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="events"
HREF="nano-x-events.html"><LINK
REL="NEXT"
TITLE="pointer"
HREF="nano-x-pointer.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-events.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-pointer.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>fonts</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2120"
></A
><H2
>Name</H2
>fonts &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2123"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> <A
HREF="nano-x-fonts.html#GRCREATEFONT"
>GrCreateFont</A
> (<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> *name,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-LOGFONT-CAPS"
>GR_LOGFONT</GTKDOCLINK
> *plogfont);
void <A
HREF="nano-x-fonts.html#GRSETFONTSIZE"
>GrSetFontSize</A
> (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> size);
void <A
HREF="nano-x-fonts.html#GRSETFONTROTATION"
>GrSetFontRotation</A
> (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
int tenthsdegrees);
void <A
HREF="nano-x-fonts.html#GRSETFONTATTR"
>GrSetFontAttr</A
> (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
int setflags,
int clrflags);
void <A
HREF="nano-x-fonts.html#GRDESTROYFONT"
>GrDestroyFont</A
> (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid);
void <A
HREF="nano-x-fonts.html#GRGETFONTINFO"
>GrGetFontInfo</A
> (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> font,
<GTKDOCLINK
HREF="GR-FONT-INFO-CAPS"
>GR_FONT_INFO</GTKDOCLINK
> *fip);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2143"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2146"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN2148"
></A
><H3
><A
NAME="GRCREATEFONT"
></A
>GrCreateFont ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> GrCreateFont (<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> *name,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> height,
<GTKDOCLINK
HREF="GR-LOGFONT-CAPS"
>GR_LOGFONT</GTKDOCLINK
> *plogfont);</PRE
></TD
></TR
></TABLE
><P
>Attempts to locate a font with the desired attributes and returns a font
ID number which can be used to refer to it. If the plogfont argument is
not NULL, the values in that structure will be used to choose a font.
Otherwise, if the height is non zero, the built in font with the closest
height to that specified will be used. If the height is zero, the built
in font with the specified name will be used. If the desired font is not
found, the first built in font will be returned as a last resort.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>name</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> string containing the name of a built in font to look for</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>height</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the desired height of the font</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>plogfont</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a LOGFONT structure</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> a font ID number which can be used to refer to the font</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2179"
></A
><H3
><A
NAME="GRSETFONTSIZE"
></A
>GrSetFontSize ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetFontSize (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
<GTKDOCLINK
HREF="GR-COORD-CAPS"
>GR_COORD</GTKDOCLINK
> size);</PRE
></TD
></TR
></TABLE
><P
>Changes the size of the specified font to the specified size.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fontid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID number of the font to change the size of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>size</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2200"
></A
><H3
><A
NAME="GRSETFONTROTATION"
></A
>GrSetFontRotation ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetFontRotation (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
int tenthsdegrees);</PRE
></TD
></TR
></TABLE
><P
>Changes the rotation of the specified font to the specified angle.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fontid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID number of the font to rotate</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>tenthsdegrees</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2220"
></A
><H3
><A
NAME="GRSETFONTATTR"
></A
>GrSetFontAttr ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetFontAttr (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid,
int setflags,
int clrflags);</PRE
></TD
></TR
></TABLE
><P
>Changes the attributes (GR_TFKERNING, GR_TFANTIALIAS, GR_TFUNDERLINE, etc.)
of the specified font according to the set and clear mask arguments.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fontid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the font to set the attributes of</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>setflags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> mask specifying attribute flags to set</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>clrflags</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> mask specifying attribute flags to clear</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2244"
></A
><H3
><A
NAME="GRDESTROYFONT"
></A
>GrDestroyFont ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDestroyFont (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> fontid);</PRE
></TD
></TR
></TABLE
><P
>Frees all resources associated with the specified font ID, and if the font
is a non built in type and this is the last ID referring to it, unloads the
font from memory.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fontid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the ID of the font to destroy</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2260"
></A
><H3
><A
NAME="GRGETFONTINFO"
></A
>GrGetFontInfo ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetFontInfo (<GTKDOCLINK
HREF="GR-FONT-ID-CAPS"
>GR_FONT_ID</GTKDOCLINK
> font,
<GTKDOCLINK
HREF="GR-FONT-INFO-CAPS"
>GR_FONT_INFO</GTKDOCLINK
> *fip);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified GR_FONT_INFO structure with information regarding
the specified font.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>font</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fip</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_FONT_INFO structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-events.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-pointer.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>events</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>pointer</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-misc.html
0,0 → 1,863
<HTML
><HEAD
><TITLE
>misc</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="selections"
HREF="nano-x-selections.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-selections.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
>&nbsp;</TD
></TR
></TABLE
></DIV
><H1
>misc</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN3124"
></A
><H2
>Name</H2
>misc &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN3127"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-misc.html#GRREQSHMCMDS"
>GrReqShmCmds</A
> (<GTKDOCLINK
HREF="LONG"
>long</GTKDOCLINK
> shmsize);
void <A
HREF="nano-x-misc.html#GRINJECTKEYBOARDEVENT"
>GrInjectKeyboardEvent</A
> (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-UNICODE-CAPS"
>GR_UNICODE</GTKDOCLINK
> uch,
<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> ch,
int modif,
int special,
unsigned char content);
void <A
HREF="nano-x-misc.html#GRREGISTERINPUT"
>GrRegisterInput</A
> (int fd);
void <A
HREF="nano-x-misc.html#GRPREPARESELECT"
>GrPrepareSelect</A
> (int *maxfd,
void *rfdset);
void <A
HREF="nano-x-misc.html#GRSERVICESELECT"
>GrServiceSelect</A
> (void *rfdset,
<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);
void <A
HREF="nano-x-misc.html#GRBELL"
>GrBell</A
> (void);
void <A
HREF="nano-x-misc.html#GRSETSCREENSAVERTIMEOUT"
>GrSetScreenSaverTimeout</A
> (<GTKDOCLINK
HREF="GR-TIMEOUT-CAPS"
>GR_TIMEOUT</GTKDOCLINK
> timeout);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3143"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3146"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN3148"
></A
><H3
><A
NAME="GRREQSHMCMDS"
></A
>GrReqShmCmds ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrReqShmCmds (<GTKDOCLINK
HREF="LONG"
>long</GTKDOCLINK
> shmsize);</PRE
></TD
></TR
></TABLE
><P
>Requests a shared memory area of the specified size to use for transferring
command arguments. This is faster but less portable than the standard BSD
sockets method of communication (and of course will only work if the client
and server are on the same machine). Apart from the initial allocation of
the area using this call, the use of shared memory is completely
transparent. Additionally, if the allocation fails we silently and
automatically fall back on socket communication. It is safe to call this
function even if shared memory support is not compiled in; it will simply
do nothing.</P
><P
>FIXME: how does the user decide what size of shared memory area to allocate?</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>shmsize</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the size of the shared memory area to allocate</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3165"
></A
><H3
><A
NAME="GRINJECTKEYBOARDEVENT"
></A
>GrInjectKeyboardEvent ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrInjectKeyboardEvent (<GTKDOCLINK
HREF="GR-WINDOW-ID-CAPS"
>GR_WINDOW_ID</GTKDOCLINK
> wid,
<GTKDOCLINK
HREF="GR-UNICODE-CAPS"
>GR_UNICODE</GTKDOCLINK
> uch,
<GTKDOCLINK
HREF="GR-CHAR-CAPS"
>GR_CHAR</GTKDOCLINK
> ch,
int modif,
int special,
unsigned char content);</PRE
></TD
></TR
></TABLE
><P
>Sends a keyboard event to the specified window, or to the window with the
current keyboard focus if 0 is used as the ID. The other arguments
correspond directly to the fields of the same names in the keyboard event
structure.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>wid</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> ID of the window to send the event to, or 0</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>uch</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> 32 bit Unicode keystroke value to inject</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ch</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> 8 bit ascii keystroke value to inject</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>modif</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>special</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> special keys to inject</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>content</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> mask specifying which arguments are valid</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3203"
></A
><H3
><A
NAME="GRREGISTERINPUT"
></A
>GrRegisterInput ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrRegisterInput (int fd);</PRE
></TD
></TR
></TABLE
><P
>Register an extra file descriptor to monitor in the main <GTKDOCLINK
HREF="SELECT"
>select</GTKDOCLINK
>() call.
An event will be returned when the fd has data waiting to be read if that
event has been selected for.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fd</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the file descriptor to monitor</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3219"
></A
><H3
><A
NAME="GRPREPARESELECT"
></A
>GrPrepareSelect ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrPrepareSelect (int *maxfd,
void *rfdset);</PRE
></TD
></TR
></TABLE
><P
>Prepare for a GrServiceSelect function by asking the server to send the next
event but not waiting around for it to arrive and initialising the
specified fd_set structure with the client/server socket descriptor and any
previously registered external file descriptors. Also compares the current
contents of maxfd, the client/server socket descriptor, and the previously
registered external file descriptors, and returns the highest of them in
maxfd.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>maxfd</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a variable which the highest in use fd will be written to</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rfdset</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the file descriptor set structure to use</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3238"
></A
><H3
><A
NAME="GRSERVICESELECT"
></A
>GrServiceSelect ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrServiceSelect (void *rfdset,
<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);</PRE
></TD
></TR
></TABLE
><P
>Used by <A
HREF="nano-x-general.html#GRMAINLOOP"
>GrMainLoop</A
>() to call the specified callback function when an
event arrives or there is data waiting on an external fd specified by
<A
HREF="nano-x-misc.html#GRREGISTERINPUT"
>GrRegisterInput</A
>().</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>rfdset</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the file descriptor set to monitor</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fncb</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the function to call when an event needs handling</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3260"
></A
><H3
><A
NAME="GRBELL"
></A
>GrBell ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrBell (void);</PRE
></TD
></TR
></TABLE
><P
>Asks the server to ring the console bell on behalf of the client (intended
for terminal apps to be able to ring the bell on the server even if they
are running remotely).</P
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3266"
></A
><H3
><A
NAME="GRSETSCREENSAVERTIMEOUT"
></A
>GrSetScreenSaverTimeout ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrSetScreenSaverTimeout (<GTKDOCLINK
HREF="GR-TIMEOUT-CAPS"
>GR_TIMEOUT</GTKDOCLINK
> timeout);</PRE
></TD
></TR
></TABLE
><P
>Sets the number of seconds of inactivity before a screen saver activate
event is sent to the root window ID. A value of 0 activates the
screen saver immediately, and a value of -1 disables the screen saver
function.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>timeout</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of seconds of inactivity before screen saver activates</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="nano-x-selections.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>selections</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/html/nano-x-general.html
0,0 → 1,706
<HTML
><HEAD
><TITLE
>general</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Nano-X API Reference Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="PREVIOUS"
TITLE="libnano-X"
HREF="libnano-x.html"><LINK
REL="NEXT"
TITLE="window"
HREF="nano-x-window.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Nano-X API Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-window.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>general</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN11"
></A
><H2
>Name</H2
>general &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN14"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
 
void <A
HREF="nano-x-general.html#GRFLUSH"
>GrFlush</A
> (void);
int <A
HREF="nano-x-general.html#GROPEN"
>GrOpen</A
> (void);
void <A
HREF="nano-x-general.html#GRCLOSE"
>GrClose</A
> (void);
void <A
HREF="nano-x-general.html#GRMAINLOOP"
>GrMainLoop</A
> (<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);
void <A
HREF="nano-x-general.html#GRGETSCREENINFO"
>GrGetScreenInfo</A
> (<GTKDOCLINK
HREF="GR-SCREEN-INFO-CAPS"
>GR_SCREEN_INFO</GTKDOCLINK
> *sip);
<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> <A
HREF="nano-x-general.html#GRSETERRORHANDLER"
>GrSetErrorHandler</A
> (<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);
void <A
HREF="nano-x-general.html#GRDEFAULTERRORHANDLER"
>GrDefaultErrorHandler</A
> (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN29"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN32"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN34"
></A
><H3
><A
NAME="GRFLUSH"
></A
>GrFlush ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrFlush (void);</PRE
></TD
></TR
></TABLE
><P
>Flush the message buffer of any messages it may contain.</P
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN40"
></A
><H3
><A
NAME="GROPEN"
></A
>GrOpen ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>int GrOpen (void);</PRE
></TD
></TR
></TABLE
><P
>Open a connection to the graphics server.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the fd of the connection to the server or -1 on failure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN55"
></A
><H3
><A
NAME="GRCLOSE"
></A
>GrClose ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrClose (void);</PRE
></TD
></TR
></TABLE
><P
>Close the graphics device, flushing any waiting messages.</P
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN61"
></A
><H3
><A
NAME="GRMAINLOOP"
></A
>GrMainLoop ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrMainLoop (<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);</PRE
></TD
></TR
></TABLE
><P
>A convenience function which calls the specified callback function whenever
an event arrives or there is data to be read on a file descriptor previously
specified by <A
HREF="nano-x-misc.html#GRREGISTERINPUT"
>GrRegisterInput</A
>(). Currently never returns.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fncb</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN78"
></A
><H3
><A
NAME="GRGETSCREENINFO"
></A
>GrGetScreenInfo ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrGetScreenInfo (<GTKDOCLINK
HREF="GR-SCREEN-INFO-CAPS"
>GR_SCREEN_INFO</GTKDOCLINK
> *sip);</PRE
></TD
></TR
></TABLE
><P
>Fills in the specified GR_SCREEN_INFO structure.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>sip</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to a GR_SCREEN_INFO structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN94"
></A
><H3
><A
NAME="GRSETERRORHANDLER"
></A
>GrSetErrorHandler ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> GrSetErrorHandler (<GTKDOCLINK
HREF="GR-FNCALLBACKEVENT-CAPS"
>GR_FNCALLBACKEVENT</GTKDOCLINK
> fncb);</PRE
></TD
></TR
></TABLE
><P
>Sets an error handling routine that will be called on any errors from
the server (assuming the client has asked to receive them). If zero is
used as the argument, errors will be returned as regular events instead.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>fncb</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the function to call to handle error events</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the address of the previous error handler</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN115"
></A
><H3
><A
NAME="GRDEFAULTERRORHANDLER"
></A
>GrDefaultErrorHandler ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void GrDefaultErrorHandler (<GTKDOCLINK
HREF="GR-EVENT-CAPS"
>GR_EVENT</GTKDOCLINK
> *ep);</PRE
></TD
></TR
></TABLE
><P
>The default error handler which is called when the server reports an error
event and the client hasn't set up a handler of it's own.</P
><P
>Generates a human readable error message on stderr describing what error
occurred and what function it occured in, then exits.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ep</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the error event structure</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR
CLEAR="all"><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="index.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libnano-x.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="nano-x-window.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>libnano-X</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>window</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
/nano-X/nano-X-docs.ps
0,0 → 1,2576
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
%%Title: nano-X-docs.dvi
%%Pages: 70
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: Helvetica-Bold Times-Bold Times-Roman Times-Italic
%%+ Courier Courier-Oblique
%%EndComments
%DVIPSCommandLine: dvips nano-X-docs.dvi -o nano-X-docs.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2000.12.13:0008
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn
put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley
X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
 
%%EndProcSet
%%BeginProcSet: 8r.enc
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
% version = "0.6",
% date = "22 June 1996",
% filename = "8r.enc",
% email = "kb@@mail.tug.org",
% address = "135 Center Hill Rd. // Plymouth, MA 02360",
% codetable = "ISO/ASCII",
% checksum = "119 662 4424",
% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
%
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
%
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
%
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
%
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef
/breve /minus /.notdef
% These are the only two remaining unencoded characters, so may as
% well include them.
/Zcaron /zcaron
% 0x10
/caron /dotlessi
% (unusual TeX characters available in, e.g., Lucida Bright)
/dotlessj /ff /ffi /ffl
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
% very contentious; it's so painful not having quoteleft and quoteright
% at 96 and 145 that we move the things normally found there down to here.
/grave /quotesingle
% 0x20 (ASCII begins)
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde
/.notdef % rubout; ASCII ends
% 0x80
/.notdef /.notdef /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /.notdef /.notdef /.notdef
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /.notdef /.notdef /Ydieresis
% 0xA0
/.notdef % nobreakspace
/exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot
/hyphen % Y&Y (also at 45); Windows' softhyphen
/registered
/macron
% 0xD0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
 
%%EndProcSet
%%BeginProcSet: texps.pro
%!
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant
{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1
roll mul exch}def /ReEncodeFont{/Encoding exch def}def end
 
%%EndProcSet
%%BeginProcSet: special.pro
%!
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
 
%%EndProcSet
%%BeginProcSet: color.pro
%!
TeXDict begin /setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse /TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def /TeXcolorgrey{setgray}def /TeXcolorgray{
setgray}def /TeXcolorhsb{sethsbcolor}def /currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse /DC{exch dup userdict exch
known{pop pop}{X}ifelse}B /GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC /Goldenrod{0 0.10 0.84 0 setcmykcolor}
DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC /Apricot{0 0.32 0.52 0
setcmykcolor}DC /Peach{0 0.50 0.70 0 setcmykcolor}DC /Melon{0 0.46 0.50
0 setcmykcolor}DC /YellowOrange{0 0.42 1 0 setcmykcolor}DC /Orange{0
0.61 0.87 0 setcmykcolor}DC /BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC /RedOrange{0 0.77 0.87 0
setcmykcolor}DC /Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC /Maroon{0
0.87 0.68 0.32 setcmykcolor}DC /BrickRed{0 0.89 0.94 0.28 setcmykcolor}
DC /Red{0 1 1 0 setcmykcolor}DC /OrangeRed{0 1 0.50 0 setcmykcolor}DC
/RubineRed{0 1 0.13 0 setcmykcolor}DC /WildStrawberry{0 0.96 0.39 0
setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC /CarnationPink{0
0.63 0 0 setcmykcolor}DC /Magenta{0 1 0 0 setcmykcolor}DC /VioletRed{0
0.81 0 0 setcmykcolor}DC /Rhodamine{0 0.82 0 0 setcmykcolor}DC /Mulberry
{0.34 0.90 0 0.02 setcmykcolor}DC /RedViolet{0.07 0.90 0 0.34
setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC /Lavender{0
0.48 0 0 setcmykcolor}DC /Thistle{0.12 0.59 0 0 setcmykcolor}DC /Orchid{
0.32 0.64 0 0 setcmykcolor}DC /DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}
DC /Purple{0.45 0.86 0 0 setcmykcolor}DC /Plum{0.50 1 0 0 setcmykcolor}
DC /Violet{0.79 0.88 0 0 setcmykcolor}DC /RoyalPurple{0.75 0.90 0 0
setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC /Periwinkle
{0.57 0.55 0 0 setcmykcolor}DC /CadetBlue{0.62 0.57 0.23 0 setcmykcolor}
DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC /MidnightBlue{0.98 0.13
0 0.43 setcmykcolor}DC /NavyBlue{0.94 0.54 0 0 setcmykcolor}DC
/RoyalBlue{1 0.50 0 0 setcmykcolor}DC /Blue{1 1 0 0 setcmykcolor}DC
/Cerulean{0.94 0.11 0 0 setcmykcolor}DC /Cyan{1 0 0 0 setcmykcolor}DC
/ProcessBlue{0.96 0 0 0 setcmykcolor}DC /SkyBlue{0.62 0 0.12 0
setcmykcolor}DC /Turquoise{0.85 0 0.20 0 setcmykcolor}DC /TealBlue{0.86
0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC
/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC /Emerald{1 0 0.50 0
setcmykcolor}DC /JungleGreen{0.99 0 0.52 0 setcmykcolor}DC /SeaGreen{
0.69 0 0.50 0 setcmykcolor}DC /Green{1 0 1 0 setcmykcolor}DC
/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59
0.25 setcmykcolor}DC /LimeGreen{0.50 0 1 0 setcmykcolor}DC /YellowGreen{
0.44 0 0.74 0 setcmykcolor}DC /SpringGreen{0.26 0 0.76 0 setcmykcolor}
DC /OliveGreen{0.64 0 0.95 0.40 setcmykcolor}DC /RawSienna{0 0.72 1 0.45
setcmykcolor}DC /Sepia{0 0.83 1 0.70 setcmykcolor}DC /Brown{0 0.81 1
0.60 setcmykcolor}DC /Tan{0.14 0.42 0.56 0 setcmykcolor}DC /Gray{0 0 0
0.50 setcmykcolor}DC /Black{0 0 0 1 setcmykcolor}DC /White{0 0 0 0
setcmykcolor}DC end
 
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (nano-X-docs.dvi)
@start /Fa 133[60 60 60 60 60 60 60 60 60 1[60 60 60
60 60 60 1[60 60 60 60 60 60 60 60 60 1[60 44[60 60 3[60
45[{TeXBase1Encoding ReEncodeFont}28 99.6264 /Courier-Oblique
rf /Fb 133[60 66 66 93 66 73 40 66 47 73 73 73 73 106
33 66 33 33 73 73 40 66 73 66 73 66 8[80 113 1[86 73
80 86 1[80 93 86 100 73 86 1[33 86 93 73 80 86 86 86
86 23[40 40 40[{TeXBase1Encoding ReEncodeFont}49 119.552
/Helvetica-Bold rf /Fc 133[54 54 54 54 54 54 54 54 54
54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 1[54
4[54 54 54 54 54 54 54 54 54 1[54 54 54 54 54 54 1[54
54 54 54 54 54 54 54 54 5[54 8[54 54 3[54 54 1[54 54
54 40[{TeXBase1Encoding ReEncodeFont}59 89.6638 /Courier
rf /Fd 136[60 60 60 60 60 60 1[60 60 60 60 60 2[60 60
60 60 60 60 60 1[60 97[{TeXBase1Encoding ReEncodeFont}19
99.6264 /Courier rf /Fe 134[80 4[48 80 56 1[88 88 88
128 40 2[40 3[80 1[80 1[80 13[96 4[104 9[104 68[{
TeXBase1Encoding ReEncodeFont}16 143.462 /Helvetica-Bold
rf /Ff 136[134 96 105 57 96 67 1[105 105 105 153 48 2[48
105 105 57 96 105 96 1[96 45[96 9[57 57 40[{
TeXBase1Encoding ReEncodeFont}22 172.154 /Helvetica-Bold
rf /Fg 138[50 28 39 39 1[50 50 50 1[28 2[28 50 2[44 2[50
50 8[61 5[61 14[66 9[50 50 50 50 50 50 50 50 50 50 1[25
33 45[{TeXBase1Encoding ReEncodeFont}28 99.6264 /Times-Italic
rf /Fh 104[100 28[44 50 50 72 50 50 28 39 33 50 50 50
50 78 28 50 28 28 50 50 33 44 50 44 50 44 1[50 5[72 72
94 72 72 61 55 66 72 55 72 72 89 61 72 39 33 72 72 55
61 72 66 66 72 1[44 3[28 28 1[50 50 50 50 50 50 50 50
50 28 25 33 25 1[50 33 33 33 4[41 30[55 55 2[{
TeXBase1Encoding ReEncodeFont}76 99.6264 /Times-Roman
rf /Fi 144[50 55 1[28 2[28 6[55 50 8[72 35[50 2[50 2[25
33 45[{TeXBase1Encoding ReEncodeFont}11 99.6264 /Times-Bold
rf /Fj 139[69 115 80 1[126 126 126 1[57 2[57 126 1[69
115 2[126 115 8[138 3[126 16[149 17[115 2[57 69 45[{
TeXBase1Encoding ReEncodeFont}19 206.584 /Helvetica-Bold
rf /Fk 138[61 2[39 2[61 61 1[28 5[33 55 1[55 1[55 8[66
5[72 1[66 1[72 83 3[28 7[72 19[33 45[{TeXBase1Encoding ReEncodeFont}17
99.6264 /Helvetica-Bold rf /Fl 138[151 2[96 2[151 151
1[69 5[83 138 1[138 1[138 8[165 5[179 1[165 1[179 206
3[69 7[179 19[83 45[{TeXBase1Encoding ReEncodeFont}17
247.895 /Helvetica-Bold rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
 
%%EndSetup
%%Page: 1 1
1 0 bop Black Black 173 677 a Fl(Nano-X)69 b(API)h(Ref)n(erence)e(Man)n
(ual)p Black Black eop
%%Page: 2 2
2 1 bop Black Black -2 579 a Fk(Nano-X)28 b(API)g(Ref)o(erence)h(Man)o
(ual)p Black Black eop
%%Page: 3 3
3 2 bop Black Black -2 647 a Fj(T)-17 b(ab)n(le)58 b(of)g(Contents)396
879 y Fi(1.)31 b(libnano-X)p Black 16 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black(4)596 1029 y Fh(general)p Black 6 w(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black(4)596 1158 y(windo)n(w)p Black 5 w(.)p
Black Black -2 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black(7)596
1288 y(graphics)p Black 11 w(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black(17)596 1417 y(e)n(v)o(ents)p
Black 21 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black(41)596
1547 y(fonts)p Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black(44)596 1676 y(pointer)p Black 15 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black(47)596 1806 y(colours)p Black 6 w(.)p Black Black
-2 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black(50)596 1935 y(re)o(gions)p Black 7 w(.)p
Black Black -2 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black(52)596 2065 y(selections)p
Black 6 w(.)p Black Black -2 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black(61)596 2194 y(misc)p
Black 11 w(.)p Black Black -1 w(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black -1 w(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black -1 w(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black
-1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black -1 w(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black -1 w(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black -1 w(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black
Black -1 w(.)p Black Black(.)p Black Black(.)p Black
Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p
Black Black(.)p Black Black(.)p Black Black(.)p Black(65)p
Black 3833 5278 a Fg(3)p Black eop
%%Page: 4 4
4 3 bop Black Black -2 647 a Fj(Chapter)58 b(1.)71 b(libnano-X)-2
1167 y Ff(g)r(eneral)47 b(\(3\))396 1647 y Fe(Name)396
1848 y Fd(general)24 b Fh(\227)396 2242 y Fe(Synopsis)396
2691 y Fc(void)430 b(GrFlush)1343 b(\(void\);)396 2808
y(int)484 b(GrOpen)1397 b(\(void\);)396 2925 y(void)430
b(GrClose)1343 b(\(void\);)396 3041 y(void)430 b(GrMain-)396
3158 y(Loop)1183 b(\(GR_FNCALLBACKEVENT)50 b(fncb\);)396
3274 y(void)430 b(GrGetScreen-)396 3391 y(Info)914 b(\(GR_SCREEN_INFO)
51 b(*sip\);)396 3507 y(GR_FNCALLBACKEVENT)f(GrSetErrorHan-)396
3624 y(dler)430 b(\(GR_FNCALLBACKEVENT)50 b(fncb\);)396
3741 y(void)430 b(GrDefaultErrorHandler)587 b(\(GR_EVENT)52
b(*ep\);)396 4234 y Fe(Description)p Black 3833 5278
a Fg(4)p Black eop
%%Page: 5 5
5 4 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 601 a Fe(Details)396 945 y Fb(GrFlush)k(\(\))396
1161 y Fc(void)430 b(GrFlush)1343 b(\(void\);)396 1391
y Fh(Flush)25 b(the)f(message)h(b)n(uf)n(fer)g(of)f(an)o(y)h(messages)f
(it)g(may)h(contain.)396 1845 y Fb(GrOpen)34 b(\(\))396
2061 y Fc(int)484 b(GrOpen)1397 b(\(void\);)396 2290
y Fh(Open)25 b(a)g(connection)f(to)h(the)f(graphics)h(serv)o(er)-5
b(.)706 2602 y Fg(Returns)24 b Fh(:)50 b(the)24 b(fd)h(of)g(the)g
(connection)f(to)g(the)h(serv)o(er)g(or)f(-1)h(on)g(f)o(ailure)396
3098 y Fb(GrClose)35 b(\(\))396 3314 y Fc(void)430 b(GrClose)1343
b(\(void\);)396 3544 y Fh(Close)25 b(the)g(graphics)f(de)n(vice,)h
(\003ushing)f(an)o(y)g(w)o(aiting)g(messages.)396 3998
y Fb(GrMainLoop)34 b(\(\))396 4214 y Fc(void)430 b(GrMain-)396
4331 y(Loop)1183 b(\(GR_FNCALLBACKEVENT)50 b(fncb\);)396
4560 y Fh(A)25 b(con)l(v)o(enience)f(function)g(which)h(calls)f(the)h
(speci\002ed)g(callback)g(function)f(whene)n(v)o(er)g(an)h(e)n(v)o(ent)
396 4689 y(arri)n(v)o(es)f(or)h(there)g(is)g(data)f(to)h(be)g(read)g
(on)g(a)g(\002le)g(descriptor)f(pre)n(viously)f(speci\002ed)j(by)396
4819 y(GrRe)o(gisterInput\(\).)k(Currently)25 b(ne)n(v)o(er)f(returns.)
p Black 3833 5278 a Fg(5)p Black eop
%%Page: 6 6
6 5 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 775 587 a Fa(fncb)26 b Fh(:)396 1083 y Fb(GrGetScreenInf)n(o)34
b(\(\))396 1299 y Fc(void)430 b(GrGetScreen-)396 1416
y(Info)914 b(\(GR_SCREEN_INFO)51 b(*sip\);)396 1645 y
Fh(Fills)24 b(in)h(the)f(speci\002ed)i(GR_SCREEN_INFO)g(structure.)836
1956 y Fa(sip)f Fh(:)50 b(pointer)24 b(to)g(a)h(GR_SCREEN_INFO)i
(structure)396 2453 y Fb(GrSetErr)n(orHandler)32 b(\(\))396
2669 y Fc(GR_FNCALLBACKEVENT)50 b(GrSetErrorHan-)396
2786 y(dler)430 b(\(GR_FNCALLBACKEVENT)50 b(fncb\);)396
3015 y Fh(Sets)25 b(an)g(error)h(handling)d(routine)h(that)h(will)f(be)
h(called)f(on)h(an)o(y)f(errors)h(from)g(the)g(serv)o(er)396
3144 y(\(assuming)f(the)g(client)h(has)f(ask)o(ed)h(to)g(recei)n(v)o(e)
f(them\).)30 b(If)c(zero)f(is)f(used)h(as)g(the)f(ar)n(gument,)h
(errors)396 3274 y(will)f(be)h(returned)g(as)g(re)o(gular)f(e)n(v)o
(ents)g(instead.)775 3585 y Fa(fncb)i Fh(:)50 b(the)24
b(function)g(to)h(call)f(to)h(handle)f(error)i(e)n(v)o(ents)706
3740 y Fg(Returns)e Fh(:)50 b(the)24 b(address)h(of)g(the)f(pre)n
(vious)g(error)h(handler)396 4236 y Fb(GrDefaultErr)n(orHandler)33
b(\(\))396 4452 y Fc(void)430 b(GrDefaultErrorHandler)587
b(\(GR_EVENT)52 b(*ep\);)396 4681 y Fh(The)25 b(def)o(ault)g(error)g
(handler)g(which)f(is)h(called)f(when)h(the)g(serv)o(er)g(reports)f(an)
h(error)h(e)n(v)o(ent)d(and)i(the)396 4811 y(client)g(hasn')n(t)f(set)h
(up)f(a)h(handler)g(of)g(it')-5 b(s)24 b(o)n(wn.)p Black
-2 5278 a Fg(6)p Black eop
%%Page: 7 7
7 6 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(Generates)25 b(a)h(human)e(readable)h(error)h
(message)e(on)g(stderr)h(describing)f(what)h(error)g(occurred)396
708 y(and)g(what)g(function)f(it)g(occured)h(in,)f(then)h(e)o(xits.)896
1013 y Fa(ep)g Fh(:)50 b(the)24 b(error)i(e)n(v)o(ent)d(structure)-2
1814 y Ff(windo)m(w)48 b(\(3\))396 2293 y Fe(Name)396
2495 y Fd(window)24 b Fh(\227)396 2888 y Fe(Synopsis)396
3338 y Fc(GR_WINDOW_ID)52 b(GrNewWin-)396 3454 y(dow)1076
b(\(GR_WINDOW_ID)51 b(parent,)2817 3571 y(GR_COORD)h(x,)2817
3687 y(GR_COORD)g(y,)2817 3804 y(GR_SIZE)h(width,)2817
3920 y(GR_SIZE)g(height,)2817 4037 y(GR_SIZE)g(bordersize,)2817
4154 y(GR_COLOR)f(background,)2817 4270 y(GR_COLOR)g(bordercolor\);)396
4387 y(GR_WINDOW_ID)g(GrNewPixmap)1073 b(\(GR_SIZE)53
b(width,)2817 4503 y(GR_SIZE)g(height,)2817 4620 y(void)g(*addr\);)396
4736 y(GR_WINDOW_ID)f(GrNewInputWin-)396 4853 y(dow)807
b(\(GR_WINDOW_ID)51 b(parent,)p Black 3830 5278 a Fg(7)p
Black eop
%%Page: 8 8
8 7 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(GR_COORD)52 b(x,)2817 695 y(GR_COORD)g(y,)2817
812 y(GR_SIZE)h(width,)2817 929 y(GR_SIZE)g(height\);)396
1045 y(void)430 b(GrDestroyWindow)911 b(\(GR_WINDOW_ID)52
b(wid\);)396 1162 y(void)430 b(GrMapWindow)1127 b(\(GR_WINDOW_ID)52
b(wid\);)396 1278 y(void)430 b(GrUnmapWindow)1019 b(\(GR_WINDOW_ID)52
b(wid\);)396 1395 y(void)430 b(GrRaiseWindow)1019 b(\(GR_WINDOW_ID)52
b(wid\);)396 1511 y(void)430 b(GrLowerWindow)1019 b(\(GR_WINDOW_ID)52
b(wid\);)396 1628 y(void)430 b(GrMoveWindow)1073 b(\(GR_WINDOW_ID)52
b(wid,)2817 1745 y(GR_COORD)g(x,)2817 1861 y(GR_COORD)g(y\);)396
1978 y(void)430 b(GrResizeWindow)965 b(\(GR_WINDOW_ID)52
b(wid,)2817 2094 y(GR_SIZE)h(width,)2817 2211 y(GR_SIZE)g(height\);)396
2327 y(void)430 b(GrReparentWindow)857 b(\(GR_WINDOW_ID)52
b(wid,)2817 2444 y(GR_WINDOW_ID)g(pwid,)2817 2560 y(GR_COORD)g(x,)2817
2677 y(GR_COORD)g(y\);)396 2794 y(void)430 b(GrGetWindowInfo)911
b(\(GR_WINDOW_ID)52 b(wid,)2817 2910 y(GR_WINDOW_INFO)f(*infoptr\);)396
3027 y(void)430 b(GrSetWMProperties)803 b(\(GR_WINDOW_ID)52
b(wid,)2817 3143 y(GR_WM_PROPERTIES)f(*props\);)396 3260
y(void)430 b(GrGetWMProperties)803 b(\(GR_WINDOW_ID)52
b(wid,)2817 3376 y(GR_WM_PROPERTIES)f(*props\);)396 3493
y(void)430 b(GrSetFocus)1181 b(\(GR_WINDOW_ID)52 b(wid\);)396
3610 y(GR_WINDOW_ID)g(GrGetFocus)1127 b(\(void\);)396
3726 y(void)430 b(GrSetBorderColor)857 b(\(GR_WINDOW_ID)52
b(wid,)2817 3843 y(GR_COLOR)g(color\);)396 3959 y(void)430
b(GrSetBackgroundPixmap)587 b(\(GR_WINDOW_ID)52 b(wid,)2817
4076 y(GR_WINDOW_ID)g(pixmap,)2817 4192 y(int)h(flags\);)396
4309 y(void)430 b(GrClearWindow)1019 b(\(GR_WINDOW_ID)52
b(wid,)2817 4425 y(GR_BOOL)h(exposeflag\);)396 4542 y(void)430
b(GrCloseWindow)1019 b(\(GR_WINDOW_ID)52 b(wid\);)396
4659 y(void)430 b(GrKillWindow)1073 b(\(GR_WINDOW_ID)52
b(wid\);)p Black -2 5278 a Fg(8)p Black eop
%%Page: 9 9
9 8 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 601 a Fe(Description)396 1116 y(Details)396
1461 y Fb(GrNe)n(wWindo)n(w)k(\(\))396 1677 y Fc(GR_WINDOW_ID)52
b(GrNewWindow)1073 b(\(GR_WINDOW_ID)52 b(par-)396 1793
y(ent,)2817 1910 y(GR_COORD)g(x,)2817 2026 y(GR_COORD)g(y,)2817
2143 y(GR_SIZE)h(width,)2817 2260 y(GR_SIZE)g(height,)2817
2376 y(GR_SIZE)g(bordersize,)2817 2493 y(GR_COLOR)f(background,)2817
2609 y(GR_COLOR)g(border-)396 2726 y(color\);)396 2955
y Fh(Create)26 b(a)f(ne)n(w)g(windo)n(w)e(with)h(the)h(speci\002ed)g
(parent)g(and)g(windo)n(w)e(attrib)n(utes.)657 3266 y
Fa(parent)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g(parent)g(windo)n(w)951
3421 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(ne)n(w)
f(windo)n(w)g(relati)n(v)o(e)g(to)g(the)h(parent)f(windo)n(w)948
3575 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(ne)n(w)
f(windo)n(w)g(relati)n(v)o(e)g(to)g(the)h(parent)f(windo)n(w)717
3730 y Fa(width)g Fh(:)50 b(the)24 b(width)g(of)h(the)g(ne)n(w)f(windo)
n(w)657 3884 y Fa(height)g Fh(:)50 b(the)24 b(height)g(of)h(the)g(ne)n
(w)f(windo)n(w)443 4039 y Fa(bordersize)f Fh(:)i(the)f(width)g(of)h
(the)g(windo)n(w)e(border)439 4298 y Fa(background)k
Fh(:)e(the)f(colour)h(of)g(the)f(windo)n(w)g(background)675
4557 y Fa(border-)396 4686 y(color)k Fh(:)1119 4557 y(the)c(colour)h
(of)g(the)f(windo)n(w)g(border)p Black 3833 5278 a Fg(9)p
Black eop
%%Page: 10 10
10 9 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 706 587 a(Returns)24 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(ne)n
(wly)f(created)h(windo)n(w)396 1083 y Fb(GrNe)n(wPixmap)35
b(\(\))396 1299 y Fc(GR_WINDOW_ID)52 b(GrNewPixmap)1073
b(\(GR_SIZE)53 b(width,)2817 1416 y(GR_SIZE)g(height,)2817
1532 y(void)g(*addr\);)396 1761 y Fh(Create)26 b(a)f(ne)n(w)g(serv)o
(er)g(side)f(pixmap)g(\(an)h(of)n(fscreen)g(dra)o(wing)f(area)i(which)e
(can)h(be)g(copied)g(into)e(a)396 1891 y(windo)n(w)h(using)f(a)j(GrCop)
o(yArea)f(call\))g(of)g(the)g(speci\002ed)g(width)e(and)i(height.)717
2202 y Fa(width)f Fh(:)50 b(the)24 b(width)g(of)h(the)g(pixmap)657
2357 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g(pixmap)773
2511 y Fa(addr)j Fh(:)50 b(currently)24 b(unused)g(in)h(client/serv)o
(er)f(mode)706 2666 y Fg(Returns)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(ne)n(wly)f(created)h(pixmap)396 3162 y Fb(GrNe)n(wInputWindo)n(w)35
b(\(\))396 3378 y Fc(GR_WINDOW_ID)52 b(GrNewInputWindow)803
b(\(GR_WINDOW_ID)52 b(par-)396 3495 y(ent,)2817 3611
y(GR_COORD)g(x,)2817 3728 y(GR_COORD)g(y,)2817 3845 y(GR_SIZE)h(width,)
2817 3961 y(GR_SIZE)g(height\);)396 4190 y Fh(Create)26
b(a)f(ne)n(w)g(input-only)e(windo)n(w)g(with)h(the)h(speci\002ed)g
(dimensions)e(which)h(is)g(a)i(child)e(of)h(the)396 4320
y(speci\002ed)g(parent)g(windo)n(w)-6 b(.)657 4631 y
Fa(parent)24 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(use)
f(as)h(the)g(parent)g(of)g(the)f(ne)n(w)h(windo)n(w)951
4786 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(ne)n(w)
f(windo)n(w)g(relati)n(v)o(e)g(to)g(the)h(parent)f(windo)n(w)p
Black -2 5278 a Fg(10)p Black eop
%%Page: 11 11
11 10 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 948 587 a Fa(y)j Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g
(ne)n(w)f(windo)n(w)g(relati)n(v)o(e)g(to)g(the)h(parent)f(windo)n(w)
717 741 y Fa(width)g Fh(:)50 b(the)24 b(width)g(of)h(the)g(ne)n(w)f
(windo)n(w)657 895 y Fa(height)g Fh(:)50 b(the)24 b(height)g(of)h(the)g
(ne)n(w)f(windo)n(w)706 1050 y Fg(Returns)g Fh(:)50 b(the)24
b(ID)h(of)g(the)g(ne)n(wly)f(created)h(windo)n(w)396
1546 y Fb(GrDestr)n(o)n(yWindo)n(w)34 b(\(\))396 1762
y Fc(void)430 b(GrDestroyWindow)911 b(\(GR_WINDOW_ID)52
b(wid\);)396 1992 y Fh(Recursi)n(v)o(ely)24 b(unmaps)g(and)h(frees)g
(the)g(data)g(structures)f(associated)g(with)g(the)h(speci\002ed)g
(windo)n(w)396 2121 y(and)g(all)g(of)f(its)h(children.)833
2412 y Fa(wid)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(destro)o(y)396 2929 y Fb(GrMapWindo)n(w)34 b(\(\))396
3145 y Fc(void)430 b(GrMapWindow)1127 b(\(GR_WINDOW_ID)52
b(wid\);)396 3374 y Fh(Recursi)n(v)o(ely)24 b(maps)g(\(mak)o(es)h
(visible\))f(the)g(speci\002ed)h(windo)n(w)f(and)h(all)f(of)h(the)g
(child)f(windo)n(ws)396 3504 y(which)h(ha)n(v)o(e)f(a)h(suf)n
(\002cient)g(map)f(count.)30 b(The)25 b(border)g(and)g(background)f(of)
h(the)f(windo)n(w)g(are)396 3633 y(painted,)g(and)h(an)g(e)o(xposure)f
(e)n(v)o(ent)g(is)g(generated)h(for)g(the)g(windo)n(w)f(and)g(e)n(v)o
(ery)g(child)h(which)396 3763 y(becomes)g(visible.)833
4054 y Fa(wid)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(map)396 4571 y Fb(GrUnmapWindo)n(w)35 b(\(\))396 4787
y Fc(void)430 b(GrUnmapWindow)1019 b(\(GR_WINDOW_ID)52
b(wid\);)p Black 3784 5278 a Fg(11)p Black eop
%%Page: 12 12
12 11 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fh(Recursi)n(v)o(ely)24 b(unmaps)g(\(mak)o(es)h(in)l
(visible\))e(the)i(speci\002ed)g(windo)n(w)e(and)i(all)f(of)h(the)g
(child)396 708 y(windo)n(ws.)833 1000 y Fa(wid)j Fh(:)50
b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(unmap)396
1516 y Fb(GrRaiseWindo)n(w)35 b(\(\))396 1733 y Fc(void)430
b(GrRaiseWindow)1019 b(\(GR_WINDOW_ID)52 b(wid\);)396
1962 y Fh(Places)26 b(the)e(speci\002ed)h(windo)n(w)f(at)h(the)f(top)h
(of)f(its)h(parents)f(dra)o(wing)g(stack,)h(abo)o(v)o(e)e(all)i(of)g
(its)396 2091 y(sibling)e(windo)n(ws.)833 2403 y Fa(wid)28
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(raise)396
2899 y Fb(GrLo)n(werWindo)n(w)34 b(\(\))396 3115 y Fc(void)430
b(GrLowerWindow)1019 b(\(GR_WINDOW_ID)52 b(wid\);)396
3345 y Fh(Places)26 b(the)e(speci\002ed)h(windo)n(w)f(at)h(the)f
(bottom)g(of)g(its)h(parents)f(dra)o(wing)g(stack,)h(belo)n(w)e(all)i
(of)g(its)396 3474 y(sibling)e(windo)n(ws.)833 3786 y
Fa(wid)28 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(lo)n
(wer)396 4282 y Fb(GrMo)n(veWindo)n(w)34 b(\(\))396 4498
y Fc(void)430 b(GrMoveWindow)1073 b(\(GR_WINDOW_ID)52
b(wid,)2817 4615 y(GR_COORD)g(x,)2817 4731 y(GR_COORD)g(y\);)p
Black -2 5278 a Fg(12)p Black eop
%%Page: 13 13
13 12 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(Mo)o(v)o(es)23 b(the)i(speci\002ed)g(windo)n(w)e(to)
i(the)g(speci\002ed)g(position)e(relati)n(v)o(e)g(to)i(its)f(parent)h
(windo)n(w)-6 b(.)833 890 y Fa(wid)28 b Fh(:)50 b(the)24
b(ID)h(of)g(the)g(windo)n(w)e(to)i(mo)o(v)o(e)951 1045
y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(mo)o(v)o(e)e(the)i
(windo)n(w)e(to)i(relati)n(v)o(e)e(to)i(its)f(parent.)948
1199 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(mo)o(v)o(e)e
(the)i(windo)n(w)e(to)i(relati)n(v)o(e)e(to)i(its)f(parent.)396
1696 y Fb(GrResiz)q(eWindo)n(w)35 b(\(\))396 1912 y Fc(void)430
b(GrResizeWindow)965 b(\(GR_WINDOW_ID)52 b(wid,)2817
2028 y(GR_SIZE)h(width,)2817 2145 y(GR_SIZE)g(height\);)396
2374 y Fh(Resizes)26 b(the)e(speci\002ed)h(windo)n(w)f(to)g(be)h(the)g
(speci\002ed)g(width)f(and)g(height.)833 2686 y Fa(wid)k
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(resize)717
2840 y Fa(width)f Fh(:)50 b(the)24 b(width)g(to)g(resize)i(the)e(windo)
n(w)g(to)657 2995 y Fa(height)g Fh(:)50 b(the)24 b(height)g(to)h
(resize)g(the)f(windo)n(w)g(to)396 3491 y Fb(GrReparentWindo)n(w)35
b(\(\))396 3707 y Fc(void)430 b(GrReparentWindow)857
b(\(GR_WINDOW_ID)52 b(wid,)2817 3824 y(GR_WINDOW_ID)g(pwid,)2817
3940 y(GR_COORD)g(x,)2817 4057 y(GR_COORD)g(y\);)396
4286 y Fh(Changes)24 b(the)g(parent)g(windo)n(w)f(of)h(the)g
(speci\002ed)g(windo)n(w)e(to)i(the)g(speci\002ed)g(parent)g(windo)n(w)
e(and)396 4416 y(places)j(it)f(at)h(the)g(speci\002ed)g(coordinates)f
(relati)n(v)o(e)g(to)g(the)h(ne)n(w)f(parent.)833 4727
y Fa(wid)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(reparent)p Black 3784 5278 a Fg(13)p Black eop
%%Page: 14 14
14 13 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 773 587 a Fa(pwid)d Fh(:)50 b(the)24 b(ID)h(of)g(the)g(ne)n(w)f
(parent)h(windo)n(w)951 741 y Fa(x)30 b Fh(:)50 b(the)24
b(X)h(coordinate)f(to)h(place)g(the)g(windo)n(w)e(at)i(relati)n(v)o(e)f
(to)g(the)h(ne)n(w)f(parent)948 895 y Fa(y)33 b Fh(:)50
b(the)24 b(Y)h(coordinate)f(to)h(place)g(the)g(windo)n(w)e(at)i(relati)
n(v)o(e)f(to)g(the)h(ne)n(w)f(parent)396 1392 y Fb(GrGetWindo)n(wInf)n
(o)33 b(\(\))396 1608 y Fc(void)430 b(GrGetWindowInfo)911
b(\(GR_WINDOW_ID)52 b(wid,)2817 1725 y(GR_WINDOW_INFO)f(*in-)396
1841 y(foptr\);)396 2070 y Fh(Fills)24 b(in)h(a)g(GR_WINDO)m(W_INFO)g
(structure)f(with)g(information)g(re)o(garding)f(the)i(windo)n(w)e
(with)396 2200 y(the)i(speci\002ed)g(windo)n(w)e(ID.)833
2511 y Fa(wid)28 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(retrie)n(v)o(e)f(information)f(about)594 2666 y Fa(infoptr)k
Fh(:)50 b(pointer)24 b(to)g(a)h(GR_WINDO)m(W_INFO)g(structure)g(to)f
(return)h(the)g(information)1094 2795 y(in)396 3292 y
Fb(GrSetWMPr)n(oper)r(ties)33 b(\(\))396 3508 y Fc(void)430
b(GrSetWMProperties)803 b(\(GR_WINDOW_ID)52 b(wid,)2817
3624 y(GR_WM_PROPERTIES)f(*props\);)396 3854 y Fh(Copies)25
b(the)g(pro)o(vided)e(GR_WM_PR)l(OPER)-6 b(TIES)27 b(structure)d(into)g
(the)h(the)396 3983 y(GR_WM_PR)l(OPER)-6 b(TIES)27 b(structure)d(of)h
(the)g(speci\002ed)g(windo)n(w)e(id.)833 4295 y Fa(wid)28
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(set)f(the)h(WM)f
(properties)h(of)717 4449 y Fa(props)f Fh(:)50 b(pointer)24
b(to)g(a)h(GR_WM_PR)l(OPER)-6 b(TIES)27 b(structure)p
Black -2 5278 a Fg(14)p Black eop
%%Page: 15 15
15 14 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 583 a Fb(GrGetWMPr)n(oper)r(ties)j(\(\))396
799 y Fc(void)430 b(GrGetWMProperties)803 b(\(GR_WINDOW_ID)52
b(wid,)2817 916 y(GR_WM_PROPERTIES)f(*props\);)396 1145
y Fh(Reads)26 b(the)e(GR_WM_PR)l(OPER)-6 b(TIES)27 b(structure)d(for)h
(the)g(windo)n(w)e(with)h(the)h(speci\002ed)g(id)f(and)396
1275 y(\002lls)h(in)f(the)h(pro)o(vided)e(structure)i(with)f(the)h
(information.)k(It)c(is)f(the)h(callers)f(responsibility)f(to)h(free)
396 1404 y(the)h(title)f(member)g(as)h(it)f(is)h(allocated)f
(dynamically)-6 b(.)29 b(The)c(title)f(\002eld)h(will)f(be)h(set)f(to)h
(NULL)f(if)h(the)396 1534 y(windo)n(w)f(has)g(no)h(title.)833
1825 y Fa(wid)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(retrei)n(v)o(e)f(the)g(WM)h(properties)f(of)717 1979
y Fa(props)g Fh(:)50 b(pointer)24 b(to)g(a)h(GR_WM_PR)l(OPER)-6
b(TIES)27 b(structure)d(to)h(\002ll)f(in)396 2496 y Fb(GrSetFocus)34
b(\(\))396 2712 y Fc(void)430 b(GrSetFocus)1181 b(\(GR_WINDOW_ID)52
b(wid\);)396 2941 y Fh(Sets)25 b(the)g(k)o(e)o(yboard)f(focus)h(to)f
(the)h(speci\002ed)g(windo)n(w)-6 b(.)833 3253 y Fa(wid)28
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(set)f(the)h
(focus)g(to)396 3749 y Fb(GrGetFocus)34 b(\(\))396 3965
y Fc(GR_WINDOW_ID)52 b(GrGetFocus)1127 b(\(void\);)706
4365 y Fg(Returns)24 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e
(which)i(currently)f(has)h(the)f(k)o(e)o(yboard)h(focus)p
Black 3784 5278 a Fg(15)p Black eop
%%Page: 16 16
16 15 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 583 a Fb(GrSetBor)n(derColor)i(\(\))396 799
y Fc(void)430 b(GrSetBorderColor)857 b(\(GR_WINDOW_ID)52
b(wid,)2817 916 y(GR_COLOR)g(color\);)396 1145 y Fh(Sets)25
b(the)g(border)g(colour)f(of)h(the)g(speci\002ed)g(windo)n(w)e(to)i
(the)f(speci\002ed)h(colour)-5 b(.)833 1457 y Fa(wid)28
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(set)f(the)h
(border)g(colour)f(of)714 1611 y Fa(color)j Fh(:)396
2107 y Fb(GrSetBac)n(kgr)n(oundPixmap)35 b(\(\))396 2324
y Fc(void)430 b(GrSetBackgroundPixmap)587 b(\(GR_WINDOW_ID)52
b(wid,)2817 2440 y(GR_WINDOW_ID)g(pixmap,)2817 2557 y(int)h(flags\);)
396 2786 y Fh(Sets)25 b(the)g(background)f(of)h(the)g(speci\002ed)g
(windo)n(w)e(to)i(the)f(speci\002ed)h(pixmap.)30 b(The)25
b(\003ags)g(which)396 2915 y(specify)g(ho)n(w)f(to)g(dra)o(w)h(the)f
(pixmap)g(\(in)h(the)g(top)f(left)g(of)h(the)g(windo)n(w)-6
b(,)23 b(in)h(the)h(centre)g(of)g(the)396 3045 y(windo)n(w)-6
b(,)23 b(tiled,)h(etc.\))h(are)h(those)e(which)g(start)h(with)f(GR_B)m
(A)l(CKGR)l(OUND_)h(in)g(nano-X.h.)30 b(If)396 3174 y(the)25
b(pixmap)f(v)n(alue)g(is)g(0,)h(the)g(serv)o(er)f(will)g(disable)g(the)
h(background)f(pixmap)g(and)h(return)g(to)396 3304 y(using)f(a)h(solid)
f(colour)g(\002ll.)833 3615 y Fa(wid)k Fh(:)50 b(ID)25
b(of)f(the)h(windo)n(w)f(to)g(set)h(the)f(background)g(of)657
3770 y Fa(pixmap)g Fh(:)50 b(ID)25 b(of)f(the)h(pixmap)f(to)g(use)h(as)
g(the)g(background)717 3924 y Fa(flags)f Fh(:)50 b(\003ags)25
b(specifying)f(ho)n(w)g(to)g(dra)o(w)h(the)f(pixmap)g(onto)g(the)h
(windo)n(w)396 4421 y Fb(GrClearWindo)n(w)34 b(\(\))396
4637 y Fc(void)430 b(GrClearWindow)1019 b(\(GR_WINDOW_ID)52
b(wid,)2817 4753 y(GR_BOOL)h(expose-)396 4870 y(flag\);)p
Black -2 5278 a Fg(16)p Black eop
%%Page: 17 17
17 16 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(Clears)c(the)e(speci\002ed)h(windo)n(w)f(by)g
(setting)g(it)g(to)h(its)f(background)g(color)-5 b(.)30
b(If)25 b(the)g(e)o(xpose\003ag)396 708 y(parameter)g(is)g(non)f(zero,)
h(an)g(e)o(xposure)f(e)n(v)o(ent)g(is)h(generated)g(for)g(the)f(windo)n
(w)g(after)h(it)g(has)f(been)396 838 y(cleared.)833 1129
y Fa(wid)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(clear)
438 1284 y Fa(exposeflag)j Fh(:)d(a)g(\003ag)g(indicating)e(whether)i
(to)g(also)f(generate)h(an)g(e)o(xposure)f(e)n(v)o(ent)396
1905 y Fb(GrCloseWindo)n(w)35 b(\(\))396 2121 y Fc(void)430
b(GrCloseWindow)1019 b(\(GR_WINDOW_ID)52 b(wid\);)396
2350 y Fh(Sends)24 b(a)h(CLOSE_REQ)f(e)n(v)o(ent)f(to)h(the)g
(speci\002ed)g(windo)n(w)f(if)h(the)g(client)f(has)h(selected)g(to)g
(recei)n(v)o(e)396 2480 y(CLOSE_REQ)i(e)n(v)o(ents)d(on)i(this)f(windo)
n(w)-6 b(.)28 b(Used)d(to)f(request)h(an)g(application)f(to)g(shut)g
(do)n(wn)g(b)n(ut)396 2609 y(not)g(force)i(it)e(to)h(do)f(so)h
(immediately)-6 b(,)22 b(so)j(the)f(application)g(can)h(ask)g(whether)g
(to)f(sa)n(v)o(e)h(changed)396 2739 y(\002les)g(before)h(shutting)d(do)
n(wn)g(cleanly)-6 b(.)833 3050 y Fa(wid)28 b Fh(:)50
b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(send)f(the)h(CLOSE_REQ)g(e)
n(v)o(ent)f(to)396 3547 y Fb(GrKillWindo)n(w)34 b(\(\))396
3763 y Fc(void)430 b(GrKillWindow)1073 b(\(GR_WINDOW_ID)52
b(wid\);)396 3992 y Fh(F)o(orcibly)24 b(disconnects)g(the)h(client)f
(which)g(o)n(wns)g(this)g(windo)n(w)f(with)h(the)h(speci\002ed)g(ID)g
(number)-5 b(.)396 4122 y(Used)25 b(to)f(kill)g(an)h(application)f
(which)g(has)h(lock)o(ed)f(up)h(and)g(is)f(not)g(responding)g(to)g
(CLOSE_REQ)396 4251 y(e)n(v)o(ents.)833 4542 y Fa(wid)k
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(kill)p
Black 3780 5278 a Fg(17)p Black eop
%%Page: 18 18
18 17 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black -2 621 a Ff(graphics)47 b(\(3\))396 1101 y Fe(Name)396
1303 y Fd(graphics)23 b Fh(\227)396 1696 y Fe(Synopsis)396
2146 y Fc(GR_GC_ID)214 b(GrNewGC)1343 b(\(void\);)396
2262 y(GR_GC_ID)214 b(GrCopyGC)1289 b(\(GR_GC_ID)52 b(gc\);)396
2379 y(void)430 b(GrGetGCInfo)1127 b(\(GR_GC_ID)52 b(gc,)2817
2495 y(GR_GC_INFO)g(*gcip\);)396 2612 y(void)430 b(GrDestroyGC)1127
b(\(GR_GC_ID)52 b(gc\);)396 2728 y(void)430 b(GrLine)1397
b(\(GR_DRAW_ID)52 b(id,)2817 2845 y(GR_GC_ID)g(gc,)2817
2962 y(GR_COORD)g(x1,)2817 3078 y(GR_COORD)g(y1,)2817
3195 y(GR_COORD)g(x2,)2817 3311 y(GR_COORD)g(y2\);)396
3428 y(void)430 b(GrPoint)1343 b(\(GR_DRAW_ID)52 b(id,)2817
3544 y(GR_GC_ID)g(gc,)2817 3661 y(GR_COORD)g(x,)2817
3777 y(GR_COORD)g(y\);)396 3894 y(void)430 b(GrPoints)1289
b(\(GR_DRAW_ID)52 b(id,)2817 4011 y(GR_GC_ID)g(gc,)2817
4127 y(GR_COUNT)g(count,)2817 4244 y(GR_POINT)g(*pointtable\);)396
4360 y(void)430 b(GrRect)1397 b(\(GR_DRAW_ID)52 b(id,)2817
4477 y(GR_GC_ID)g(gc,)2817 4593 y(GR_COORD)g(x,)2817
4710 y(GR_COORD)g(y,)2817 4827 y(GR_SIZE)h(width,)p Black
-2 5278 a Fg(18)p Black eop
%%Page: 19 19
19 18 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_SIZE)53 b(height\);)396 695 y(void)430
b(GrFillRect)1181 b(\(GR_DRAW_ID)52 b(id,)2817 812 y(GR_GC_ID)g(gc,)
2817 929 y(GR_COORD)g(x,)2817 1045 y(GR_COORD)g(y,)2817
1162 y(GR_SIZE)h(width,)2817 1278 y(GR_SIZE)g(height\);)396
1395 y(void)430 b(GrPoly)1397 b(\(GR_DRAW_ID)52 b(id,)2817
1511 y(GR_GC_ID)g(gc,)2817 1628 y(GR_COUNT)g(count,)2817
1745 y(GR_POINT)g(*pointtable\);)396 1861 y(void)430
b(GrFillPoly)1181 b(\(GR_DRAW_ID)52 b(id,)2817 1978 y(GR_GC_ID)g(gc,)
2817 2094 y(GR_COUNT)g(count,)2817 2211 y(GR_POINT)g(*pointtable\);)396
2327 y(void)430 b(GrEllipse)1235 b(\(GR_DRAW_ID)52 b(id,)2817
2444 y(GR_GC_ID)g(gc,)2817 2560 y(GR_COORD)g(x,)2817
2677 y(GR_COORD)g(y,)2817 2794 y(GR_SIZE)h(rx,)2817 2910
y(GR_SIZE)g(ry\);)396 3027 y(void)430 b(GrFillEllipse)1019
b(\(GR_DRAW_ID)52 b(id,)2817 3143 y(GR_GC_ID)g(gc,)2817
3260 y(GR_COORD)g(x,)2817 3376 y(GR_COORD)g(y,)2817 3493
y(GR_SIZE)h(rx,)2817 3610 y(GR_SIZE)g(ry\);)396 3726
y(void)430 b(GrArc)1451 b(\(GR_DRAW_ID)52 b(id,)2817
3843 y(GR_GC_ID)g(gc,)2817 3959 y(GR_COORD)g(x,)2817
4076 y(GR_COORD)g(y,)2817 4192 y(GR_SIZE)h(rx,)2817 4309
y(GR_SIZE)g(ry,)2817 4425 y(GR_COORD)f(ax,)2817 4542
y(GR_COORD)g(ay,)2817 4659 y(GR_COORD)g(bx,)2817 4775
y(GR_COORD)g(by,)p Black 3784 5278 a Fg(19)p Black eop
%%Page: 20 20
20 19 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(int)53 b(type\);)396 695 y(void)430
b(GrArcAngle)1181 b(\(GR_DRAW_ID)52 b(id,)2817 812 y(GR_GC_ID)g(gc,)
2817 929 y(GR_COORD)g(x,)2817 1045 y(GR_COORD)g(y,)2817
1162 y(GR_SIZE)h(rx,)2817 1278 y(GR_SIZE)g(ry,)2817 1395
y(GR_COORD)f(angle1,)2817 1511 y(GR_COORD)g(angle2,)2817
1628 y(int)h(type\);)396 1745 y(void)430 b(GrSetGCForeground)803
b(\(GR_GC_ID)52 b(gc,)2817 1861 y(GR_COLOR)g(foreground\);)396
1978 y(void)430 b(GrSetGCBackground)803 b(\(GR_GC_ID)52
b(gc,)2817 2094 y(GR_COLOR)g(background\);)396 2211 y(void)430
b(GrSetGCUseBackground)641 b(\(GR_GC_ID)52 b(gc,)2817
2327 y(GR_BOOL)h(flag\);)396 2444 y(void)430 b(GrSetGCMode)1127
b(\(GR_GC_ID)52 b(gc,)2817 2560 y(int)h(mode\);)396 2677
y(void)430 b(GrSetGCFont)1127 b(\(GR_GC_ID)52 b(gc,)2817
2794 y(GR_FONT_ID)g(font\);)396 2910 y(void)430 b(GrGetGCTextSize)911
b(\(GR_GC_ID)52 b(gc,)2817 3027 y(void)h(*str,)2817 3143
y(int)g(count,)2817 3260 y(int)g(flags,)2817 3376 y(GR_SIZE)g
(*retwidth,)2817 3493 y(GR_SIZE)g(*retheight,)2817 3610
y(GR_SIZE)g(*retbase\);)396 3726 y(void)430 b(GrReadArea)1181
b(\(GR_DRAW_ID)52 b(id,)2817 3843 y(GR_COORD)g(x,)2817
3959 y(GR_COORD)g(y,)2817 4076 y(GR_SIZE)h(width,)2817
4192 y(GR_SIZE)g(height,)2817 4309 y(GR_PIXELVAL)f(*pixels\);)396
4425 y(void)430 b(GrArea)1397 b(\(GR_DRAW_ID)52 b(id,)2817
4542 y(GR_GC_ID)g(gc,)2817 4659 y(GR_COORD)g(x,)2817
4775 y(GR_COORD)g(y,)p Black -2 5278 a Fg(20)p Black
eop
%%Page: 21 21
21 20 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_SIZE)53 b(width,)2817 695 y(GR_SIZE)g(height,)
2817 812 y(void)g(*pixels,)2817 929 y(int)g(pixtype\);)396
1045 y(void)430 b(GrCopyArea)1181 b(\(GR_DRAW_ID)52 b(id,)2817
1162 y(GR_GC_ID)g(gc,)2817 1278 y(GR_COORD)g(x,)2817
1395 y(GR_COORD)g(y,)2817 1511 y(GR_SIZE)h(width,)2817
1628 y(GR_SIZE)g(height,)2817 1745 y(GR_DRAW_ID)f(srcid,)2817
1861 y(GR_COORD)g(srcx,)2817 1978 y(GR_COORD)g(srcy,)2817
2094 y(int)h(op\);)396 2211 y(void)430 b(GrBitmap)1289
b(\(GR_DRAW_ID)52 b(id,)2817 2327 y(GR_GC_ID)g(gc,)2817
2444 y(GR_COORD)g(x,)2817 2560 y(GR_COORD)g(y,)2817 2677
y(GR_SIZE)h(width,)2817 2794 y(GR_SIZE)g(height,)2817
2910 y(GR_BITMAP)f(*imagebits\);)396 3027 y(void)430
b(GrFreeImage)1127 b(\(GR_IMAGE_ID)52 b(id\);)396 3143
y(void)430 b(GrGetImageInfo)965 b(\(GR_IMAGE_ID)52 b(id,)2817
3260 y(GR_IMAGE_INFO)f(*iip\);)396 3376 y(void)430 b
(GrDrawImageFromFile)695 b(\(GR_DRAW_ID)52 b(id,)2817
3493 y(GR_GC_ID)g(gc,)2817 3610 y(GR_COORD)g(x,)2817
3726 y(GR_COORD)g(y,)2817 3843 y(GR_SIZE)h(width,)2817
3959 y(GR_SIZE)g(height,)2817 4076 y(char)g(*path,)2817
4192 y(int)g(flags\);)396 4309 y(GR_IMAGE_ID)f(GrLoadImageFromFile)695
b(\(char)53 b(*path,)2817 4425 y(int)g(flags\);)396 4542
y(void)430 b(GrDrawImageToFit)857 b(\(GR_DRAW_ID)52 b(id,)2817
4659 y(GR_GC_ID)g(gc,)2817 4775 y(GR_COORD)g(x,)p Black
3784 5278 a Fg(21)p Black eop
%%Page: 22 22
22 21 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(GR_COORD)52 b(y,)2817 695 y(GR_SIZE)h(width,)2817
812 y(GR_SIZE)g(height,)2817 929 y(GR_IMAGE_ID)f(imageid\);)396
1045 y(void)430 b(GrDrawImageBits)911 b(\(GR_DRAW_ID)52
b(id,)2817 1162 y(GR_GC_ID)g(gc,)2817 1278 y(GR_COORD)g(x,)2817
1395 y(GR_COORD)g(y,)2817 1511 y(GR_IMAGE_HDR)g(*pimage\);)396
1628 y(void)430 b(GrText)1397 b(\(GR_DRAW_ID)52 b(id,)2817
1745 y(GR_GC_ID)g(gc,)2817 1861 y(GR_COORD)g(x,)2817
1978 y(GR_COORD)g(y,)2817 2094 y(void)h(*str,)2817 2211
y(GR_COUNT)f(count,)2817 2327 y(int)h(flags\);)396 2821
y Fe(Description)396 3336 y(Details)396 3681 y Fb(GrNe)n(wGC)34
b(\(\))396 3897 y Fc(GR_GC_ID)214 b(GrNewGC)1343 b(\(void\);)396
4126 y Fh(Creates)26 b(a)f(ne)n(w)f(graphics)h(conte)o(xt)f(structure)g
(and)h(returns)f(the)h(ID)g(used)g(to)f(refer)i(to)e(it.)31
b(The)396 4256 y(structure)25 b(is)f(initialised)f(with)h(a)h(set)g(of)
g(def)o(ault)f(parameters.)706 4567 y Fg(Returns)g Fh(:)50
b(the)24 b(ID)h(of)g(the)g(ne)n(wly)f(created)h(graphics)g(conte)o(xt)e
(or)i(0)g(on)f(error)p Black -2 5278 a Fg(22)p Black
eop
%%Page: 23 23
23 22 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 583 a Fb(GrCop)n(yGC)k(\(\))396 799 y Fc(GR_GC_ID)214
b(GrCopyGC)1289 b(\(GR_GC_ID)52 b(gc\);)396 1028 y Fh(Creates)26
b(a)f(ne)n(w)f(graphics)h(conte)o(xt)f(structure)g(and)h(\002lls)f(it)h
(in)f(with)g(the)h(v)n(alues)f(from)g(the)396 1158 y(speci\002ed)h
(already)g(e)o(xisting)e(graphics)i(conte)o(xt.)896 1470
y Fa(gc)g Fh(:)50 b(the)24 b(already)h(e)o(xisting)e(graphics)i(conte)o
(xt)e(to)i(cop)o(y)f(the)h(parameters)g(from)706 1624
y Fg(Returns)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(ne)n(wly)f(created)h
(graphics)g(conte)o(xt)e(or)i(0)g(on)f(error)396 2120
y Fb(GrGetGCInf)n(o)33 b(\(\))396 2337 y Fc(void)430
b(GrGetGCInfo)1127 b(\(GR_GC_ID)52 b(gc,)2817 2453 y(GR_GC_INFO)g
(*gcip\);)396 2682 y Fh(Fills)24 b(in)h(the)f(speci\002ed)i(GR_GC_INFO)
f(structure)g(with)f(information)f(re)o(garding)h(the)g(speci\002ed)396
2812 y(graphics)h(conte)o(xt.)896 3123 y Fa(gc)g Fh(:)50
b(a)25 b(graphics)f(conte)o(xt)777 3278 y Fa(gcip)g Fh(:)50
b(pointer)24 b(to)g(a)h(GR_GC_INFO)h(structure)396 3774
y Fb(GrDestr)n(o)n(yGC)34 b(\(\))396 3990 y Fc(void)430
b(GrDestroyGC)1127 b(\(GR_GC_ID)52 b(gc\);)396 4219 y
Fh(Destro)o(ys)24 b(the)h(graphics)f(conte)o(xt)g(structure)h(with)f
(the)g(speci\002ed)h(ID.)896 4531 y Fa(gc)g Fh(:)50 b(the)24
b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(structure)g(to)h(destro)o(y)p
Black 3784 5278 a Fg(23)p Black eop
%%Page: 24 24
24 23 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 583 a Fb(GrLine)j(\(\))396 799 y Fc(void)430
b(GrLine)1397 b(\(GR_DRAW_ID)52 b(id,)2817 916 y(GR_GC_ID)g(gc,)2817
1032 y(GR_COORD)g(x1,)2817 1149 y(GR_COORD)g(y1,)2817
1266 y(GR_COORD)g(x2,)2817 1382 y(GR_COORD)g(y2\);)396
1611 y Fh(Dra)o(ws)25 b(a)g(line)f(using)g(the)h(speci\002ed)g
(graphics)f(conte)o(xt)g(on)g(the)h(speci\002ed)g(dra)o(w)o(able)g
(from)f(\(x1,)396 1741 y(y1\))h(to)f(\(x2,)h(y2\),)g(with)f
(coordinates)g(gi)n(v)o(en)f(relati)n(v)o(e)h(to)g(the)h(dra)o(w)o
(able.)893 2052 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(line)f(on)896 2207 y Fa(gc)h
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h
(when)g(dra)o(wing)f(the)g(line)897 2361 y Fa(x1)g Fh(:)50
b(the)24 b(X)h(coordinate)f(of)h(the)g(start)f(of)h(the)g(line)f
(relati)n(v)o(e)g(to)g(the)h(dra)o(w)o(able)897 2516
y Fa(y1)f Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(start)f(of)h
(the)g(line)f(relati)n(v)o(e)g(to)g(the)h(dra)o(w)o(able)897
2670 y Fa(x2)f Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(end)g(of)
g(the)f(line)h(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)897
2824 y Fa(y2)g Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(end)g(of)
g(the)f(line)h(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)396
3321 y Fb(GrP)-5 b(oint)33 b(\(\))396 3537 y Fc(void)430
b(GrPoint)1343 b(\(GR_DRAW_ID)52 b(id,)2817 3654 y(GR_GC_ID)g(gc,)2817
3770 y(GR_COORD)g(x,)2817 3887 y(GR_COORD)g(y\);)396
4116 y Fh(Dra)o(ws)25 b(a)g(point)f(using)f(the)i(speci\002ed)g
(graphics)g(conte)o(xt)e(at)i(the)g(speci\002ed)g(position)e(on)h(the)
396 4245 y(speci\002ed)h(dra)o(w)o(able.)893 4557 y Fa(id)j
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(dra)o(w)f(a)h
(point)f(on)896 4711 y Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(graphics)f(conte)o(xt)g(to)g(use)h(when)g(dra)o(wing)f(the)g(point)p
Black -2 5278 a Fg(24)p Black eop
%%Page: 25 25
25 24 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 951 587 a Fa(x)g Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o
(w)f(the)h(point)f(at)h(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)948
741 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f(the)
h(point)f(at)h(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)396
1237 y Fb(GrP)-5 b(oints)34 b(\(\))396 1454 y Fc(void)430
b(GrPoints)1289 b(\(GR_DRAW_ID)52 b(id,)2817 1570 y(GR_GC_ID)g(gc,)2817
1687 y(GR_COUNT)g(count,)2817 1803 y(GR_POINT)g(*point-)396
1920 y(table\);)396 2149 y Fh(Dra)o(ws)25 b(a)g(set)f(of)h(points)f
(using)g(the)g(speci\002ed)h(graphics)g(conte)o(xt)e(at)i(the)g
(positions)e(speci\002ed)i(by)396 2278 y(the)g(point)f(table)g(on)h
(the)f(speci\002ed)h(dra)o(w)o(able.)893 2590 y Fa(id)j
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(dra)o(w)f(a)h
(point)f(on)896 2744 y Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(graphics)f(conte)o(xt)g(to)g(use)h(when)g(dra)o(wing)f(the)g(point)717
2899 y Fa(count)g Fh(:)50 b(the)24 b(number)g(of)h(points)f(in)g(the)h
(point)f(table)443 3053 y Fa(pointtable)f Fh(:)i(pointer)f(to)g(a)h
(GR_POINT)h(array)f(which)g(lists)e(the)i(points)e(to)i(dra)o(w)396
3654 y Fb(GrRect)34 b(\(\))396 3870 y Fc(void)430 b(GrRect)1397
b(\(GR_DRAW_ID)52 b(id,)2817 3987 y(GR_GC_ID)g(gc,)2817
4104 y(GR_COORD)g(x,)2817 4220 y(GR_COORD)g(y,)2817 4337
y(GR_SIZE)h(width,)2817 4453 y(GR_SIZE)g(height\);)396
4682 y Fh(Dra)o(w)25 b(the)g(boundary)f(of)h(a)g(rectangle)g(of)g(the)f
(speci\002ed)h(dimensions)e(and)i(position)e(on)i(the)396
4812 y(speci\002ed)g(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h
(graphics)g(conte)o(xt.)p Black 3784 5278 a Fg(25)p Black
eop
%%Page: 26 26
26 25 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 893 587 a Fa(id)d Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(rectangle)g(on)896 741 y
Fa(gc)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g
(use)h(when)g(dra)o(wing)f(the)g(rectangle)951 895 y
Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(rectangle)g
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)948 1050
y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(rectangle)g
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)717 1204
y Fa(width)f Fh(:)50 b(the)24 b(width)g(of)h(the)g(rectangle)657
1359 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g(rectangle)396
1855 y Fb(GrFillRect)35 b(\(\))396 2071 y Fc(void)430
b(GrFillRect)1181 b(\(GR_DRAW_ID)52 b(id,)2817 2188 y(GR_GC_ID)g(gc,)
2817 2304 y(GR_COORD)g(x,)2817 2421 y(GR_COORD)g(y,)2817
2537 y(GR_SIZE)h(width,)2817 2654 y(GR_SIZE)g(height\);)396
2883 y Fh(Dra)o(w)25 b(a)g(\002lled)g(rectangle)g(of)g(the)f
(speci\002ed)h(dimensions)e(and)i(position)e(on)i(the)f(speci\002ed)396
3013 y(dra)o(w)o(able)h(using)f(the)g(speci\002ed)h(graphics)g(conte)o
(xt.)893 3324 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(rectangle)g(on)896 3479
y Fa(gc)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g
(to)g(use)h(when)g(dra)o(wing)f(the)g(rectangle)951 3633
y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(rectangle)g
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)948 3788
y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(rectangle)g
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)717 3942
y Fa(width)f Fh(:)50 b(the)24 b(width)g(of)h(the)g(rectangle)657
4096 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g(rectangle)396
4593 y Fb(GrP)-5 b(ol)n(y)34 b(\(\))396 4809 y Fc(void)430
b(GrPoly)1397 b(\(GR_DRAW_ID)52 b(id,)p Black -2 5278
a Fg(26)p Black eop
%%Page: 27 27
27 26 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_GC_ID)52 b(gc,)2817 695 y(GR_COUNT)g(count,)2817
812 y(GR_POINT)g(*point-)396 929 y(table\);)396 1158
y Fh(Dra)o(ws)25 b(an)g(un\002lled)f(polygon)f(on)i(the)g(speci\002ed)g
(dra)o(w)o(able)f(using)g(the)h(speci\002ed)g(graphics)396
1287 y(conte)o(xt.)30 b(The)25 b(polygon)e(is)i(speci\002ed)g(by)f(an)h
(array)h(of)f(point)e(structures.)30 b(The)25 b(polygon)f(is)g(not)396
1417 y(automatically)g(closed-)g(if)h(a)g(closed)g(polygon)e(is)h
(desired,)h(the)g(last)f(point)g(must)f(be)i(the)g(same)f(as)396
1546 y(the)h(\002rst.)893 1838 y Fa(id)j Fh(:)50 b(the)24
b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(dra)o(w)f(the)h(polygon)e(onto)
896 1992 y Fa(gc)i Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)
o(xt)g(to)g(use)h(when)g(dra)o(wing)f(the)g(polygon)717
2146 y Fa(count)g Fh(:)50 b(the)24 b(number)g(of)h(points)f(in)g(the)h
(point)f(array)443 2301 y Fa(pointtable)f Fh(:)i(pointer)f(to)g(an)h
(array)h(of)f(points)e(describing)h(the)h(polygon)396
2922 y Fb(GrFillP)-5 b(ol)n(y)35 b(\(\))396 3138 y Fc(void)430
b(GrFillPoly)1181 b(\(GR_DRAW_ID)52 b(id,)2817 3255 y(GR_GC_ID)g(gc,)
2817 3371 y(GR_COUNT)g(count,)2817 3488 y(GR_POINT)g(*point-)396
3605 y(table\);)396 3834 y Fh(Dra)o(ws)25 b(a)g(\002lled)g(polygon)e
(on)i(the)f(speci\002ed)h(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h
(graphics)g(conte)o(xt.)396 3963 y(The)g(polygon)f(is)g(speci\002ed)h
(by)g(an)f(array)i(of)f(point)f(structures.)30 b(The)25
b(polygon)e(is)h(automatically)396 4093 y(closed-)h(the)g(last)f(point)
g(need)h(not)f(be)h(the)f(same)h(as)g(the)g(\002rst)f(in)h(order)g(for)
g(the)g(polygon)e(to)i(be)396 4222 y(closed.)893 4514
y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(dra)
o(w)f(the)h(polygon)e(onto)896 4668 y Fa(gc)i Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h(when)g
(dra)o(wing)f(the)g(polygon)717 4822 y Fa(count)g Fh(:)50
b(the)24 b(number)g(of)h(points)f(in)g(the)h(point)f(array)p
Black 3780 5278 a Fg(27)p Black eop
%%Page: 28 28
28 27 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 443 587 a Fa(pointtable)23 b Fh(:)i(pointer)f(to)g(an)h(array)h
(of)f(points)e(describing)h(the)h(polygon)396 1208 y
Fb(GrEllipse)34 b(\(\))396 1424 y Fc(void)430 b(GrEllipse)1235
b(\(GR_DRAW_ID)52 b(id,)2817 1541 y(GR_GC_ID)g(gc,)2817
1657 y(GR_COORD)g(x,)2817 1774 y(GR_COORD)g(y,)2817 1890
y(GR_SIZE)h(rx,)2817 2007 y(GR_SIZE)g(ry\);)396 2236
y Fh(Dra)o(ws)25 b(the)f(boundary)h(of)f(ellipse)g(at)h(the)g
(speci\002ed)g(position)e(using)h(the)g(speci\002ed)i(dimensions)396
2365 y(and)f(graphics)f(conte)o(xt)g(on)h(the)f(speci\002ed)h(dra)o(w)o
(able.)893 2677 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(ellipse)f(on)896 2831 y
Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g
(use)h(when)g(dra)o(wing)f(the)g(ellipse)951 2986 y Fa(x)30
b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)h(ellipse)f
(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)948
3140 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f
(the)h(ellipse)f(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)891
3295 y Fa(rx)30 b Fh(:)50 b(the)24 b(radius)h(of)f(the)h(ellipse)f(on)h
(the)f(X)h(axis)888 3449 y Fa(ry)33 b Fh(:)50 b(the)24
b(radius)h(of)f(the)h(ellipse)f(on)h(the)f(Y)h(axis)396
3946 y Fb(GrFillEllipse)35 b(\(\))396 4162 y Fc(void)430
b(GrFillEllipse)1019 b(\(GR_DRAW_ID)52 b(id,)2817 4278
y(GR_GC_ID)g(gc,)2817 4395 y(GR_COORD)g(x,)2817 4511
y(GR_COORD)g(y,)2817 4628 y(GR_SIZE)h(rx,)2817 4745 y(GR_SIZE)g(ry\);)p
Black -2 5278 a Fg(28)p Black eop
%%Page: 29 29
29 28 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(Dra)o(ws)25 b(a)g(\002lled)g(ellipse)f(at)g(the)h
(speci\002ed)g(position)e(using)h(the)h(speci\002ed)g(dimensions)d(and)
396 708 y(graphics)j(conte)o(xt)e(on)i(the)g(speci\002ed)g(dra)o(w)o
(able.)893 1020 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(\002lled)g(ellipse)f(on)896
1174 y Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o
(xt)g(to)g(use)h(when)g(dra)o(wing)f(the)g(ellipse)951
1329 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f
(the)h(ellipse)f(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)948
1483 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f
(the)h(ellipse)f(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)891
1638 y Fa(rx)30 b Fh(:)50 b(the)24 b(radius)h(of)f(the)h(ellipse)f(on)h
(the)f(X)h(axis)888 1792 y Fa(ry)33 b Fh(:)50 b(the)24
b(radius)h(of)f(the)h(ellipse)f(on)h(the)f(Y)h(axis)396
2289 y Fb(GrAr)n(c)33 b(\(\))396 2505 y Fc(void)430 b(GrArc)1451
b(\(GR_DRAW_ID)52 b(id,)2817 2621 y(GR_GC_ID)g(gc,)2817
2738 y(GR_COORD)g(x,)2817 2854 y(GR_COORD)g(y,)2817 2971
y(GR_SIZE)h(rx,)2817 3088 y(GR_SIZE)g(ry,)2817 3204 y(GR_COORD)f(ax,)
2817 3321 y(GR_COORD)g(ay,)2817 3437 y(GR_COORD)g(bx,)2817
3554 y(GR_COORD)g(by,)2817 3670 y(int)h(type\);)396 3899
y Fh(Dra)o(ws)25 b(an)g(arc)g(with)f(the)h(speci\002ed)g(dimensions)e
(at)i(the)f(speci\002ed)h(position)e(on)i(the)g(speci\002ed)396
4029 y(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h(graphics)g(conte)o
(xt.)k(The)c(type)g(speci\002es)g(the)f(\002ll)h(type.)30
b(Possible)396 4158 y(v)n(alues)24 b(include)g(GR_ARC)i(and)f(GR_PIE.)
893 4460 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f
(to)h(dra)o(w)f(the)h(arc)g(on)896 4615 y Fa(gc)g Fh(:)50
b(the)24 b(graphics)h(conte)o(xt)e(to)i(use)f(when)h(dra)o(wing)f(the)h
(arc)951 4769 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)
o(w)f(the)h(arc)h(at)e(relati)n(v)o(e)g(to)h(the)f(dra)o(w)o(able)p
Black 3784 5278 a Fg(29)p Black eop
%%Page: 30 30
30 29 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 948 587 a Fa(y)i Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o
(w)f(the)h(arc)h(at)e(relati)n(v)o(e)g(to)h(the)f(dra)o(w)o(able)891
741 y Fa(rx)30 b Fh(:)50 b(the)24 b(radius)h(of)f(the)h(arc)h(on)e(the)
h(X)g(axis)888 895 y Fa(ry)33 b Fh(:)50 b(the)24 b(radius)h(of)f(the)h
(arc)h(on)e(the)h(Y)g(axis)891 1050 y Fa(ax)30 b Fh(:)50
b(the)24 b(X)h(coordinate)f(of)h(the)g(start)f(of)h(the)g(arc)h(relati)
n(v)o(e)d(to)i(the)f(dra)o(w)o(able)888 1204 y Fa(ay)33
b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(start)f(of)h(the)g
(arc)h(relati)n(v)o(e)d(to)i(the)f(dra)o(w)o(able)891
1359 y Fa(bx)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(end)g
(of)g(the)f(arc)i(relati)n(v)o(e)e(to)g(the)h(dra)o(w)o(able)888
1513 y Fa(by)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(end)g
(of)g(the)f(arc)i(relati)n(v)o(e)e(to)g(the)h(dra)o(w)o(able)777
1667 y Fa(type)f Fh(:)50 b(the)24 b(\002ll)h(style)f(to)g(use)h(when)g
(dra)o(wing)f(the)g(arc)396 2174 y Fb(GrAr)n(cAngle)34
b(\(\))396 2390 y Fc(void)430 b(GrArcAngle)1181 b(\(GR_DRAW_ID)52
b(id,)2817 2507 y(GR_GC_ID)g(gc,)2817 2623 y(GR_COORD)g(x,)2817
2740 y(GR_COORD)g(y,)2817 2856 y(GR_SIZE)h(rx,)2817 2973
y(GR_SIZE)g(ry,)2817 3089 y(GR_COORD)f(angle1,)2817 3206
y(GR_COORD)g(angle2,)2817 3322 y(int)h(type\);)396 3552
y Fh(Dra)o(ws)25 b(an)g(arc)g(with)f(the)h(speci\002ed)g(dimensions)e
(at)i(the)f(speci\002ed)h(position)e(on)i(the)g(speci\002ed)396
3681 y(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h(graphics)g(conte)o
(xt.)k(The)c(type)g(speci\002es)g(the)f(\002ll)h(type.)30
b(Possible)396 3811 y(v)n(alues)24 b(include)g(GR_ARC)i(and)f(GR_PIE.)h
(This)e(function)g(requires)g(\003oating)h(point)e(support,)396
3940 y(and)i(is)f(slightly)f(slo)n(wer)h(than)h(the)f(GrArc\(\))i
(function)e(which)g(does)h(not)f(require)h(\003oating)g(point.)893
4252 y Fa(id)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h
(dra)o(w)f(the)h(arc)g(on)896 4406 y Fa(gc)g Fh(:)50
b(the)24 b(graphics)h(conte)o(xt)e(to)i(use)f(when)h(dra)o(wing)f(the)h
(arc)951 4561 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)
o(w)f(the)h(arc)h(at)e(relati)n(v)o(e)g(to)h(the)f(dra)o(w)o(able)948
4715 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f
(the)h(arc)h(at)e(relati)n(v)o(e)g(to)h(the)f(dra)o(w)o(able)p
Black -2 5278 a Fg(30)p Black eop
%%Page: 31 31
31 30 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 891 587 a Fa(rx)g Fh(:)50 b(the)24 b(radius)h(of)f(the)h(arc)h
(on)e(the)h(X)g(axis)888 741 y Fa(ry)33 b Fh(:)50 b(the)24
b(radius)h(of)f(the)h(arc)h(on)e(the)h(Y)g(axis)657 895
y Fa(angle1)f Fh(:)50 b(the)24 b(angle)h(of)g(the)f(start)h(of)g(the)f
(arc)657 1050 y Fa(angle2)g Fh(:)50 b(the)24 b(angle)h(of)g(the)f(end)h
(of)g(the)g(arc)777 1204 y Fa(type)f Fh(:)50 b(the)24
b(\002ll)h(style)f(to)g(use)h(when)g(dra)o(wing)f(the)g(arc)396
1701 y Fb(GrSetGCForegr)n(ound)33 b(\(\))396 1917 y Fc(void)430
b(GrSetGCForeground)803 b(\(GR_GC_ID)52 b(gc,)2817 2033
y(GR_COLOR)g(fore-)396 2150 y(ground\);)396 2379 y Fh(Changes)25
b(the)g(fore)o(ground)f(colour)g(of)h(the)g(speci\002ed)g(graphics)f
(conte)o(xt)g(to)h(the)f(speci\002ed)h(colour)-5 b(.)896
2691 y Fa(gc)25 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o
(xt)g(to)g(set)h(the)g(fore)o(ground)f(colour)g(of)439
2845 y Fa(foreground)j Fh(:)e(the)f(colour)h(to)f(use)h(as)g(the)f(ne)n
(w)h(fore)o(ground)f(colour)396 3446 y Fb(GrSetGCBac)n(kgr)n(ound)34
b(\(\))396 3662 y Fc(void)430 b(GrSetGCBackground)803
b(\(GR_GC_ID)52 b(gc,)2817 3779 y(GR_COLOR)g(back-)396
3895 y(ground\);)396 4125 y Fh(Changes)24 b(the)f(background)g(colour)g
(of)g(the)h(speci\002ed)f(graphics)g(conte)o(xt)f(to)h(the)h
(speci\002ed)f(colour)-5 b(.)896 4436 y Fa(gc)25 b Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(set)h(the)g
(background)f(colour)g(of)439 4591 y Fa(background)j
Fh(:)e(the)f(colour)h(to)f(use)h(as)g(the)f(ne)n(w)h(background)f
(colour)p Black 3784 5278 a Fg(31)p Black eop
%%Page: 32 32
32 31 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 583 a Fb(GrSetGCUseBac)n(kgr)n(ound)k(\(\))396
799 y Fc(void)430 b(GrSetGCUseBackground)641 b(\(GR_GC_ID)52
b(gc,)2817 916 y(GR_BOOL)h(flag\);)396 1145 y Fh(Sets)25
b(the)g(\003ag)g(which)g(chooses)f(whether)h(or)g(not)f(the)h
(background)f(colour)g(is)h(used)f(when)396 1275 y(dra)o(wing)g
(bitmaps)g(and)g(te)o(xt)g(using)g(the)h(speci\002ed)g(graphics)f
(conte)o(xt)g(to)g(the)h(speci\002ed)g(v)n(alue.)896
1586 y Fa(gc)g Fh(:)50 b(the)23 b(ID)g(of)h(the)f(graphics)g(conte)o
(xt)f(to)h(change)g(the)g("use)g(background")f(\003ag)i(of)771
1741 y Fa(flag)30 b Fh(:)50 b(\003ag)25 b(specifying)f(whether)h(to)f
(use)h(the)f(background)h(colour)f(or)h(not)396 2237
y Fb(GrSetGCMode)34 b(\(\))396 2453 y Fc(void)430 b(GrSetGCMode)1127
b(\(GR_GC_ID)52 b(gc,)2817 2570 y(int)h(mode\);)396 2799
y Fh(Changes)25 b(the)g(dra)o(wing)f(mode)g(\(SET)-7
b(,)25 b(XOR,)g(OR,)g(AND,)g(etc.\))g(of)g(the)f(speci\002ed)i
(graphics)396 2928 y(conte)o(xt)e(to)g(the)h(speci\002ed)g(mode.)896
3240 y Fa(gc)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o
(xt)g(to)g(set)h(the)g(dra)o(wing)e(mode)i(of)777 3394
y Fa(mode)f Fh(:)50 b(the)24 b(ne)n(w)h(dra)o(wing)e(mode)396
3891 y Fb(GrSetGCFont)33 b(\(\))396 4107 y Fc(void)430
b(GrSetGCFont)1127 b(\(GR_GC_ID)52 b(gc,)2817 4223 y(GR_FONT_ID)g
(font\);)396 4453 y Fh(Sets)25 b(the)g(font)f(to)h(be)g(used)f(for)h
(te)o(xt)f(dra)o(wing)g(in)g(the)h(speci\002ed)g(graphics)g(conte)o(xt)
e(to)i(the)396 4582 y(speci\002ed)g(font)g(ID.)p Black
-2 5278 a Fg(32)p Black eop
%%Page: 33 33
33 32 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 896 587 a Fa(gc)25 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)
f(conte)o(xt)g(to)g(set)h(the)g(font)f(of)777 741 y Fa(font)g
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(font)396 1237 y Fb(GrGetGCT)-7
b(e)n(xtSiz)q(e)35 b(\(\))396 1454 y Fc(void)430 b(GrGetGCTextSize)911
b(\(GR_GC_ID)52 b(gc,)2817 1570 y(void)h(*str,)2817 1687
y(int)g(count,)2817 1803 y(int)g(flags,)2817 1920 y(GR_SIZE)g
(*retwidth,)2817 2036 y(GR_SIZE)g(*retheight,)2817 2153
y(GR_SIZE)g(*retbase\);)396 2382 y Fh(Calculates)25 b(the)g(dimensions)
e(of)i(the)f(speci\002ed)h(te)o(xt)f(string)g(using)g(the)g(current)h
(font)g(and)g(\003ags)g(in)396 2512 y(the)g(speci\002ed)g(graphics)f
(conte)o(xt.)30 b(The)25 b(count)f(ar)n(gument)h(can)g(be)g(-1)g(if)f
(the)h(string)f(is)g(null)396 2641 y(terminated.)896
2932 y Fa(gc)h Fh(:)50 b(the)24 b(graphics)h(conte)o(xt)833
3087 y Fa(str)j Fh(:)50 b(pointer)24 b(to)g(a)h(te)o(xt)f(string)717
3241 y Fa(count)g Fh(:)50 b(the)24 b(length)g(of)h(the)g(string)717
3396 y Fa(flags)f Fh(:)50 b(te)o(xt)23 b(rendering)i(\003ags)g
(\(GR_TF*\))538 3550 y Fa(retwidth)e Fh(:)50 b(pointer)24
b(to)g(the)h(v)n(ariable)f(the)h(width)f(will)f(be)i(returned)g(in)478
3705 y Fa(retheight)e Fh(:)50 b(pointer)24 b(to)g(the)h(v)n(ariable)f
(the)h(height)f(will)g(be)h(returned)f(in)598 3859 y
Fa(retbase)f Fh(:)50 b(pointer)24 b(to)g(the)h(v)n(ariable)f(the)h
(baseline)f(height)g(will)g(be)h(returned)g(in)396 4376
y Fb(GrReadArea)35 b(\(\))396 4592 y Fc(void)430 b(GrReadArea)1181
b(\(GR_DRAW_ID)52 b(id,)2817 4708 y(GR_COORD)g(x,)2817
4825 y(GR_COORD)g(y,)p Black 3784 5278 a Fg(33)p Black
eop
%%Page: 34 34
34 33 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(GR_SIZE)53 b(width,)2817 695 y(GR_SIZE)g(height,)
2817 812 y(GR_PIXELVAL)f(*pix-)396 929 y(els\);)396 1158
y Fh(Reads)26 b(the)e(pix)o(el)g(data)h(of)g(the)f(speci\002ed)h(size)g
(from)g(the)g(speci\002ed)g(position)e(on)h(the)h(speci\002ed)396
1287 y(dra)o(w)o(able)g(into)f(the)g(speci\002ed)h(pix)o(el)f(array)-6
b(.)31 b(If)25 b(the)g(dra)o(w)o(able)g(is)f(a)h(windo)n(w)-6
b(,)23 b(the)h(data)h(returned)396 1417 y(will)f(be)h(the)g(pix)o(el)e
(v)n(alues)h(from)h(the)g(rele)n(v)n(ant)e(position)g(on)i(the)g
(screen)g(re)o(gardless)f(of)h(whether)396 1546 y(the)g(windo)n(w)e(is)
i(obscured)f(by)h(other)f(windo)n(ws.)29 b(If)d(the)e(windo)n(w)g(is)g
(unmapped,)g(or)h(partially)f(or)396 1676 y(fully)g(outside)g(a)h
(windo)n(w)f(boundary)-6 b(,)23 b(black)i(pix)o(el)f(v)n(alues)g(will)g
(be)g(returned.)893 1987 y Fa(id)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(dra)o(w)o(able)f(to)h(read)g(an)g(area)h(from)951 2142
y Fa(x)k Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(read)g(the)g(area)h
(from)e(relati)n(v)o(e)g(to)g(the)h(dra)o(w)o(able)948
2296 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(read)g(the)g
(area)h(from)e(relati)n(v)o(e)g(to)g(the)h(dra)o(w)o(able)717
2451 y Fa(width)f Fh(:)50 b(the)24 b(width)g(of)h(the)g(area)g(to)g
(read)657 2605 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g
(area)g(to)g(read)657 2759 y Fa(pixels)f Fh(:)50 b(pointer)24
b(to)g(an)h(area)h(of)f(memory)f(to)g(place)h(the)g(pix)o(el)f(data)g
(in)396 3256 y Fb(GrArea)34 b(\(\))396 3472 y Fc(void)430
b(GrArea)1397 b(\(GR_DRAW_ID)52 b(id,)2817 3589 y(GR_GC_ID)g(gc,)2817
3705 y(GR_COORD)g(x,)2817 3822 y(GR_COORD)g(y,)2817 3938
y(GR_SIZE)h(width,)2817 4055 y(GR_SIZE)g(height,)2817
4171 y(void)g(*pixels,)2817 4288 y(int)g(pixtype\);)396
4517 y Fh(Dra)o(ws)25 b(the)f(speci\002ed)h(pix)o(el)f(array)i(of)f
(the)f(speci\002ed)h(size)g(and)g(format)f(onto)g(the)h(speci\002ed)396
4647 y(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h(graphics)g(conte)o
(xt)e(at)i(the)g(speci\002ed)g(position.)k(Note)24 b(that)h(colour)396
4776 y(con)l(v)o(ersion)f(is)g(currently)h(only)f(performed)h(when)f
(using)g(the)h(GR_PF_RGB)h(format,)f(which)f(is)p Black
-2 5278 a Fg(34)p Black eop
%%Page: 35 35
35 34 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(an)25 b(unsigned)f(long)g(containing)f(RGBX)j(data.)
893 890 y Fa(id)i Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f
(to)h(dra)o(w)f(the)h(area)h(onto)896 1045 y Fa(gc)f
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h
(when)g(dra)o(wing)f(the)g(area)951 1199 y Fa(x)30 b
Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)h(area)h(at)f
(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)948 1354
y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f(the)h
(area)h(at)f(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)717
1508 y Fa(width)g Fh(:)50 b(the)24 b(width)g(of)h(the)g(area)657
1663 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g(area)657
1817 y Fa(pixels)f Fh(:)50 b(pointer)24 b(to)g(an)h(array)h(containing)
d(the)i(pix)o(el)e(data)598 1971 y Fa(pixtype)g Fh(:)50
b(the)24 b(format)h(of)g(the)f(pix)o(el)g(data)396 2468
y Fb(GrCop)n(yArea)35 b(\(\))396 2684 y Fc(void)430 b(GrCopyArea)1181
b(\(GR_DRAW_ID)52 b(id,)2817 2801 y(GR_GC_ID)g(gc,)2817
2917 y(GR_COORD)g(x,)2817 3034 y(GR_COORD)g(y,)2817 3150
y(GR_SIZE)h(width,)2817 3267 y(GR_SIZE)g(height,)2817
3383 y(GR_DRAW_ID)f(srcid,)2817 3500 y(GR_COORD)g(srcx,)2817
3617 y(GR_COORD)g(srcy,)2817 3733 y(int)h(op\);)396 3962
y Fh(Copies)25 b(the)g(speci\002ed)g(area)g(of)g(the)g(speci\002ed)g
(size)g(between)g(the)f(speci\002ed)h(dra)o(w)o(ables)g(at)g(the)396
4092 y(speci\002ed)g(positions)e(using)h(the)h(speci\002ed)g(graphics)f
(conte)o(xt)g(and)h(R)l(OP)g(codes.)31 b(0)25 b(is)f(a)h(sensible)396
4221 y(def)o(ault)g(R)l(OP)h(code)f(in)f(most)g(cases.)893
4513 y Fa(id)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h
(cop)o(y)f(the)h(area)h(to)896 4667 y Fa(gc)f Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h(when)g
(cop)o(ying)f(the)g(area)951 4821 y Fa(x)30 b Fh(:)50
b(the)24 b(X)h(coordinate)f(to)h(cop)o(y)f(the)h(area)h(to)e(within)g
(the)h(destination)e(dra)o(w)o(able)p Black 3784 5278
a Fg(35)p Black eop
%%Page: 36 36
36 35 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 948 587 a Fa(y)i Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(cop)o
(y)f(the)h(area)h(to)e(within)g(the)h(destination)e(dra)o(w)o(able)717
741 y Fa(width)h Fh(:)50 b(the)24 b(width)g(of)h(the)g(area)g(to)g(cop)
o(y)657 895 y Fa(height)f Fh(:)50 b(the)24 b(height)g(of)h(the)g(area)g
(to)g(cop)o(y)713 1050 y Fa(srcid)j Fh(:)50 b(the)24
b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(cop)o(y)f(the)h(area)h(from)772
1204 y Fa(srcx)j Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(cop)o(y)f
(the)h(area)h(from)e(within)g(the)h(source)g(dra)o(w)o(able)769
1359 y Fa(srcy)32 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(cop)o(y)f
(the)h(area)h(from)e(within)g(the)h(source)g(dra)o(w)o(able)896
1513 y Fa(op)g Fh(:)50 b(the)24 b(R)l(OP)i(codes)f(to)f(pass)h(to)f
(the)h(blitter)e(when)i(performing)f(the)h(cop)o(y)396
2030 y Fb(GrBitmap)34 b(\(\))396 2246 y Fc(void)430 b(GrBitmap)1289
b(\(GR_DRAW_ID)52 b(id,)2817 2362 y(GR_GC_ID)g(gc,)2817
2479 y(GR_COORD)g(x,)2817 2596 y(GR_COORD)g(y,)2817 2712
y(GR_SIZE)h(width,)2817 2829 y(GR_SIZE)g(height,)2817
2945 y(GR_BITMAP)f(*im-)396 3062 y(agebits\);)396 3291
y Fh(Dra)o(ws)25 b(the)f(monochrome)g(bitmap)g(data)h(pro)o(vided)e(in)
i(the)f(bitmaptable)g(ar)n(gument)g(at)h(the)396 3421
y(speci\002ed)g(position)e(on)i(the)g(speci\002ed)g(dra)o(w)o(able)f
(using)g(the)h(speci\002ed)g(graphics)f(conte)o(xt.)30
b(Note)396 3550 y(that)25 b(the)f(bitmap)g(data)h(should)e(be)i(an)g
(array)h(of)f(aligned)f(16)g(bit)h(w)o(ords.)30 b(The)25
b(usebackground)396 3680 y(\003ag)g(in)e(the)h(graphics)g(conte)o(xt)e
(speci\002es)j(whether)e(to)h(dra)o(w)g(the)f(background)h(colour)f
(where)n(v)o(er)h(a)396 3809 y(bit)g(v)n(alue)h(is)f(zero.)893
4100 y Fa(id)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h
(dra)o(w)f(the)h(bitmap)f(onto)896 4255 y Fa(gc)h Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h(when)g
(dra)o(wing)f(the)g(bitmap)951 4409 y Fa(x)30 b Fh(:)50
b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)h(bitmap)f(at)h(relati)n
(v)o(e)e(to)i(the)f(dra)o(w)o(able)948 4564 y Fa(y)33
b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f(the)h(bitmap)f(at)
h(relati)n(v)o(e)e(to)i(the)f(dra)o(w)o(able)717 4718
y Fa(width)g Fh(:)50 b(the)24 b(width)g(of)h(the)g(bitmap)p
Black -2 5278 a Fg(36)p Black eop
%%Page: 37 37
37 36 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 657 587 a Fa(height)24 b Fh(:)50 b(the)24 b(height)g(of)h(the)g
(bitmap)478 741 y Fa(imagebits)e Fh(:)396 1258 y Fb(GrFreeIma)o(g)q(e)
35 b(\(\))396 1474 y Fc(void)430 b(GrFreeImage)1127 b(\(GR_IMAGE_ID)52
b(id\);)396 1703 y Fh(Destro)o(ys)24 b(the)h(speci\002ed)g(image)f(b)n
(uf)n(fer)h(and)g(reclaims)f(the)h(memory)f(used)h(by)f(it.)893
2015 y Fa(id)k Fh(:)50 b(ID)25 b(of)f(the)h(image)g(b)n(uf)n(fer)f(to)h
(free)396 2511 y Fb(GrGetIma)o(g)q(eInf)n(o)35 b(\(\))396
2727 y Fc(void)430 b(GrGetImageInfo)965 b(\(GR_IMAGE_ID)52
b(id,)2817 2844 y(GR_IMAGE_INFO)f(*iip\);)396 3073 y
Fh(Fills)24 b(in)h(the)f(speci\002ed)i(image)e(information)f(structure)
i(with)f(the)g(details)g(of)h(the)g(speci\002ed)g(image)396
3202 y(b)n(uf)n(fer)-5 b(.)893 3494 y Fa(id)28 b Fh(:)50
b(ID)25 b(of)f(an)h(image)g(b)n(uf)n(fer)836 3648 y Fa(iip)g
Fh(:)50 b(pointer)24 b(to)g(a)h(GR_IMA)l(GE_INFO)g(structure)396
4165 y Fb(GrDra)n(wIma)o(g)q(eFr)n(omFile)35 b(\(\))396
4381 y Fc(void)430 b(GrDrawImageFromFile)695 b(\(GR_DRAW_ID)52
b(id,)2817 4497 y(GR_GC_ID)g(gc,)2817 4614 y(GR_COORD)g(x,)2817
4731 y(GR_COORD)g(y,)2817 4847 y(GR_SIZE)h(width,)p Black
3780 5278 a Fg(37)p Black eop
%%Page: 38 38
38 37 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(GR_SIZE)53 b(height,)2817 695 y(char)g(*path,)2817
812 y(int)g(flags\);)396 1041 y Fh(Loads)25 b(the)f(speci\002ed)h
(image)g(\002le)g(and)g(dra)o(ws)f(it)g(at)h(the)g(speci\002ed)g
(position)e(on)h(the)h(speci\002ed)396 1171 y(dra)o(w)o(able)g(using)f
(the)g(speci\002ed)h(graphics)g(conte)o(xt.)k(The)c(width)f(and)h
(height)f(v)n(alues)g(specify)g(the)396 1300 y(size)h(of)g(the)g(image)
f(to)g(dra)o(w-)h(if)g(the)g(actual)f(image)h(is)f(a)h(dif)n(ferent)g
(size,)f(it)h(will)f(be)h(scaled)f(to)h(\002t.)396 1430
y(The)g(image)f(type)h(is)f(automatically)g(detected)g(using)g(the)h
(magic)f(numbers)g(in)h(the)f(image)h(header)396 1559
y(\(ie.)31 b(the)25 b(\002lename)g(e)o(xtension)e(is)h(irrele)n(v)n
(ant\).)30 b(The)25 b(currently)g(supported)e(image)i(types)f(include)
396 1689 y(GIF)-8 b(,)26 b(JPEG,)e(W)l(indo)n(ws)g(BMP)-11
b(,)25 b(PNG,)g(XPM,)g(and)f(both)g(ascii)h(and)g(binary)f(v)n(ariants)
g(of)h(PBM,)396 1818 y(PGM,)g(and)g(PPM.)g(Ho)n(we)n(v)o(er)e(the)i
(image)f(types)h(supported)f(by)g(a)h(particular)g(serv)o(er)g(depend)f
(on)396 1948 y(which)h(image)f(types)g(were)i(enabled)e(in)h(the)g
(serv)o(er)f(con\002guration)h(at)f(b)n(uild)g(time.)893
2259 y Fa(id)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h
(dra)o(w)f(the)h(image)f(onto)896 2414 y Fa(gc)h Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h(when)g
(dra)o(wing)f(the)g(image)951 2568 y Fa(x)30 b Fh(:)50
b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)h(image)f(at)h(relati)n
(v)o(e)f(to)g(the)h(dra)o(w)o(able)948 2723 y Fa(y)33
b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f(the)h(image)f(at)h
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)717 2877
y Fa(width)f Fh(:)50 b(the)24 b(maximum)f(image)i(width)657
3031 y Fa(height)f Fh(:)50 b(the)24 b(maximum)f(image)i(height)777
3186 y Fa(path)f Fh(:)50 b(string)23 b(containing)h(the)h(\002lename)g
(of)f(the)h(image)g(to)f(load)717 3340 y Fa(flags)g Fh(:)50
b(\003ags)25 b(speci\002c)g(to)f(the)h(particular)g(image)f(loader)396
3837 y Fb(GrLoadIma)o(g)q(eFr)n(omFile)36 b(\(\))396
4053 y Fc(GR_IMAGE_ID)52 b(GrLoadImageFromFile)695 b(\(char)53
b(*path,)2817 4169 y(int)g(flags\);)396 4399 y Fh(Loads)25
b(the)f(speci\002ed)h(image)g(\002le)g(into)f(a)h(ne)n(wly)f(created)h
(serv)o(er)g(image)g(b)n(uf)n(fer)f(and)h(returns)g(the)396
4528 y(ID)g(of)g(the)g(b)n(uf)n(fer)-5 b(.)30 b(The)25
b(image)f(type)h(is)f(automatically)f(detected)i(using)f(the)h(magic)f
(numbers)g(in)396 4658 y(the)h(image)f(header)i(\(ie.)31
b(the)24 b(\002lename)h(e)o(xtension)f(is)g(irrele)n(v)n(ant\).)30
b(The)24 b(currently)h(supported)396 4787 y(image)g(types)f(include)g
(GIF)-8 b(,)25 b(JPEG,)g(W)l(indo)n(ws)e(BMP)-11 b(,)26
b(PNG,)f(XPM,)f(and)h(both)f(ascii)h(and)f(binary)p Black
-2 5278 a Fg(38)p Black eop
%%Page: 39 39
39 38 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(v)n(ariants)24 b(of)h(PBM,)g(PGM,)g(and)g(PPM.)g(Ho)
n(we)n(v)o(er)e(the)i(image)f(types)h(supported)e(by)i(a)g(particular)
396 708 y(serv)o(er)g(depend)g(on)f(which)h(image)f(types)g(were)i
(enabled)e(in)h(the)g(serv)o(er)f(con\002guration)h(at)f(b)n(uild)396
838 y(time.)777 1129 y Fa(path)g Fh(:)50 b(string)23
b(containing)h(the)h(\002lename)g(of)f(the)h(image)g(to)f(load)717
1284 y Fa(flags)g Fh(:)50 b(\003ags)25 b(speci\002c)g(to)f(the)h
(particular)g(image)f(loader)706 1438 y Fg(Returns)g
Fh(:)50 b(ID)25 b(of)f(the)h(image)g(b)n(uf)n(fer)f(the)h(image)f(w)o
(as)h(loaded)g(into)396 1955 y Fb(GrDra)n(wIma)o(g)q(eT)-10
b(oFit)36 b(\(\))396 2171 y Fc(void)430 b(GrDrawImageToFit)857
b(\(GR_DRAW_ID)52 b(id,)2817 2288 y(GR_GC_ID)g(gc,)2817
2404 y(GR_COORD)g(x,)2817 2521 y(GR_COORD)g(y,)2817 2637
y(GR_SIZE)h(width,)2817 2754 y(GR_SIZE)g(height,)2817
2870 y(GR_IMAGE_ID)f(im-)396 2987 y(ageid\);)396 3216
y Fh(Dra)o(ws)25 b(the)f(image)h(from)f(the)h(speci\002ed)g(image)f(b)n
(uf)n(fer)h(at)g(the)g(speci\002ed)g(position)e(on)h(the)396
3346 y(speci\002ed)h(dra)o(w)o(able)g(using)f(the)g(speci\002ed)h
(graphics)g(conte)o(xt.)k(The)c(width)f(and)h(height)f(v)n(alues)396
3475 y(specify)h(the)g(size)f(of)h(the)g(image)f(to)h(dra)o(w-)f(if)h
(the)g(actual)g(image)f(is)g(a)i(dif)n(ferent)e(size,)h(it)f(will)g(be)
396 3605 y(scaled)h(to)g(\002t.)893 3896 y Fa(id)j Fh(:)50
b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h(dra)o(w)f(the)h(image)
f(onto)896 4050 y Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f
(conte)o(xt)g(to)g(use)h(when)g(dra)o(wing)f(the)g(image)951
4205 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f
(the)h(image)f(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)948
4359 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f
(the)h(image)f(at)h(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)717
4514 y Fa(width)f Fh(:)50 b(the)24 b(maximum)f(image)i(width)657
4668 y Fa(height)f Fh(:)50 b(the)24 b(maximum)f(image)i(height)594
4822 y Fa(imageid)i Fh(:)50 b(the)24 b(ID)h(of)g(the)g(image)f(b)n(uf)n
(fer)h(containing)e(the)i(image)g(to)f(display)p Black
3784 5278 a Fg(39)p Black eop
%%Page: 40 40
40 39 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 583 a Fb(GrDra)n(wIma)o(g)q(eBits)36 b(\(\))396
799 y Fc(void)430 b(GrDrawImageBits)911 b(\(GR_DRAW_ID)52
b(id,)2817 916 y(GR_GC_ID)g(gc,)2817 1032 y(GR_COORD)g(x,)2817
1149 y(GR_COORD)g(y,)2817 1266 y(GR_IMAGE_HDR)g(*pim-)396
1382 y(age\);)396 1611 y Fh(Dra)o(ws)25 b(the)f(image)h(contained)f(in)
g(the)h(speci\002ed)g(image)g(structure)f(onto)g(the)h(speci\002ed)g
(dra)o(w)o(able)396 1741 y(at)g(the)g(speci\002ed)g(coordinates)f
(using)g(the)g(speci\002ed)i(graphics)e(conte)o(xt.)893
2052 y Fa(id)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o(able)f(to)h
(dra)o(w)f(the)h(image)f(onto)896 2207 y Fa(gc)h Fh(:)50
b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)g(to)g(use)h(when)g
(dra)o(wing)f(the)g(image)951 2361 y Fa(x)30 b Fh(:)50
b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)h(image)f(at)h(relati)n
(v)o(e)f(to)g(the)h(dra)o(w)o(able)948 2516 y Fa(y)33
b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f(the)h(image)f(at)h
(relati)n(v)o(e)f(to)g(the)h(dra)o(w)o(able)657 2670
y Fa(pimage)f Fh(:)50 b(pointer)24 b(to)g(the)h(image)f(structure)396
3166 y Fb(GrT)-7 b(e)n(xt)34 b(\(\))396 3383 y Fc(void)430
b(GrText)1397 b(\(GR_DRAW_ID)52 b(id,)2817 3499 y(GR_GC_ID)g(gc,)2817
3616 y(GR_COORD)g(x,)2817 3732 y(GR_COORD)g(y,)2817 3849
y(void)h(*str,)2817 3965 y(GR_COUNT)f(count,)2817 4082
y(int)h(flags\);)396 4311 y Fh(Dra)o(ws)25 b(the)f(speci\002ed)h(te)o
(xt)f(string)g(at)h(the)g(speci\002ed)g(position)e(on)h(the)h
(speci\002ed)g(dra)o(w)o(able)f(using)396 4441 y(the)h(speci\002ed)g
(graphics)f(conte)o(xt)g(and)h(\003ags.)31 b(The)25 b(def)o(ault)f
(\003ags)h(specify)g(ASCII)h(encoding)e(and)396 4570
y(baseline)h(alignment.)p Black -2 5278 a Fg(40)p Black
eop
%%Page: 41 41
41 40 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 893 587 a Fa(id)e Fh(:)50 b(the)24 b(ID)h(of)g(the)g(dra)o(w)o
(able)f(to)h(dra)o(w)f(the)h(te)o(xt)f(string)g(onto)896
741 y Fa(gc)h Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o(xt)
g(to)g(use)h(when)g(dra)o(wing)f(the)g(te)o(xt)g(string)951
895 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(dra)o(w)f(the)
h(string)f(at)h(relati)n(v)o(e)e(to)i(the)g(dra)o(w)o(able)948
1050 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(to)h(dra)o(w)f
(the)h(string)f(at)h(relati)n(v)o(e)e(to)i(the)g(dra)o(w)o(able)833
1204 y Fa(str)j Fh(:)50 b(the)24 b(te)o(xt)g(string)g(to)g(dra)o(w)717
1359 y Fa(count)g Fh(:)50 b(the)24 b(number)g(of)h(characters)h(\(not)e
(bytes\))h(in)f(the)h(string)717 1513 y Fa(flags)f Fh(:)50
b(\003ags)25 b(specifying)f(te)o(xt)f(encoding,)h(alignment,)g(etc.)-2
2307 y Ff(e)m(vents)47 b(\(3\))396 2786 y Fe(Name)396
2988 y Fd(events)24 b Fh(\227)396 3381 y Fe(Synopsis)396
3831 y Fc(void)430 b(GrSelectEvents)965 b(\(GR_WINDOW_ID)52
b(wid,)2817 3947 y(GR_EVENT_MASK)f(eventmask\);)396 4064
y(void)430 b(GrGetNextEvent)965 b(\(GR_EVENT)52 b(*ep\);)396
4180 y(void)430 b(GrGetNextEventTimeout)587 b(\(GR_EVENT)52
b(*ep,)2817 4297 y(GR_TIMEOUT)g(timeout\);)396 4413 y(void)430
b(GrCheckNextEvent)857 b(\(GR_EVENT)52 b(*ep\);)396 4530
y(int)484 b(GrPeekEvent)1127 b(\(GR_EVENT)52 b(*ep\);)p
Black 3784 5278 a Fg(41)p Black eop
%%Page: 42 42
42 41 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 601 a Fe(Description)396 1116 y(Details)396
1461 y Fb(GrSelectEvents)k(\(\))396 1677 y Fc(void)430
b(GrSelectEvents)965 b(\(GR_WINDOW_ID)52 b(wid,)2817
1793 y(GR_EVENT_MASK)f(event-)396 1910 y(mask\);)396
2139 y Fh(Select)26 b(the)e(e)n(v)o(ent)g(types)g(which)h(should)e(be)i
(returned)g(for)g(the)g(speci\002ed)g(windo)n(w)-6 b(.)833
2451 y Fa(wid)28 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(set)f(the)h(e)n(v)o(ent)f(mask)g(of)475 2605 y Fa(eventmask)i
Fh(:)50 b(a)25 b(bit)f(\002eld)h(specifying)f(the)g(desired)h(e)n(v)o
(ent)f(mask)396 3101 y Fb(GrGetNe)n(xtEvent)35 b(\(\))396
3318 y Fc(void)430 b(GrGetNextEvent)965 b(\(GR_EVENT)52
b(*ep\);)396 3547 y Fh(Gets)25 b(the)f(ne)o(xt)g(e)n(v)o(ent)g(from)h
(the)f(e)n(v)o(ent)g(queue)h(and)g(places)f(it)h(in)f(the)h
(speci\002ed)g(GR_EVENT)396 3676 y(structure.)31 b(If)25
b(the)g(queue)f(is)h(currently)f(empty)-6 b(,)24 b(we)h(sleep)f(until)g
(the)h(ne)o(xt)f(e)n(v)o(ent)f(arri)n(v)o(es)h(from)h(the)396
3806 y(serv)o(er)g(or)g(input)f(is)g(read)h(on)g(a)g(\002le)g
(descriptor)g(pre)n(viously)e(speci\002ed)i(by)f(GrRe)o
(gisterInput\(\).)896 4117 y Fa(ep)h Fh(:)50 b(pointer)24
b(to)g(the)h(GR_EVENT)f(structure)h(to)f(return)h(the)g(e)n(v)o(ent)e
(in)396 4614 y Fb(GrGetNe)n(xtEventTimeout)36 b(\(\))396
4830 y Fc(void)430 b(GrGetNextEventTimeout)587 b(\(GR_EVENT)52
b(*ep,)p Black -2 5278 a Fg(42)p Black eop
%%Page: 43 43
43 42 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_TIMEOUT)52 b(time-)396 695 y(out\);)396
925 y Fh(Gets)25 b(the)f(ne)o(xt)g(e)n(v)o(ent)g(from)h(the)f(e)n(v)o
(ent)g(queue)h(and)g(places)f(it)h(in)f(the)h(speci\002ed)g(GR_EVENT)
396 1054 y(structure.)31 b(If)25 b(the)g(queue)f(is)h(currently)f
(empty)-6 b(,)24 b(we)h(sleep)f(until)g(the)h(ne)o(xt)f(e)n(v)o(ent)f
(arri)n(v)o(es)h(from)h(the)396 1184 y(serv)o(er)l(,)g(input)f(is)g
(read)h(on)g(a)g(\002le)g(descriptor)g(pre)n(viously)e(speci\002ed)i
(by)f(GrRe)o(gisterInput\(\),)g(or)h(a)396 1313 y(timeout)f(occurs.)30
b(Note)25 b(that)f(a)h(v)n(alue)g(of)g(0)f(for)h(the)g(timeout)e
(parameter)j(doesn')n(t)e(mean)h("timeout)396 1443 y(after)h(0)e
(milliseconds")f(b)n(ut)h(is)g(in)h(f)o(act)g(a)g(magic)f(number)h
(meaning)f("ne)n(v)o(er)g(time)g(out".)896 1754 y Fa(ep)h
Fh(:)50 b(pointer)24 b(to)g(the)h(GR_EVENT)f(structure)h(to)f(return)h
(the)g(e)n(v)o(ent)e(in)598 1909 y Fa(timeout)g Fh(:)50
b(the)24 b(number)g(of)h(milliseconds)e(to)h(w)o(ait)h(before)g(timing)
e(out)396 2405 y Fb(GrChec)n(kNe)n(xtEvent)36 b(\(\))396
2621 y Fc(void)430 b(GrCheckNextEvent)857 b(\(GR_EVENT)52
b(*ep\);)396 2850 y Fh(Gets)25 b(the)f(ne)o(xt)g(e)n(v)o(ent)g(from)h
(the)f(e)n(v)o(ent)g(queue)h(if)g(there)g(is)f(one,)h(or)g(returns)f
(immediately)f(with)h(an)396 2980 y(e)n(v)o(ent)g(type)g(of)h
(GR_EVENT_TYPE_NONE)f(if)h(it)f(is)h(empty)-6 b(.)896
3291 y Fa(ep)25 b Fh(:)50 b(pointer)24 b(to)g(the)h(GR_EVENT)f
(structure)h(to)f(return)h(the)g(e)n(v)o(ent)e(in)396
3788 y Fb(GrP)l(eekEvent)35 b(\(\))396 4004 y Fc(int)484
b(GrPeekEvent)1127 b(\(GR_EVENT)52 b(*ep\);)396 4233
y Fh(Fills)24 b(in)h(the)f(speci\002ed)i(e)n(v)o(ent)d(structure)i
(with)f(a)h(cop)o(y)g(of)f(the)h(ne)o(xt)f(e)n(v)o(ent)g(on)g(the)h
(queue,)g(without)396 4363 y(actually)g(remo)o(ving)e(it)h(from)h(the)f
(queue.)31 b(An)25 b(e)n(v)o(ent)e(type)i(of)g(GR_EVENT_TYPE_NONE)f(is)
396 4492 y(gi)n(v)o(en)g(if)g(the)h(queue)g(is)f(empty)-6
b(.)896 4804 y Fa(ep)25 b Fh(:)50 b(pointer)24 b(to)g(the)h(GR_EVENT)f
(structure)h(to)f(return)h(the)g(e)n(v)o(ent)e(in)p Black
3784 5278 a Fg(43)p Black eop
%%Page: 44 44
44 43 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 706 587 a(Returns)24 b Fh(:)50 b(1)24 b(if)h(an)g(e)n(v)o(ent)f
(w)o(as)h(returned,)f(or)h(0)g(if)g(the)f(queue)h(w)o(as)g(empty)-2
1380 y Ff(f)m(onts)48 b(\(3\))396 1860 y Fe(Name)396
2061 y Fd(fonts)24 b Fh(\227)396 2455 y Fe(Synopsis)396
2904 y Fc(GR_FONT_ID)106 b(GrCreateFont)1073 b(\(GR_CHAR)53
b(*name,)2817 3021 y(GR_COORD)f(height,)2817 3137 y(GR_LOGFONT)g
(*plogfont\);)396 3254 y(void)430 b(GrSetFontSize)1019
b(\(GR_FONT_ID)52 b(fontid,)2817 3370 y(GR_COORD)g(size\);)396
3487 y(void)430 b(GrSetFontRotation)803 b(\(GR_FONT_ID)52
b(fontid,)2817 3604 y(int)h(tenthsdegrees\);)396 3720
y(void)430 b(GrSetFontAttr)1019 b(\(GR_FONT_ID)52 b(fontid,)2817
3837 y(int)h(setflags,)2817 3953 y(int)g(clrflags\);)396
4070 y(void)430 b(GrDestroyFont)1019 b(\(GR_FONT_ID)52
b(fontid\);)396 4186 y(void)430 b(GrGetFontInfo)1019
b(\(GR_FONT_ID)52 b(font,)2817 4303 y(GR_FONT_INFO)g(*fip\);)p
Black -2 5278 a Fg(44)p Black eop
%%Page: 45 45
45 44 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 601 a Fe(Description)396 1116 y(Details)396
1461 y Fb(GrCreateFont)k(\(\))396 1677 y Fc(GR_FONT_ID)106
b(GrCreateFont)1073 b(\(GR_CHAR)53 b(*name,)2817 1793
y(GR_COORD)f(height,)2817 1910 y(GR_LOGFONT)g(*plog-)396
2026 y(font\);)396 2256 y Fh(Attempts)23 b(to)h(locate)h(a)f(font)g
(with)g(the)g(desired)h(attrib)n(utes)e(and)h(returns)g(a)h(font)f(ID)h
(number)f(which)396 2385 y(can)h(be)g(used)g(to)f(refer)i(to)f(it.)30
b(If)25 b(the)g(plogfont)e(ar)n(gument)i(is)f(not)g(NULL,)h(the)f(v)n
(alues)g(in)h(that)396 2515 y(structure)g(will)f(be)h(used)f(to)h
(choose)f(a)h(font.)31 b(Otherwise,)24 b(if)h(the)f(height)g(is)h(non)f
(zero,)h(the)g(b)n(uilt)e(in)396 2644 y(font)i(with)f(the)g(closest)g
(height)g(to)h(that)f(speci\002ed)h(will)f(be)h(used.)31
b(If)25 b(the)f(height)g(is)h(zero,)g(the)g(b)n(uilt)396
2774 y(in)g(font)f(with)g(the)h(speci\002ed)g(name)g(will)e(be)i(used.)
31 b(If)25 b(the)g(desired)f(font)h(is)f(not)g(found,)h(the)f(\002rst)
396 2903 y(b)n(uilt)g(in)g(font)h(will)f(be)h(returned)f(as)h(a)g(last)
g(resort.)777 3194 y Fa(name)f Fh(:)50 b(string)23 b(containing)h(the)h
(name)f(of)h(a)g(b)n(uilt)f(in)g(font)h(to)f(look)g(for)657
3349 y Fa(height)g Fh(:)50 b(the)24 b(desired)h(height)f(of)h(the)f
(font)538 3503 y Fa(plogfont)f Fh(:)50 b(pointer)24 b(to)g(a)h(LOGFONT)
g(structure)706 3658 y Fg(Returns)f Fh(:)50 b(a)25 b(font)f(ID)h
(number)f(which)h(can)g(be)g(used)f(to)h(refer)h(to)e(the)h(font)396
4174 y Fb(GrSetFontSiz)q(e)33 b(\(\))396 4391 y Fc(void)430
b(GrSetFontSize)1019 b(\(GR_FONT_ID)52 b(fontid,)2817
4507 y(GR_COORD)g(size\);)396 4736 y Fh(Changes)25 b(the)g(size)g(of)g
(the)f(speci\002ed)h(font)g(to)f(the)h(speci\002ed)g(size.)p
Black 3784 5278 a Fg(45)p Black eop
%%Page: 46 46
46 45 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 654 587 a Fa(fontid)c Fh(:)50 b(the)24 b(ID)h(number)f(of)h(the)g
(font)f(to)h(change)g(the)g(size)f(of)777 741 y Fa(size)g
Fh(:)396 1237 y Fb(GrSetFontRotation)34 b(\(\))396 1454
y Fc(void)430 b(GrSetFontRotation)803 b(\(GR_FONT_ID)52
b(fontid,)2817 1570 y(int)h(tenthsdegrees\);)396 1799
y Fh(Changes)25 b(the)g(rotation)f(of)h(the)f(speci\002ed)h(font)g(to)f
(the)h(speci\002ed)g(angle.)654 2111 y Fa(fontid)i Fh(:)50
b(the)24 b(ID)h(number)f(of)h(the)g(font)f(to)h(rotate)556
2265 y Fa(tenthsde-)396 2395 y(grees)f Fh(:)396 2996
y Fb(GrSetFontAttr)32 b(\(\))396 3212 y Fc(void)430 b(GrSetFontAttr)
1019 b(\(GR_FONT_ID)52 b(fontid,)2817 3329 y(int)h(setflags,)2817
3445 y(int)g(clrflags\);)396 3674 y Fh(Changes)25 b(the)g(attrib)n
(utes)f(\(GR_TFKERNING,)h(GR_TF)-7 b(ANTIALIAS,)396 3804
y(GR_TFUNDERLINE,)25 b(etc.\))h(of)f(the)f(speci\002ed)h(font)g
(according)f(to)h(the)f(set)h(and)g(clear)g(mask)396
3933 y(ar)n(guments.)654 4245 y Fa(fontid)i Fh(:)50 b(the)24
b(ID)h(of)g(the)g(font)f(to)h(set)f(the)h(attrib)n(utes)f(of)538
4399 y Fa(setflags)f Fh(:)50 b(mask)24 b(specifying)g(attrib)n(ute)g
(\003ags)h(to)f(set)538 4554 y Fa(clrflags)f Fh(:)50
b(mask)24 b(specifying)g(attrib)n(ute)g(\003ags)h(to)f(clear)p
Black -2 5278 a Fg(46)p Black eop
%%Page: 47 47
47 46 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 583 a Fb(GrDestr)n(o)n(yFont)j(\(\))396 799
y Fc(void)430 b(GrDestroyFont)1019 b(\(GR_FONT_ID)52
b(fontid\);)396 1028 y Fh(Frees)26 b(all)e(resources)i(associated)e
(with)g(the)h(speci\002ed)g(font)f(ID,)h(and)g(if)g(the)f(font)h(is)f
(a)h(non)f(b)n(uilt)g(in)396 1158 y(type)h(and)f(this)g(is)h(the)f
(last)h(ID)g(referring)g(to)f(it,)h(unloads)f(the)g(font)h(from)f
(memory)-6 b(.)654 1470 y Fa(fontid)27 b Fh(:)50 b(the)24
b(ID)h(of)g(the)g(font)f(to)h(destro)o(y)396 1966 y Fb(GrGetFontInf)n
(o)33 b(\(\))396 2182 y Fc(void)430 b(GrGetFontInfo)1019
b(\(GR_FONT_ID)52 b(font,)2817 2299 y(GR_FONT_INFO)g(*fip\);)396
2528 y Fh(Fills)24 b(in)h(the)f(speci\002ed)i(GR_FONT_INFO)f(structure)
f(with)h(information)e(re)o(garding)h(the)396 2657 y(speci\002ed)h
(font.)777 2969 y Fa(font)f Fh(:)836 3123 y Fa(fip)h
Fh(:)50 b(pointer)24 b(to)g(a)h(GR_FONT_INFO)h(structure)-2
3917 y Ff(pointer)48 b(\(3\))396 4397 y Fe(Name)396 4598
y Fd(pointer)24 b Fh(\227)p Black 3780 5278 a Fg(47)p
Black eop
%%Page: 48 48
48 47 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 601 a Fe(Synopsis)396 1050 y Fc(void)430 b(GrSetCursor)1127
b(\(GR_WINDOW_ID)52 b(wid,)2817 1166 y(GR_SIZE)h(width,)2817
1283 y(GR_SIZE)g(height,)2817 1400 y(GR_COORD)f(hotx,)2817
1516 y(GR_COORD)g(hoty,)2817 1633 y(GR_COLOR)g(foreground,)2817
1749 y(GR_COLOR)g(background,)2817 1866 y(GR_BITMAP)g(*fbbitmap,)2817
1982 y(GR_BITMAP)g(*bgbitmap\);)396 2099 y(void)430 b(GrMoveCursor)1073
b(\(GR_COORD)52 b(x,)2817 2215 y(GR_COORD)g(y\);)396
2332 y(void)430 b(GrInjectPointerEvent)641 b(\(MWCOORD)53
b(x,)2817 2449 y(MWCOORD)g(y,)2817 2565 y(int)g(button,)2817
2682 y(int)g(visible\);)396 3175 y Fe(Description)396
3690 y(Details)396 4035 y Fb(GrSetCur)n(sor)33 b(\(\))396
4251 y Fc(void)430 b(GrSetCursor)1127 b(\(GR_WINDOW_ID)52
b(wid,)2817 4368 y(GR_SIZE)h(width,)2817 4484 y(GR_SIZE)g(height,)2817
4601 y(GR_COORD)f(hotx,)2817 4718 y(GR_COORD)g(hoty,)2817
4834 y(GR_COLOR)g(foreground,)p Black -2 5278 a Fg(48)p
Black eop
%%Page: 49 49
49 48 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_COLOR)52 b(background,)2817 695
y(GR_BITMAP)g(*fbbitmap,)2817 812 y(GR_BITMAP)g(*bg-)396
929 y(bitmap\);)396 1158 y Fh(Speci\002es)26 b(a)f(cursor)g(\(mouse)f
(pointer)g(graphic\))h(to)g(display)e(when)i(the)g(mouse)f(pointer)g
(is)g(o)o(v)o(er)396 1287 y(the)h(speci\002ed)g(windo)n(w)e(and)i
(subsequently)e(created)j(children.)k(Points)24 b(in)h(the)f(bitmap)g
(which)396 1417 y(ha)n(v)o(e)h(neither)f(the)h(fore)o(ground)f(or)h
(background)f(bits)g(set)h(are)g(not)f(painted.)833 1728
y Fa(wid)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i(set)f
(the)h(cursor)g(of)717 1883 y Fa(width)f Fh(:)50 b(the)24
b(width)g(of)h(the)g(pointer)f(bitmap)657 2037 y Fa(height)g
Fh(:)50 b(the)24 b(height)g(of)h(the)g(pointer)f(bitmap)772
2192 y Fa(hotx)29 b Fh(:)50 b(the)24 b(X)h(coordinate)f(within)g(the)h
(bitmap)e(used)i(as)g(the)f(tar)n(get)h(of)g(the)g(pointer)769
2346 y Fa(hoty)32 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(within)g(the)h
(bitmap)e(used)i(as)g(the)f(tar)n(get)h(of)g(the)g(pointer)439
2500 y Fa(foreground)i Fh(:)e(the)f(colour)h(to)f(use)h(for)g(the)f
(fore)o(ground)h(of)f(the)h(pointer)439 2759 y Fa(background)i
Fh(:)e(the)f(colour)h(to)f(use)h(for)g(the)f(background)h(of)g(the)f
(pointer)537 3019 y Fa(fbbitmap)g Fh(:)537 3173 y Fa(bgbitmap)g
Fh(:)50 b(pointer)24 b(to)g(bitmap)g(data)h(specifying)f(the)g
(background)g(of)h(the)g(pointer)396 3669 y Fb(GrMo)n(veCur)n(sor)33
b(\(\))396 3886 y Fc(void)430 b(GrMoveCursor)1073 b(\(GR_COORD)52
b(x,)2817 4002 y(GR_COORD)g(y\);)396 4231 y Fh(Mo)o(v)o(es)23
b(the)i(cursor)g(\(mouse)f(pointer\))g(to)h(the)f(speci\002ed)i
(coordinates.)k(The)24 b(coordinates)h(are)396 4361 y(relati)n(v)o(e)f
(to)g(the)h(root)f(windo)n(w)-6 b(,)23 b(where)j(\(0,0\))e(is)h(the)f
(upper)h(left)g(hand)f(corner)i(of)f(the)f(screen.)32
b(The)396 4490 y(reference)27 b(point)c(used)i(for)g(the)g(pointer)f
(is)g(that)g(of)h(the)g("hot)f(spot".)29 b(After)d(mo)o(ving)c(the)j
(pointer)l(,)396 4620 y(the)g(graphic)g(used)f(for)h(the)g(pointer)f
(will)g(change)h(to)f(the)h(graphic)g(de\002ned)g(for)g(use)g(in)f(the)
396 4749 y(windo)n(w)g(which)g(it)g(is)h(o)o(v)o(er)-5
b(.)p Black 3784 5278 a Fg(49)p Black eop
%%Page: 50 50
50 49 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 951 587 a Fa(x)f Fh(:)50 b(the)24 b(X)h(coordinate)f(to)h(mo)o(v)
o(e)e(the)i(pointer)f(to)948 741 y Fa(y)33 b Fh(:)50
b(the)24 b(Y)h(coordinate)f(to)h(mo)o(v)o(e)e(the)i(pointer)f(to)396
1258 y Fb(GrInjectP)-5 b(ointerEvent)35 b(\(\))396 1474
y Fc(void)430 b(GrInjectPointerEvent)641 b(\(MWCOORD)53
b(x,)2817 1590 y(MWCOORD)g(y,)2817 1707 y(int)g(button,)2817
1824 y(int)g(visible\);)396 2053 y Fh(Sets)25 b(the)g(pointer)f(in)l
(visible)f(if)i(the)g(visible)e(parameter)i(is)g(GR_F)-7
b(ALSE,)25 b(or)g(visible)e(if)i(it)f(is)396 2182 y(GR_TR)l(UE,)h(then)
g(mo)o(v)o(es)e(the)i(pointer)f(to)g(the)h(speci\002ed)g(position)e
(and)i(generates)g(a)g(mouse)396 2312 y(e)n(v)o(ent)f(with)g(the)h
(speci\002ed)g(b)n(utton)e(status.)30 b(Also)24 b(performs)h(a)g
(GrFlush\(\))g(so)f(that)g(the)h(e)n(v)o(ent)f(tak)o(es)396
2441 y(ef)n(fect)h(immediately)-6 b(.)951 2753 y Fa(x)30
b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(pointer)f(e)n(v)o(ent)
g(rele)n(v)n(ant)g(to)g(the)h(root)f(windo)n(w)948 2907
y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinate)f(of)h(the)g(pointer)f(e)
n(v)o(ent)g(rele)n(v)n(ant)g(to)g(the)h(root)f(windo)n(w)657
3062 y Fa(button)g Fh(:)50 b(the)24 b(pointer)g(b)n(utton)g(status)598
3216 y Fa(visible)f Fh(:)50 b(whether)24 b(to)h(display)e(the)i
(pointer)f(after)i(the)e(e)n(v)o(ent)-2 4010 y Ff(colour)m(s)48
b(\(3\))396 4489 y Fe(Name)396 4691 y Fd(colours)24 b
Fh(\227)p Black -2 5278 a Fg(50)p Black eop
%%Page: 51 51
51 50 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 601 a Fe(Synopsis)396 1050 y Fc(void)430 b
(GrGetSystemPalette)749 b(\(GR_PALETTE)52 b(*pal\);)396
1166 y(void)430 b(GrSetSystemPalette)749 b(\(GR_COUNT)52
b(first,)2817 1283 y(GR_PALETTE)g(*pal\);)396 1400 y(void)430
b(GrFindColor)1127 b(\(GR_COLOR)52 b(c,)2817 1516 y(GR_PIXELVAL)g
(*retpixel\);)396 1633 y(GR_COLOR)214 b(GrGetSysColor)1019
b(\(int)53 b(index\);)396 2126 y Fe(Description)396 2641
y(Details)396 2986 y Fb(GrGetSystemP)l(alette)36 b(\(\))396
3202 y Fc(void)430 b(GrGetSystemPalette)749 b(\(GR_PALETTE)52
b(*pal\);)396 3431 y Fh(Retrie)n(v)o(es)24 b(the)h(system)f(palette)g
(and)h(places)g(it)f(in)h(the)f(speci\002ed)h(palette)g(structure.)837
3743 y Fa(pal)f Fh(:)50 b(pointer)24 b(to)g(a)h(palette)g(structure)f
(to)h(\002ll)f(in)h(with)f(the)g(system)g(palette)396
4239 y Fb(GrSetSystemP)l(alette)36 b(\(\))396 4455 y
Fc(void)430 b(GrSetSystemPalette)749 b(\(GR_COUNT)52
b(first,)2817 4572 y(GR_PALETTE)g(*pal\);)396 4801 y
Fh(Sets)25 b(the)g(system)f(palette)g(to)g(the)h(v)n(alues)f(stored)g
(in)h(the)g(speci\002ed)g(palette)f(structure.)30 b(The)25
b(v)n(alues)p Black 3784 5278 a Fg(51)p Black eop
%%Page: 52 52
52 51 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fh(before)26 b(the)e(speci\002ed)h(\002rst)g(v)n(alue)f
(are)i(not)e(set.)717 890 y Fa(first)g Fh(:)50 b(the)24
b(\002rst)h(palette)g(v)n(alue)f(to)g(set)837 1045 y
Fa(pal)g Fh(:)50 b(pointer)24 b(to)g(a)h(palette)g(structure)f
(containing)g(the)g(ne)n(w)h(v)n(alues)396 1541 y Fb(GrFindColor)34
b(\(\))396 1757 y Fc(void)430 b(GrFindColor)1127 b(\(GR_COLOR)52
b(c,)2817 1874 y(GR_PIXELVAL)g(*ret-)396 1991 y(pixel\);)396
2220 y Fh(Calculates)25 b(the)g(pix)o(el)f(v)n(alue)g(to)g(use)h(to)f
(display)g(the)h(speci\002ed)g(colour)f(v)n(alue.)30
b(The)25 b(colour)g(v)n(alue)396 2349 y(is)g(speci\002ed)g(as)g(a)g
(GR_COLOR,)g(which)g(is)f(a)h(32)g(bit)f(truecolour)g(v)n(alue)g
(stored)h(as)g(RGBX.)g(The)396 2479 y(pix)o(el)f(v)n(alue)g(size)h
(depends)f(on)h(the)g(architecture.)956 2790 y Fa(c)g
Fh(:)50 b(the)24 b(colour)h(v)n(alue)f(to)g(\002nd)538
2945 y Fa(retpixel)f Fh(:)50 b(pointer)24 b(to)g(the)h(returned)g(pix)o
(el)e(v)n(alue)396 3441 y Fb(GrGetSysColor)34 b(\(\))396
3657 y Fc(GR_COLOR)214 b(GrGetSysColor)1019 b(\(int)53
b(index\);)712 4060 y Fa(index)29 b Fh(:)50 b(an)25 b(inde)o(x)e(into)h
(the)h(serv)o(er')-5 b(s)24 b(colour)h(look)f(up)g(table)706
4214 y Fg(Returns)g Fh(:)50 b(the)24 b(colour)h(found)f(at)h(the)f
(speci\002ed)i(inde)o(x)p Black -2 5278 a Fg(52)p Black
eop
%%Page: 53 53
53 52 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black -2 621 a Ff(regions)47 b(\(3\))396 1101 y Fe(Name)396
1303 y Fd(regions)24 b Fh(\227)396 1696 y Fe(Synopsis)396
2146 y Fc(GR_REGION_ID)52 b(GrNewRegion)1073 b(\(void\);)396
2262 y(void)430 b(GrDestroyRe-)396 2379 y(gion)914 b(\(GR_REGION_ID)51
b(region\);)396 2495 y(void)430 b(GrUnionRectWithRe-)396
2612 y(gion)591 b(\(GR_REGION_ID)51 b(region,)2817 2728
y(GR_RECT)i(*rect\);)396 2845 y(void)430 b(GrUnionRe-)396
2962 y(gion)1022 b(\(GR_REGION_ID)51 b(dst_rgn,)2817
3078 y(GR_REGION_ID)h(src_rgn1,)2817 3195 y(GR_REGION_ID)g(src_rgn2\);)
396 3311 y(void)430 b(GrSubtractRe-)396 3428 y(gion)860
b(\(GR_REGION_ID)51 b(dst_rgn,)2817 3544 y(GR_REGION_ID)h(src_rgn1,)
2817 3661 y(GR_REGION_ID)g(src_rgn2\);)396 3777 y(void)430
b(GrXorRe-)396 3894 y(gion)1129 b(\(GR_REGION_ID)51 b(dst_rgn,)2817
4011 y(GR_REGION_ID)h(src_rgn1,)2817 4127 y(GR_REGION_ID)g(src_rgn2\);)
396 4244 y(void)430 b(GrIntersectRe-)396 4360 y(gion)806
b(\(GR_REGION_ID)52 b(dst_rgn,)2817 4477 y(GR_REGION_ID)g(src_rgn1,)
2817 4593 y(GR_REGION_ID)g(src_rgn2\);)396 4710 y(void)430
b(GrSetGCRegion)1019 b(\(GR_GC_ID)52 b(gc,)2817 4827
y(GR_REGION_ID)g(region\);)p Black 3784 5278 a Fg(53)p
Black eop
%%Page: 54 54
54 53 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fc(GR_BOOL)268 b(GrPointInRe-)396 695
y(gion)914 b(\(GR_REGION_ID)51 b(region,)2817 812 y(GR_COORD)h(x,)2817
929 y(GR_COORD)g(y\);)396 1045 y(int)484 b(GrRectInRe-)396
1162 y(gion)968 b(\(GR_REGION_ID)51 b(region,)2817 1278
y(GR_COORD)h(x,)2817 1395 y(GR_COORD)g(y,)2817 1511 y(GR_COORD)g(w,)
2817 1628 y(GR_COORD)g(h\);)396 1745 y(GR_BOOL)268 b(GrEmptyRe-)396
1861 y(gion)1022 b(\(GR_REGION_ID)51 b(region\);)396
1978 y(GR_BOOL)268 b(GrEqualRegion)1019 b(\(GR_REGION_ID)52
b(rgn1,)2817 2094 y(GR_REGION_ID)g(rgn2\);)396 2211 y(void)430
b(GrOffsetRe-)396 2327 y(gion)968 b(\(GR_REGION_ID)51
b(region,)2817 2444 y(GR_SIZE)i(dx,)2817 2560 y(GR_SIZE)g(dy\);)396
2677 y(int)484 b(GrGetRegion-)396 2794 y(Box)968 b(\(GR_REGION_ID)51
b(region,)2817 2910 y(GR_RECT)i(*rect\);)396 3027 y(GR_REGION_ID)f
(GrNewPolygonRegion)695 b(\(int)53 b(mode,)2817 3143
y(GR_COUNT)f(count,)2817 3260 y(GR_POINT)g(*points\);)396
3753 y Fe(Description)396 4268 y(Details)396 4613 y Fb(GrNe)n(wRegion)
35 b(\(\))396 4829 y Fc(GR_REGION_ID)52 b(GrNewRegion)1073
b(\(void\);)p Black -2 5278 a Fg(54)p Black eop
%%Page: 55 55
55 54 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(Creates)c(a)f(ne)n(w)f(re)o(gion)g(structure)h(and)g
(returns)f(the)h(ID)g(used)f(to)h(refer)h(to)e(it.)30
b(The)25 b(structure)g(is)396 708 y(initialised)e(with)h(a)h(set)g(of)g
(def)o(ault)f(parameters.)706 1020 y Fg(Returns)g Fh(:)50
b(the)24 b(ID)h(of)g(the)g(ne)n(wly)f(created)h(re)o(gion)396
1516 y Fb(GrDestr)n(o)n(yRegion)34 b(\(\))396 1733 y
Fc(void)430 b(GrDestroyRegion)911 b(\(GR_REGION_ID)52
b(re-)396 1849 y(gion\);)396 2078 y Fh(Destro)o(ys)24
b(the)h(re)o(gion)f(structure)g(with)g(the)h(speci\002ed)g(ID.)657
2390 y Fa(region)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o(gion)f
(structure)g(to)h(destro)o(y)396 2886 y Fb(GrUnionRectWithRegion)36
b(\(\))396 3102 y Fc(void)430 b(GrUnionRectWithRegion)587
b(\(GR_REGION_ID)52 b(re-)396 3219 y(gion,)2817 3336
y(GR_RECT)h(*rect\);)396 3565 y Fh(Mak)o(es)25 b(a)g(union)f(of)h(the)f
(speci\002ed)h(re)o(gion)f(and)h(the)g(speci\002ed)g(rectangle)g(and)g
(places)g(the)f(result)396 3694 y(back)h(in)g(the)f(source)h(re)o
(gion.)657 4006 y Fa(region)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o
(gion)f(to)g(modify)777 4160 y Fa(rect)g Fh(:)50 b(a)25
b(pointer)f(to)g(the)h(rectangle)g(to)f(add)h(to)g(the)f(re)o(gion)396
4657 y Fb(GrUnionRegion)35 b(\(\))396 4873 y Fc(void)430
b(GrUnionRe-)p Black 3784 5278 a Fg(55)p Black eop
%%Page: 56 56
56 55 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fc(gion)1022 b(\(GR_REGION_ID)51 b(dst_rgn,)2817
695 y(GR_REGION_ID)h(src_rgn1,)2817 812 y(GR_REGION_ID)g(src_rgn2\);)
396 1041 y Fh(Mak)o(es)25 b(a)g(union)f(of)h(the)f(speci\002ed)h
(source)g(re)o(gions)f(and)h(places)g(the)f(result)h(in)f(the)h
(speci\002ed)396 1171 y(destination)e(re)o(gion.)598
1482 y Fa(dst_rgn)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(destination)e
(re)o(gion)538 1637 y Fa(src_rgn1)g Fh(:)50 b(the)24
b(ID)h(of)g(the)g(\002rst)g(source)g(re)o(gion)538 1791
y Fa(src_rgn2)e Fh(:)50 b(the)24 b(ID)h(of)g(the)g(second)f(source)h
(re)o(gion)396 2288 y Fb(GrSubtractRegion)34 b(\(\))396
2504 y Fc(void)430 b(GrSubtractRe-)396 2620 y(gion)860
b(\(GR_REGION_ID)51 b(dst_rgn,)2817 2737 y(GR_REGION_ID)h(src_rgn1,)
2817 2853 y(GR_REGION_ID)g(src_rgn2\);)396 3083 y Fh(Subtracts)25
b(the)g(second)f(source)h(re)o(gion)f(from)h(the)f(\002rst)h(source)g
(re)o(gion)f(and)h(places)g(the)f(result)h(in)396 3212
y(the)g(speci\002ed)g(destination)e(re)o(gion.)598 3524
y Fa(dst_rgn)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(destination)e(re)o
(gion)538 3678 y Fa(src_rgn1)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(\002rst)g(source)g(re)o(gion)538 3832 y Fa(src_rgn2)e
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(second)f(source)h(re)o(gion)396
4329 y Fb(GrXorRegion)33 b(\(\))396 4545 y Fc(void)430
b(GrXorRe-)396 4662 y(gion)1129 b(\(GR_REGION_ID)51 b(dst_rgn,)2817
4778 y(GR_REGION_ID)h(src_rgn1,)p Black -2 5278 a Fg(56)p
Black eop
%%Page: 57 57
57 56 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_REGION_ID)52 b(src_rgn2\);)396
808 y Fh(Performs)25 b(a)h(logical)e(e)o(xclusi)n(v)o(e)e(OR)k
(operation)e(on)g(the)h(speci\002ed)g(source)g(re)o(gions)f(and)g
(places)396 938 y(the)h(result)f(in)h(the)f(destination)f(re)o(gion.)30
b(The)25 b(destination)e(re)o(gion)h(will)g(contain)g(only)g(the)h
(parts)g(of)396 1067 y(the)g(source)g(re)o(gions)f(which)g(do)g(not)h
(o)o(v)o(erlap.)598 1379 y Fa(dst_rgn)e Fh(:)50 b(the)24
b(ID)h(of)g(the)g(destination)e(re)o(gion)538 1533 y
Fa(src_rgn1)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(\002rst)g(source)g(re)
o(gion)538 1688 y Fa(src_rgn2)e Fh(:)50 b(the)24 b(ID)h(of)g(the)g
(second)f(source)h(re)o(gion)396 2184 y Fb(GrInter)n(sectRegion)36
b(\(\))396 2400 y Fc(void)430 b(GrIntersectRe-)396 2517
y(gion)806 b(\(GR_REGION_ID)52 b(dst_rgn,)2817 2633 y(GR_REGION_ID)g
(src_rgn1,)2817 2750 y(GR_REGION_ID)g(src_rgn2\);)396
2979 y Fh(Calculates)25 b(the)g(intersection)f(of)h(the)f(tw)o(o)h
(speci\002ed)g(source)g(re)o(gions)e(and)i(places)g(the)g(result)f(in)
396 3108 y(the)h(speci\002ed)g(destination)e(re)o(gion.)30
b(The)25 b(destination)e(re)o(gion)h(will)g(contain)g(only)g(the)h
(parts)f(of)396 3238 y(the)h(source)g(re)o(gions)f(which)g(o)o(v)o
(erlap)g(each)h(other)-5 b(.)598 3550 y Fa(dst_rgn)23
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(destination)e(re)o(gion)538
3704 y Fa(src_rgn1)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(\002rst)g
(source)g(re)o(gion)538 3858 y Fa(src_rgn2)e Fh(:)50
b(the)24 b(ID)h(of)g(the)g(second)f(source)h(re)o(gion)396
4355 y Fb(GrSetGCRegion)35 b(\(\))396 4571 y Fc(void)430
b(GrSetGCRegion)1019 b(\(GR_GC_ID)52 b(gc,)2817 4688
y(GR_REGION_ID)g(re-)396 4804 y(gion\);)p Black 3780
5278 a Fg(57)p Black eop
%%Page: 58 58
58 57 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fh(Sets)25 b(the)g(clip)f(mask)g(of)h(the)g
(speci\002ed)g(graphics)g(conte)o(xt)e(to)i(the)f(speci\002ed)h(re)o
(gion.)30 b(Subsequent)396 708 y(dra)o(wing)24 b(operations)g(using)g
(this)g(graphics)g(conte)o(xt)g(will)g(not)g(dra)o(w)h(outside)e(the)i
(speci\002ed)396 838 y(re)o(gion.)30 b(The)25 b(re)o(gion)f(ID)h(can)g
(be)g(set)g(to)f(0)h(to)f(remo)o(v)o(e)g(the)h(clipping)e(re)o(gion)h
(from)h(the)f(speci\002ed)396 967 y(graphics)h(conte)o(xt.)896
1279 y Fa(gc)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(graphics)f(conte)o
(xt)g(to)g(set)h(the)g(clip)f(mask)g(of)657 1433 y Fa(region)g
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o(gion)f(to)g(use)h(as)g(the)f
(clip)h(mask)396 1930 y Fb(GrP)-5 b(ointInRegion)35 b(\(\))396
2146 y Fc(GR_BOOL)268 b(GrPointInRegion)911 b(\(GR_REGION_ID)52
b(re-)396 2263 y(gion,)2817 2379 y(GR_COORD)g(x,)2817
2496 y(GR_COORD)g(y\);)396 2725 y Fh(T)-7 b(ests)25 b(whether)f(the)h
(speci\002ed)g(point)f(is)g(within)g(the)g(speci\002ed)h(re)o(gion,)f
(and)h(then)f(returns)h(either)396 2854 y(T)m(rue)g(or)g(F)o(alse)f
(depending)g(on)h(the)g(result.)657 3166 y Fa(region)f
Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o(gion)f(to)g(e)o(xamine)951
3320 y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinate)f(of)h(the)g(point)f
(to)g(test)g(for)948 3475 y Fa(y)33 b Fh(:)50 b(the)24
b(Y)h(coordinate)f(of)h(the)g(point)f(to)g(test)g(for)706
3629 y Fg(Returns)g Fh(:)50 b(T)m(rue)24 b(if)h(the)f(point)g(is)h
(within)e(the)i(re)o(gion,)f(or)h(F)o(alse)f(otherwise)396
4126 y Fb(GrRectInRegion)36 b(\(\))396 4342 y Fc(int)484
b(GrRectInRegion)965 b(\(GR_REGION_ID)52 b(re-)396 4458
y(gion,)2817 4575 y(GR_COORD)g(x,)2817 4691 y(GR_COORD)g(y,)2817
4808 y(GR_COORD)g(w,)p Black -2 5278 a Fg(58)p Black
eop
%%Page: 59 59
59 58 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 2817 579 a Fc(GR_COORD)52 b(h\);)396 808 y Fh(T)-7
b(ests)25 b(whether)f(the)h(speci\002ed)g(rectangle)g(is)f(contained)h
(within)e(the)i(speci\002ed)g(re)o(gion.)30 b(Returns)396
938 y(GR_RECT_OUT)c(if)e(it)h(is)f(not)g(inside)g(it)g(at)h(all,)g
(GR_RECT_ALLIN)g(if)g(it)f(is)g(completely)396 1067 y(contained)h
(within)e(the)i(re)o(gion,)f(or)g(GR_RECT_P)-9 b(AR)j(TIN)27
b(if)d(it)h(is)f(partially)g(contained)g(within)396 1197
y(the)h(re)o(gion.)657 1508 y Fa(region)f Fh(:)50 b(the)24
b(ID)h(of)g(the)g(re)o(gion)f(to)g(e)o(xamine)951 1663
y Fa(x)30 b Fh(:)50 b(the)24 b(X)h(coordinates)f(of)h(the)g(rectangle)g
(to)f(test)948 1817 y Fa(y)33 b Fh(:)50 b(the)24 b(Y)h(coordinates)f
(of)h(the)g(rectangle)g(to)f(test)947 1971 y Fa(w)34
b Fh(:)50 b(the)24 b(width)g(of)h(the)g(rectangle)g(to)f(test)956
2126 y Fa(h)h Fh(:)50 b(the)24 b(height)g(of)h(the)g(rectangle)g(to)f
(test)706 2280 y Fg(Returns)g Fh(:)50 b(GR_RECT_P)-9
b(AR)j(TIN,)26 b(GR_RECT_ALLIN,)f(or)g(GR_RECT_OUT)396
2777 y Fb(GrEmptyRegion)35 b(\(\))396 2993 y Fc(GR_BOOL)268
b(GrEmptyRegion)1019 b(\(GR_REGION_ID)52 b(re-)396 3109
y(gion\);)396 3339 y Fh(Determines)24 b(whether)h(the)g(speci\002ed)g
(re)o(gion)f(is)g(empty)-6 b(,)24 b(and)g(returns)h(GR_TR)l(UE)g(if)g
(it)f(is,)h(or)396 3468 y(GR_F)-7 b(ALSE)25 b(otherwise.)657
3770 y Fa(region)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o(gion)f(to)g
(e)o(xamine)706 3924 y Fg(Returns)g Fh(:)50 b(GR_TR)l(UE)25
b(if)g(the)f(re)o(gion)g(is)h(empty)-6 b(,)23 b(or)i(GR_F)-7
b(ALSE)25 b(if)g(it)f(is)g(not)396 4430 y Fb(GrEqualRegion)35
b(\(\))396 4647 y Fc(GR_BOOL)268 b(GrEqualRegion)1019
b(\(GR_REGION_ID)52 b(rgn1,)2817 4763 y(GR_REGION_ID)g(rgn2\);)p
Black 3784 5278 a Fg(59)p Black eop
%%Page: 60 60
60 59 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 579 a Fh(Determines)24 b(whether)h(the)g(speci\002ed)g(re)o
(gions)f(are)h(identical,)f(and)h(returns)f(GR_TR)l(UE)i(if)e(it)h(is,)
396 708 y(or)g(GR_F)-7 b(ALSE)25 b(otherwise.)777 1010
y Fa(rgn1)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(\002rst)g(re)o(gion)f
(to)g(e)o(xamine)777 1165 y Fa(rgn2)g Fh(:)50 b(the)24
b(ID)h(of)g(the)g(second)f(re)o(gion)g(to)h(e)o(xamine)706
1319 y Fg(Returns)f Fh(:)50 b(GR_TR)l(UE)25 b(if)g(the)f(re)o(gions)g
(are)h(equal,)g(or)g(GR_F)-7 b(ALSE)25 b(otherwise)396
1825 y Fb(GrOffsetRegion)35 b(\(\))396 2041 y Fc(void)430
b(GrOffsetRegion)965 b(\(GR_REGION_ID)52 b(re-)396 2158
y(gion,)2817 2275 y(GR_SIZE)h(dx,)2817 2391 y(GR_SIZE)g(dy\);)396
2620 y Fh(Of)n(fsets)24 b(the)h(speci\002ed)g(re)o(gion)f(by)h(the)f
(speci\002ed)h(distance.)657 2932 y Fa(region)f Fh(:)50
b(the)24 b(ID)h(of)g(the)g(re)o(gion)f(to)g(of)n(fset)891
3086 y Fa(dx)30 b Fh(:)50 b(the)24 b(distance)h(to)f(of)n(fset)g(the)h
(re)o(gion)f(by)g(in)h(the)f(X)h(axis)888 3241 y Fa(dy)33
b Fh(:)50 b(the)24 b(distance)h(to)f(of)n(fset)g(the)h(re)o(gion)f(by)g
(in)h(the)f(Y)h(axis)396 3737 y Fb(GrGetRegionBo)l(x)36
b(\(\))396 3953 y Fc(int)484 b(GrGetRegionBox)965 b(\(GR_REGION_ID)52
b(re-)396 4070 y(gion,)2817 4186 y(GR_RECT)h(*rect\);)396
4416 y Fh(Fills)24 b(in)h(the)f(speci\002ed)i(rectangle)f(structure)f
(with)g(a)h(bounding)f(box)g(that)g(w)o(ould)g(completely)396
4545 y(enclose)h(the)g(speci\002ed)g(re)o(gion,)f(and)g(also)h(returns)
f(the)h(type)f(of)h(the)g(speci\002ed)g(re)o(gion.)p
Black -2 5278 a Fg(60)p Black eop
%%Page: 61 61
61 60 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 657 587 a Fa(region)24 b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(re)o
(gion)f(to)g(get)h(the)f(bounding)g(box)g(of)777 741
y Fa(rect)g Fh(:)50 b(pointer)24 b(to)g(a)h(rectangle)g(structure)706
895 y Fg(Returns)f Fh(:)50 b(the)24 b(re)o(gion)g(type)396
1392 y Fb(GrNe)n(wP)-5 b(ol)n(ygonRegion)36 b(\(\))396
1608 y Fc(GR_REGION_ID)52 b(GrNewPolygonRegion)695 b(\(int)53
b(mode,)2817 1725 y(GR_COUNT)f(count,)2817 1841 y(GR_POINT)g
(*points\);)396 2070 y Fh(Creates)26 b(a)f(ne)n(w)f(re)o(gion)g
(structure,)h(\002lls)f(it)h(with)f(the)g(re)o(gion)g(described)h(by)f
(the)h(speci\002ed)396 2200 y(polygon,)f(and)g(returns)h(the)g(ID)g
(used)f(to)h(refer)g(to)g(it.)777 2511 y Fa(mode)f Fh(:)50
b(the)24 b(polygon)g(mode)g(to)g(use)h(\(GR_POL)-10 b(Y_EVENODD)25
b(or)1094 2641 y(GR_POL)-10 b(Y_WINDING\))717 2795 y
Fa(count)24 b Fh(:)50 b(the)24 b(number)g(of)h(points)f(in)g(the)h
(polygon)657 2950 y Fa(points)f Fh(:)50 b(pointer)24
b(to)g(an)h(array)h(of)f(point)e(structures)h(describing)g(the)h
(polygon)706 3104 y Fg(Returns)f Fh(:)50 b(the)24 b(ID)h(of)g(the)g(ne)
n(wly)f(allocated)g(re)o(gion)g(structure,)h(or)f(0)h(on)g(error)-2
3898 y Ff(selections)47 b(\(3\))396 4377 y Fe(Name)396
4579 y Fd(selections)23 b Fh(\227)p Black 3784 5278 a
Fg(61)p Black eop
%%Page: 62 62
62 61 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 396 601 a Fe(Synopsis)396 1050 y Fc(void)430 b
(GrSetSelectionOwner)695 b(\(GR_WINDOW_ID)52 b(wid,)2817
1166 y(GR_CHAR)h(*typelist\);)396 1283 y(GR_WINDOW_ID)f(GrGetSelec-)396
1400 y(tionOwner)644 b(\(GR_CHAR)52 b(**typelist\);)396
1516 y(void)430 b(GrRequestClientData)695 b(\(GR_WINDOW_ID)52
b(wid,)2817 1633 y(GR_WINDOW_ID)g(rid,)2817 1749 y(GR_SERIALNO)g
(serial,)2817 1866 y(GR_MIMETYPE)g(mimetype\);)396 1982
y(void)430 b(GrSendClientData)857 b(\(GR_WINDOW_ID)52
b(wid,)2817 2099 y(GR_WINDOW_ID)g(did,)2817 2215 y(GR_SERIALNO)g
(serial,)2817 2332 y(GR_LENGTH)g(len,)2817 2449 y(GR_LENGTH)g(thislen,)
2817 2565 y(void)h(*data\);)396 3059 y Fe(Description)396
3574 y(Details)396 3919 y Fb(GrSetSelectionOwner)35 b(\(\))396
4135 y Fc(void)430 b(GrSetSelectionOwner)695 b(\(GR_WINDOW_ID)52
b(wid,)2817 4251 y(GR_CHAR)h(*typelist\);)396 4480 y
Fh(Sets)25 b(the)f(current)h(selection)e(\(otherwise)h(kno)n(wn)f(as)i
(the)f(clipboard\))g(o)n(wnership)f(to)h(the)g(speci\002ed)396
4610 y(windo)n(w)-6 b(.)29 b(Specifying)c(an)g(o)n(wner)f(of)h(0)g
(diso)n(wns)e(the)h(selection.)30 b(The)25 b(typelist)e(ar)n(gument)i
(is)f(a)h(list)396 4739 y(of)g(mime)f(types)g(\(seperated)h(by)g(space)
g(characters\))h(which)e(the)h(windo)n(w)f(is)g(able)h(to)f(supply)g
(the)p Black -2 5278 a Fg(62)p Black eop
%%Page: 63 63
63 62 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(data)25 b(as.)31 b(At)24 b(least)h(one)g(type)f
(must)g(be)h(speci\002ed)g(unless)f(you)g(are)i(diso)n(wning)c(the)j
(selection)396 708 y(\(typically)f(te)o(xt/plain)f(for)i(plain)f(ASCII)
i(te)o(xt)e(or)h(te)o(xt/uri-list)d(for)j(a)g(\002lename\).)396
888 y(The)g(windo)n(w)e(which)i(o)n(wns)f(the)g(current)h(selection)f
(must)g(be)h(prepared)g(to)g(handle)396 1017 y(SELECTION_LOST)g(e)n(v)o
(ents)f(\(recei)n(v)o(ed)g(when)h(another)g(windo)n(w)e(tak)o(es)i(o)n
(wnership)e(of)i(the)396 1147 y(selection\))g(and)f(CLIENT_D)l(A)-11
b(T)i(A_REQ)25 b(e)n(v)o(ents)e(\(recei)n(v)o(ed)i(when)f(a)h(client)g
(wishes)f(to)g(retrei)n(v)o(e)396 1276 y(the)h(selection)f(data\).)833
1583 y Fa(wid)k Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(set)f(the)h(selection)f(o)n(wner)g(to)538 1738 y Fa(typelist)f
Fh(:)50 b(list)23 b(of)i(mime)f(types)g(selection)g(data)h(can)g(be)g
(supplied)f(as)396 2239 y Fb(GrGetSelectionOwner)35 b(\(\))396
2455 y Fc(GR_WINDOW_ID)52 b(GrGetSelectionOwner)641 b(\(GR_CHAR)53
b(**type-)396 2571 y(list\);)396 2801 y Fh(Finds)25 b(the)f(windo)n(w)g
(which)g(currently)h(o)n(wns)e(the)i(selection)f(and)h(returns)f(its)g
(ID,)h(or)g(0)g(if)g(no)396 2930 y(windo)n(w)f(currently)g(o)n(wns)g
(the)h(selection.)30 b(A)24 b(pointer)h(to)f(the)h(list)e(of)i(mime)f
(types)g(the)h(selection)396 3060 y(o)n(wner)g(is)f(capable)h(of)g
(supplying)e(is)h(placed)h(in)g(the)f(pointer)g(speci\002ed)i(by)e(the)
h(typelist)396 3189 y(ar)n(gument.)31 b(The)24 b(typelist)g(is)g(null)g
(terminated,)g(and)h(the)f(\002elds)h(are)h(seperated)f(by)f(space)396
3319 y(characters.)32 b(It)25 b(is)f(the)h(callers)g(responsibility)d
(to)i(free)i(the)f(typelist)e(string,)h(as)h(it)f(is)g(allocated)396
3448 y(dynamically)-6 b(.)29 b(If)c(the)g(allocation)f(f)o(ails,)g(it)h
(will)e(be)i(set)g(to)f(a)i(NULL)e(pointer)l(,)g(so)h(remember)f(to)396
3578 y(check)h(the)g(v)n(alue)f(of)h(it)g(before)g(using)f(it.)538
3889 y Fa(typelist)f Fh(:)50 b(pointer)24 b(used)g(to)h(return)f(the)h
(list)f(of)h(a)n(v)n(ailable)f(mime)g(types)706 4044
y Fg(Returns)g Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(which)i
(currently)f(o)n(wns)g(the)g(selection,)g(or)h(0)396
4540 y Fb(GrRequestClientData)37 b(\(\))396 4756 y Fc(void)430
b(GrRequestClientData)695 b(\(GR_WINDOW_ID)52 b(wid,)2817
4873 y(GR_WINDOW_ID)g(rid,)p Black 3784 5278 a Fg(63)p
Black eop
%%Page: 64 64
64 63 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(GR_SERIALNO)52 b(serial,)2817 695
y(GR_MIMETYPE)g(mime-)396 812 y(type\);)396 1041 y Fh(Sends)25
b(a)g(CLIENT_D)l(A)-11 b(T)i(A_REQ)25 b(e)n(v)o(ent)e(to)i(the)f
(speci\002ed)h(windo)n(w)-6 b(.)29 b(Used)c(for)g(requesting)f(both)396
1171 y(selection)g(and)h("drag)g(and)f(drop")h(data.)30
b(The)25 b(mimetype)f(ar)n(gument)g(speci\002es)h(the)g(format)f(of)h
(the)396 1300 y(data)g(you)f(w)o(ould)g(lik)o(e)h(to)f(recei)n(v)o(e,)h
(as)g(an)g(inde)o(x)e(into)h(the)h(list)f(returned)g(by)396
1430 y(GrGetSelectionOwner)h(\(the)g(\002rst)g(type)f(in)h(the)f(list)g
(is)g(inde)o(x)g(0\).)31 b(The)25 b(serv)o(er)g(mak)o(es)f(no)396
1559 y(guarantees)h(as)g(to)f(when,)h(or)g(e)n(v)o(en)f(if,)h(the)f
(client)h(will)f(reply)g(to)h(the)f(request.)31 b(If)25
b(the)g(client)f(does)396 1689 y(reply)-6 b(,)24 b(the)h(reply)g(will)f
(tak)o(e)g(the)h(form)g(of)g(one)f(or)h(more)g(CLIENT_D)l(A)-11
b(T)i(A)24 b(e)n(v)o(ents.)29 b(The)c(request)396 1818
y(serial)g(number)f(is)h(typically)e(a)i(unique)f(ID)h(which)g(the)f
(client)h(can)g(assign)f(to)g(a)h(request)g(in)f(order)396
1948 y(for)h(it)g(to)f(be)h(able)g(to)f(k)o(eep)h(track)g(of)g
(transfers)g(\(CLIENT_D)l(A)-11 b(T)i(A)25 b(e)n(v)o(ents)e(contain)h
(the)h(same)396 2077 y(number)g(in)f(the)h(sid)f(\002eld\).)31
b(Remember)25 b(to)f(free)i(the)f(data)g(\002eld)g(of)g(the)f(CLIENT_D)
l(A)-11 b(T)i(A)24 b(e)n(v)o(ents)396 2207 y(as)h(the)o(y)f(are)i
(dynamically)d(allocated.)31 b(Also)24 b(note)g(that)g(if)h(the)g
(allocation)f(f)o(ails)g(the)h(data)g(\002eld)396 2336
y(will)f(be)h(set)g(to)f(NULL,)h(so)f(you)g(should)g(check)h(the)g(v)n
(alue)f(before)h(using)f(it.)833 2648 y Fa(wid)k Fh(:)50
b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(requesting)h(the)h(data)833
2802 y Fa(rid)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(to)i
(request)f(the)h(data)g(from)657 2957 y Fa(serial)f Fh(:)50
b(the)24 b(serial)h(number)f(of)h(the)g(request)538 3111
y Fa(mimetype)e Fh(:)50 b(the)24 b(number)g(of)h(the)g(desired)g(mime)e
(type)i(to)f(request)396 3608 y Fb(GrSendClientData)35
b(\(\))396 3824 y Fc(void)430 b(GrSendClientData)857
b(\(GR_WINDOW_ID)52 b(wid,)2817 3940 y(GR_WINDOW_ID)g(did,)2817
4057 y(GR_SERIALNO)g(serial,)2817 4173 y(GR_LENGTH)g(len,)2817
4290 y(GR_LENGTH)g(thislen,)2817 4407 y(void)h(*data\);)396
4636 y Fh(Used)25 b(as)g(the)f(response)h(to)f(a)h(CLIENT_D)l(A)-11
b(T)i(A_REQ)25 b(e)n(v)o(ent.)k(Sends)c(the)g(speci\002ed)g(data)g(of)g
(the)396 4765 y(speci\002ed)g(length)f(to)h(the)f(speci\002ed)h(windo)n
(w)f(using)g(the)g(speci\002ed)h(source)g(windo)n(w)f(ID)h(and)p
Black -2 5278 a Fg(64)p Black eop
%%Page: 65 65
65 64 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 579 a Fh(transfer)25 b(serial)g(number)-5 b(.)30
b(An)o(y)24 b(fragmentation)g(of)g(the)h(data)g(into)f(multiple)f
(CLIENT_D)l(A)-11 b(T)i(A)396 708 y(e)n(v)o(ents)24 b(which)g(is)g
(required)h(is)g(handled)f(automatically)-6 b(.)29 b(The)c(serial)f
(number)g(should)g(al)o(w)o(ays)h(be)396 838 y(set)g(to)f(the)h(v)n
(alue)f(supplied)g(by)g(the)h(CLIENT_D)l(A)-11 b(T)i(A_REQ)24
b(e)n(v)o(ent.)30 b(The)25 b(thislen)e(parameter)i(is)396
967 y(used)g(internally)f(to)g(split)g(the)g(data)h(up)g(into)f(pack)o
(ets.)30 b(It)25 b(should)e(be)i(set)g(to)f(the)h(same)g(v)n(alue)f(as)
h(the)396 1097 y(len)g(parameter)-5 b(.)833 1409 y Fa(wid)28
b Fh(:)50 b(the)24 b(ID)h(of)g(the)g(windo)n(w)e(sending)h(the)h(data)
833 1563 y Fa(did)j Fh(:)50 b(the)24 b(ID)h(of)g(the)g(destination)e
(windo)n(w)657 1717 y Fa(serial)h Fh(:)837 1872 y Fa(len)g
Fh(:)50 b(the)24 b(number)g(of)h(bytes)g(of)f(data)h(to)g(transfer)598
2026 y Fa(thislen)e Fh(:)50 b(the)24 b(number)g(of)h(bytes)g(in)f(this)
g(pack)o(et)777 2181 y Fa(data)g Fh(:)50 b(pointer)24
b(to)g(the)h(data)g(to)f(transfer)-2 2974 y Ff(misc)47
b(\(3\))396 3454 y Fe(Name)396 3655 y Fd(misc)24 b Fh(\227)396
4049 y Fe(Synopsis)396 4498 y Fc(void)430 b(GrReqShmCmds)1073
b(\(long)53 b(shmsize\);)396 4615 y(void)430 b(GrInjectKeyboardEvent)
587 b(\(GR_WINDOW_ID)52 b(wid,)2817 4731 y(GR_UNICODE)g(uch,)2817
4848 y(GR_CHAR)h(ch,)p Black 3784 5278 a Fg(65)p Black
eop
%%Page: 66 66
66 65 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 2817 579 a Fc(int)53 b(modif,)2817 695 y(int)g(special,)2817
812 y(un-)396 929 y(signed)g(char)g(content\);)396 1045
y(void)430 b(GrRegisterInput)911 b(\(int)53 b(fd\);)396
1162 y(void)430 b(GrPrepareSelect)911 b(\(int)53 b(*maxfd,)2817
1278 y(void)g(*rfdset\);)396 1395 y(void)430 b(GrServiceSelect)911
b(\(void)53 b(*rfdset,)2817 1511 y(GR_FNCALLBACKEVENT)d(fncb\);)396
1628 y(void)430 b(GrBell)1397 b(\(void\);)396 1745 y(void)430
b(GrSetScreenSaverTimeout)479 b(\(GR_TIMEOUT)52 b(time-)396
1861 y(out\);)396 2354 y Fe(Description)396 2870 y(Details)396
3214 y Fb(GrReqShmCmds)35 b(\(\))396 3431 y Fc(void)430
b(GrReqShmCmds)1073 b(\(long)53 b(shmsize\);)396 3660
y Fh(Requests)25 b(a)g(shared)g(memory)f(area)i(of)f(the)f(speci\002ed)
h(size)g(to)g(use)f(for)h(transferring)g(command)396
3789 y(ar)n(guments.)30 b(This)24 b(is)h(f)o(aster)g(b)n(ut)f(less)g
(portable)h(than)f(the)h(standard)f(BSD)i(sock)o(ets)e(method)g(of)396
3919 y(communication)f(\(and)i(of)g(course)g(will)f(only)g(w)o(ork)g
(if)h(the)g(client)f(and)h(serv)o(er)g(are)g(on)g(the)f(same)396
4048 y(machine\).)31 b(Apart)25 b(from)f(the)h(initial)e(allocation)h
(of)h(the)g(area)g(using)f(this)g(call,)h(the)f(use)h(of)g(shared)396
4178 y(memory)f(is)h(completely)e(transparent.)31 b(Additionally)-6
b(,)22 b(if)i(the)h(allocation)f(f)o(ails)g(we)h(silently)f(and)396
4307 y(automatically)g(f)o(all)g(back)h(on)g(sock)o(et)f
(communication.)29 b(It)c(is)f(safe)h(to)g(call)f(this)g(function)g(e)n
(v)o(en)g(if)396 4437 y(shared)h(memory)f(support)g(is)g(not)h
(compiled)e(in;)h(it)h(will)f(simply)f(do)h(nothing.)396
4616 y(FIXME:)h(ho)n(w)f(does)g(the)h(user)g(decide)g(what)f(size)h(of)
g(shared)g(memory)f(area)i(to)e(allocate?)p Black -2
5278 a Fg(66)p Black eop
%%Page: 67 67
67 66 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 598 587 a Fa(shmsize)23 b Fh(:)50 b(the)24 b(size)h(of)g(the)g
(shared)f(memory)g(area)i(to)f(allocate)396 1083 y Fb(GrInjectK)n(e)n
(yboar)n(dEvent)36 b(\(\))396 1299 y Fc(void)430 b
(GrInjectKeyboardEvent)587 b(\(GR_WINDOW_ID)52 b(wid,)2817
1416 y(GR_UNICODE)g(uch,)2817 1532 y(GR_CHAR)h(ch,)2817
1649 y(int)g(modif,)2817 1765 y(int)g(special,)2817 1882
y(unsigned)f(char)h(con-)396 1999 y(tent\);)396 2228
y Fh(Sends)25 b(a)g(k)o(e)o(yboard)f(e)n(v)o(ent)g(to)h(the)f
(speci\002ed)h(windo)n(w)-6 b(,)23 b(or)i(to)f(the)h(windo)n(w)f(with)g
(the)g(current)396 2357 y(k)o(e)o(yboard)g(focus)h(if)g(0)g(is)f(used)g
(as)h(the)g(ID.)g(The)g(other)f(ar)n(guments)h(correspond)f(directly)g
(to)h(the)396 2487 y(\002elds)g(of)g(the)g(same)f(names)h(in)f(the)h(k)
o(e)o(yboard)f(e)n(v)o(ent)g(structure.)833 2798 y Fa(wid)k
Fh(:)50 b(ID)25 b(of)f(the)h(windo)n(w)f(to)g(send)g(the)h(e)n(v)o(ent)
f(to,)g(or)h(0)837 2953 y Fa(uch)f Fh(:)50 b(32)24 b(bit)g(Unicode)h(k)
o(e)o(ystrok)o(e)e(v)n(alue)i(to)f(inject)897 3107 y
Fa(ch)g Fh(:)50 b(8)24 b(bit)g(ascii)h(k)o(e)o(ystrok)o(e)f(v)n(alue)g
(to)g(inject)711 3262 y Fa(modif)30 b Fh(:)598 3416 y
Fa(special)23 b Fh(:)50 b(special)24 b(k)o(e)o(ys)g(to)h(inject)598
3570 y Fa(content)e Fh(:)50 b(mask)24 b(specifying)g(which)g(ar)n
(guments)g(are)i(v)n(alid)396 4067 y Fb(GrRegisterInput)35
b(\(\))396 4283 y Fc(void)430 b(GrRegisterInput)911 b(\(int)53
b(fd\);)396 4512 y Fh(Re)o(gister)25 b(an)g(e)o(xtra)f(\002le)h
(descriptor)g(to)f(monitor)g(in)g(the)h(main)f(select\(\))h(call.)31
b(An)24 b(e)n(v)o(ent)g(will)g(be)396 4642 y(returned)h(when)g(the)f
(fd)h(has)g(data)g(w)o(aiting)f(to)g(be)h(read)g(if)g(that)g(e)n(v)o
(ent)e(has)i(been)g(selected)g(for)-5 b(.)p Black 3780
5278 a Fg(67)p Black eop
%%Page: 68 68
68 67 bop Black -2 67 a Fg(Chapter)24 b(1.)31 b(libnano-X)p
Black 893 587 a Fa(fd)d Fh(:)50 b(the)24 b(\002le)h(descriptor)g(to)f
(monitor)396 1083 y Fb(GrPrepareSelect)34 b(\(\))396
1299 y Fc(void)430 b(GrPrepareSelect)911 b(\(int)53 b(*maxfd,)2817
1416 y(void)g(*rfdset\);)396 1645 y Fh(Prepare)26 b(for)f(a)h
(GrServiceSelect)g(function)e(by)g(asking)g(the)h(serv)o(er)g(to)f
(send)h(the)f(ne)o(xt)g(e)n(v)o(ent)g(b)n(ut)396 1774
y(not)g(w)o(aiting)g(around)h(for)g(it)f(to)h(arri)n(v)o(e)f(and)h
(initialising)d(the)i(speci\002ed)i(fd_set)e(structure)g(with)g(the)396
1904 y(client/serv)o(er)g(sock)o(et)h(descriptor)f(and)h(an)o(y)f(pre)n
(viously)f(re)o(gistered)h(e)o(xternal)g(\002le)i(descriptors.)396
2033 y(Also)e(compares)h(the)g(current)g(contents)f(of)h(maxfd,)f(the)h
(client/serv)o(er)e(sock)o(et)i(descriptor)l(,)f(and)396
2163 y(the)h(pre)n(viously)e(re)o(gistered)h(e)o(xternal)g(\002le)i
(descriptors,)e(and)g(returns)h(the)g(highest)e(of)i(them)f(in)396
2292 y(maxfd.)713 2584 y Fa(maxfd)k Fh(:)50 b(pointer)24
b(to)g(a)h(v)n(ariable)g(which)f(the)h(highest)e(in)i(use)f(fd)h(will)f
(be)h(written)f(to)657 2738 y Fa(rfdset)g Fh(:)50 b(pointer)24
b(to)g(the)h(\002le)g(descriptor)f(set)h(structure)f(to)h(use)396
3255 y Fb(GrSer)q(viceSelect)36 b(\(\))396 3471 y Fc(void)430
b(GrServiceSelect)911 b(\(void)53 b(*rfdset,)2817 3588
y(GR_FNCALLBACKEVENT)d(fncb\);)396 3817 y Fh(Used)25
b(by)f(GrMainLoop\(\))g(to)h(call)g(the)f(speci\002ed)h(callback)g
(function)f(when)h(an)g(e)n(v)o(ent)e(arri)n(v)o(es)h(or)396
3946 y(there)h(is)g(data)g(w)o(aiting)e(on)i(an)g(e)o(xternal)f(fd)h
(speci\002ed)g(by)g(GrRe)o(gisterInput\(\).)657 4258
y Fa(rfdset)f Fh(:)50 b(pointer)24 b(to)g(the)h(\002le)g(descriptor)f
(set)h(to)f(monitor)775 4412 y Fa(fncb)i Fh(:)50 b(pointer)24
b(to)g(the)h(function)f(to)g(call)h(when)g(an)g(e)n(v)o(ent)e(needs)i
(handling)p Black -2 5278 a Fg(68)p Black eop
%%Page: 69 69
69 68 bop Black 3023 67 a Fg(Chapter)25 b(1.)30 b(libnano-X)p
Black 396 583 a Fb(GrBell)k(\(\))396 799 y Fc(void)430
b(GrBell)1397 b(\(void\);)396 1028 y Fh(Asks)24 b(the)h(serv)o(er)g(to)
f(ring)h(the)f(console)h(bell)f(on)g(behalf)h(of)g(the)g(client)f
(\(intended)g(for)h(terminal)396 1158 y(apps)g(to)f(be)h(able)g(to)f
(ring)h(the)g(bell)f(on)g(the)h(serv)o(er)g(e)n(v)o(en)f(if)h(the)o(y)f
(are)h(running)f(remotely\).)396 1612 y Fb(GrSetScreenSa)n(verTimeout)
36 b(\(\))396 1828 y Fc(void)430 b(GrSetScreenSaverTimeout)479
b(\(GR_TIMEOUT)52 b(time-)396 1945 y(out\);)396 2174
y Fh(Sets)25 b(the)g(number)f(of)h(seconds)f(of)h(inacti)n(vity)e
(before)i(a)h(screen)f(sa)n(v)o(er)g(acti)n(v)n(ate)e(e)n(v)o(ent)h(is)
g(sent)h(to)396 2304 y(the)g(root)f(windo)n(w)g(ID.)h(A)f(v)n(alue)h
(of)g(0)f(acti)n(v)n(ates)g(the)g(screen)i(sa)n(v)o(er)e(immediately)-6
b(,)23 b(and)i(a)g(v)n(alue)f(of)396 2433 y(-1)h(disables)f(the)h
(screen)g(sa)n(v)o(er)g(function.)598 2724 y Fa(timeout)e
Fh(:)50 b(the)24 b(number)g(of)h(seconds)g(of)g(inacti)n(vity)d(before)
k(screen)f(sa)n(v)o(er)g(acti)n(v)n(ates)p Black 3784
5278 a Fg(69)p Black eop
%%Page: 70 70
70 69 bop Black Black Black Black eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
/nano-X/nano-X-docs.sgml
0,0 → 1,31
<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
<!entity general SYSTEM "sgml/general.sgml">
<!entity window SYSTEM "sgml/window.sgml">
<!entity graphics SYSTEM "sgml/graphics.sgml">
<!entity events SYSTEM "sgml/events.sgml">
<!entity fonts SYSTEM "sgml/fonts.sgml">
<!entity pointer SYSTEM "sgml/pointer.sgml">
<!entity colours SYSTEM "sgml/colours.sgml">
<!entity regions SYSTEM "sgml/regions.sgml">
<!entity selections SYSTEM "sgml/selections.sgml">
<!entity misc SYSTEM "sgml/misc.sgml">
]>
<book>
<?dbhtml filename="index.html">
<bookinfo>
<title>Nano-X API Reference Manual</title>
</bookinfo>
<chapter id="libnano-X">
<title>libnano-X</title>
&general;
&window;
&graphics;
&events;
&fonts;
&pointer;
&colours;
&regions;
&selections;
&misc;
</chapter>
</book>
/nano-X/Makefile
0,0 → 1,42
# Note! You need to have gtk-doc, docbook, jade, tex, and various other
# things set up and playing nicely before you will be able to rebuild
# this documentation. If you just want to read the docs, use the prebuilt
# copies provided.
 
MODULE=nano-X
SRCDIR=../../src/
SOURCEDIR=$(SRCDIR)nanox/
INCLUDES=$(SRCDIR)/include/nano-X.h
MODFLG=--module=$(MODULE)
 
.PHONY : scan templates sgml html ps pdf dvi rtf clean
 
all: pdf html cleanup
 
scan: $(INCLUDES)
gtkdoc-scan $(MODFLG) --source-dir=$(SOURCEDIR) $(INCLUDES)
 
templates: scan
gtkdoc-mktmpl $(MODFLG)
 
sgml: templates
gtkdoc-mkdb $(MODFLG) --source-dir=$(SOURCEDIR)
 
html: sgml $(MODULE)-docs.sgml
if ! test -d html ; then mkdir html ; fi
cd html && gtkdoc-mkhtml $(MODFLG) ../$(MODULE)-docs.sgml
 
ps: sgml $(MODULE)-docs.sgml
db2ps $(MODULE)-docs.sgml
 
pdf: ps
ps2pdf $(MODULE)-docs.ps
 
cleanup:
rm -f sgml/* tmpl/* *.bak *.log $(MODULE)-unused.txt $(MODULE)-decl.txt $(MODULE)-decl-list.txt *.tex *.dvi *.aux
if test -d tmpl ; then rmdir tmpl ; fi
if test -d sgml ; then rmdir sgml ; fi
 
clean: cleanup
rm -f html/* *.pdf *.ps
if test -d html ; then rmdir html ; fi
/nano-X/nano-X-docs.pdf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
nano-X/nano-X-docs.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: original_mini-x.txt =================================================================== --- original_mini-x.txt (nonexistent) +++ original_mini-x.txt (revision 1765) @@ -0,0 +1,1103 @@ + MINI-X TUTORIAL + David I. Bell + 19 May 91 + +This is a simple tutorial on using the mini-X graphics system. Much of this +is a lot easier to understand if you are familiar to X. I am not going to +try to explain every concept in detail here, nor how to put it all together +to make really fancy programs. Instead, I am only going to tell you just +enough to let you make some simple graphics programs which work. Experience +with simple test programs will enable you to build much fancier graphics +programs much easier than trying to decipher what I could tell you. + +I am assuming that you basically know what a screen, pixels, colors, +keyboards, mice, buttons, and windows are. However, you probably don't +know exactly what the properties of windows in this system are. Also, you +might not know two other concepts which are important here, which are +graphics contexts and events. So these things will be explained in this +tutorial. + + +WINDOWS + +Windows are rectangular areas which can be drawn into. Windows have a +position, specified by the x and y coordinates of their upper left corners, +and also a size, specified by their width and height. Windows are arranged +in a tree structure, with the parent windows controlling the child windows. +The top of the tree is known as the root window. The root window is always +present, and represents the total screen area. + +Each child window is clipped by its parent window. This means that a window +can be very large, but the only part of the window that can ever be seen is +the part which shows through its parent window. This applies recursively, +so that all of the parents of a window limit its visibility. The position +of a window is specified relative to its parent, and not absolutely. This +means that for example, when a window is moved, then all of its children will +move with it. The position of a window can be negative. + +Windows which have the same parent can clip each other. That is, there is a +defined order among the children of a window as to which is more important. +If two sibling windows overlap, then the more important window will be visible +in preference to the less important window. The precedence of visibility +of siblings can be dynamically adjusted. Clipping can also occur on a window +by earlier siblings of any of the window's parents. + +Windows can be mapped or unmapped. Unmapped windows are not visible, and +cause no events. They can be thought of as "in storage" or offscreen. +When a window is mapped, then it can become visible on the screen. Children +of an unmapped window are implicitly also unmapped. So a window is not +visible until it and all of its parents are mapped. A newly created window +starts off unmapped. + +Windows have a background color. A newly mapped window is filled with its +background color. Clearing the window later, or having obscured portions +of the window become visible again, will fill the region with the background. +The client program can then draw into the window to make it look correct. + +Windows may have a border. A border is a set of rectangles adjacent to the +four sides of the window which is drawn in a specified color, with a +specified width. This makes pretty lines around the window, for example. +The border cannot be drawn in by the program. Borders are optional, so +that a window with a border width of zero has no border at all. Borders +are "around" the window, so that they do not affect the coordinates of the +window. Whether or not a window has borders, its position determines the +location of the upper left corner which can be drawn into. + +Windows can have a cursor associated with them. The graphics server tracks +the location of the mouse, and maintains the position of a graphics cursor +on the screen. This cursor can automatically change its shape and colors as +it moves between different windows. The use of different cursors for different +windows can be used to provide a powerful clue to the user as to what will +happen if a mouse button is pressed in a window. Newly created windows +inherit the same cursor as their parent. + +There are two types of windows, input-output and input-only windows. +Input-output windows are normal windows which are visible and can be drawn +into. Input-only windows are invisible, have no border, and cannot be +drawn into. Their purpose is to catch events, and to enable the cursor +to be changed in different regions of a visible window. The only children +of input-only windows are also input-only windows. + +Windows are identified by integers called window ids. The root window has +a constant window id value of GR_ROOT_WINDOW_ID. The root window does not +need creating, and cannot be unmapped, moved, resized, or destroyed. +However, it can be drawn into and events can be delivered to it. New windows +can be created from existing windows. Their window ids are not constants, +but once created the window id remains until the window is destroyed. Window +ids are not reused as windows are created and destroyed. + + +GRAPHICS CONTEXTS + +When drawing objects such as lines, there are many parameters that can be +specified for the function call that affect the operation. Besides the +minimum information needed for the function such as the endpoint coordinates, +there are extra parameters that are less important and less variable. +Examples of these extra parameters are color, width (thin or thick), style +(dashed, dotted), and drawing operation (setting, XORing). Instead of +requiring the specifying of each of these extra parameters for every function +call, graphics contexts are used. Graphics contexts are just a collection +of specific combinations of these extra parameters. The many possible +extra parameters to each function are replaced by just one extra parameter, +which is the graphics context. + +For example, instead of a function call like: + drawline(window, x1, y1, x2, y2, color, width, style, operation); + +you have instead + drawline(window, gc, x1, y1, x2, y2), + +where the graphics context contains within itself the parameters color, width, +style, and operation. + +Graphics contexts are stored in the graphics server, and are identified by +unique numbers in a way similar to window ids. Your program must allocate +graphic contexts, which then can be used in drawing functions. A newly +allocated graphics context is supplied with default parameters, such as a +foreground color of white, drawing operation of setting, and width of 0. +You can modify the parameters associated with the graphics context one by +one, by for example, setting the foreground color to black. + +A single graphics context could be used for every drawing operation by +constantly setting the parameters associated with it to the values needed +for each drawing call. But this is inefficient. The reason that multiple +graphics contexts can be allocated is so that you can minimize the setting of +their parameters. By presetting the parameters of several graphics contexts +to commonly used values in your program, you can avoid changing them later. +For example, you can call one graphics context white_gc, and another graphics +context black_gc, and then use the correct graphics context in the drawing +functions to draw in either black or white. + +The parameters contained within a graphics context are currently the +following: + +Drawing mode. +Specifies the operation performed when drawing each pixel. One of: + GR_MODE_SET draw pixels as given (default) + GR_MODE_XOR draw pixels using XOR + GR_MODE_OR draw pixels using OR + GR_MODE_AND draw pixels using AND + +Text font. +A small integer identifying the font for drawing text. The first few are +built-in to the device driver, others must be loaded by the graphics server. +The default font is 0. + +Foreground color. +The color that is used to draw almost all objects with, such as lines, +points, ellipses, text, bitmaps, and filled areas. Default is white. + +Background color. +The color used for some functions in addition to the foreground color. +For bitmaps and text, this is the color used for the zero bits. The +default background color is black. The drawing of this color can be +disabled by the next parameter. + +UseBackground flag. +This is a boolean value which indicates whether or not the background +color is actually to be drawn for bitmaps, text, and the GrArea8 function. +The default is GR_TRUE. + + +EVENTS + +Events are the way in which the graphics system notifies your program +of asychronous changes in the state of the screen, mouse, or keyboard. +Whenever the state changes, your program is notified of this change and +can act on it. The word "event" is used both for the actual change +that took place, and also for the data that is returned to your program +which describes the change. + +Events are generated for various different types of changes that may be useful +for your program to know. Events directly related to the hardware are the +keyboard and mouse events. Keyboard events are generated for each key which +is pressed (and released, if possible). The event contains the character +which caused the event. Mouse events are generated when a button on the +mouse is pressed or released, or when the mouse position moves. The event +contains the buttons which are pressed, and the current position of the mouse. +Other events are more subtle, and are based on non-physical changes, such +as having the mouse move into or out of specific windows. + +Events are generally tied to individual windows. Your program can enable +or disable which kinds of events it wants for each window. Part of the data +associated with an event is the window associated with the event. For +example, if a key is pressed on the keyboard, the event for that key will +indicate which window that key is for. You program can then act differently +for different windows. Events which you have not indicated an interest in +are simply discarded. + +The keyboard and mouse events can propagate upwards through the window tree +and be delivered to some parent window. This occurs if the window does +not select for the event, but one of the parent windows does. Part of the +information returned about these events is the window that accepted the event, +and also the original window which caused the event. Therefore, your program +can determine which child window an event was for without having to select +for the event for each child. Events other than keyboard and mouse events +never propagate. + +The window that keyboard events are delivered to depends on the current +mouse position or on the "input focus". The input focus is a way of +specifying that keyboard events are to be delivered to a particular window, +no matter where the mouse is currently pointing. Your program can change +the input focus as desired. If the input focus is set to the root window, +then the keyboard events will be delivered to the window which contains +the mouse pointer (or one of its parents). + +Events are returned to your program as a structure containing the information +about the event. This information is the event type, the window id which +the event is associated with, and other event-specific data. Events are +stored in a queue, and are delivered to your program one by one as requested. +The order of the events is preserved. Your program can either simply ask +for the next available event (waiting for one if none are yet available), +or it can check to see if an event is available without waiting. The +delivering of events only occurs when you request an event. So even though +events themselves are asychronous, the reading of them is synchronous. +There are no "interrupts" for events, you must explicitly ask for them. + +The important thing about programming with events is that your program +should be written to run "upside-down". That is, you do not have a main +routine which checks that the mouse has been moved, or the keyboard has +been typed on, or which window the mouse is in. Instead, your main routine +just waits for an event, and then dispatches on its type and which window +it is for. Generally, you must keep some state information to remember +what is happening in your program. For example, if the user wants to click +the button in a window to indicate where some text should be inserted, then +your program cannot simply detect the mouse click, and then wait for the +text to be typed. Instead, when the mouse is clicked, it should just +remember the position of the mouse and set a flag to indicate that text +typing is allowed, When the keyboard event arrives, this saved information +then enables you to draw the text at the correct location. Your program +basically becomes one large state machine. + +One obscure event is the exposure event. This is sent to your program when +a window requires redrawing. Due to lack of memory space, the graphics server +does not attempt to save the data from the parts of windows which are +covered by other windows. Therefore, when the obscured parts of the window +are uncovered, your program must be told to redraw those parts. The exposure +event contains a rectangular area which requires drawing (which may in fact +be larger than the area which was actually uncovered). Your program can +either just redraw that area, or if more convenient, redraw the whole window. +The area to be redrawn has already been cleared to the window's background +color. When a window is mapped, an exposure event is sent for the window. +Therefore, you should not explicitly draw into a window when it is first +created and mapped, but should instead just wait for the exposure event, and +then draw it. In this way, the code to draw the window only resides in one +place in your program, and you prevent redundant drawing of the window. +If you are drawing the complete window on all exposure events, then it +might be useful to use GrPeekEvent to examine the next event too. If it +is also an exposure event for the same window, then you can read it by using +GrGetNextEvent, and thereby prevent redundant redrawing. Of course, to +be able to redraw the window, you may need to save extra data in order to +regenerate the drawing commands. (Pixmaps are one way of doing this in +the future, but they are not currently implemented.) + +The following is a description of the various types of events which are +available, and (in parenthesis) the typedef name for the structure that +returns the event. Each event has a type field, which can be used to +distinguish between the various events. For details on the other data +within the structures, refer to graphics.h. The typedef GR_EVENT is a +union which contains all of the possible event structures. + + +GR_EVENT_TYPE_NONE (GR_EVENT) + This indicates that no event has occurred. + +GR_EVENT_TYPE_EXPOSURE (GR_EVENT_EXPOSURE) + This is generated when a window needs redrawing because it is either + newly mapped, or has been uncovered by another window. This returns + the window id, and the x, y, width, and height of the area within + the window which needs redrawing. + +GR_EVENT_TYPE_BUTTON_DOWN (GR_EVENT_BUTTON) + This is generated when a button is pressed down on the mouse. + This returns the window id which generated the event, the window id + which actually contains the mouse, the current position of the mouse, + the buttons which are currently down on the mouse, the buttons + which were just pressed down, and the current modifier flags. + +GR_EVENT_TYPE_BUTTON_UP (GR_EVENT_BUTTON) + This is generated when a button is released on the mouse. This + returns data similarly to button down. + +GR_EVENT_TYPE_MOUSE_ENTER (GR_EVENT_GENERAL) + This is generated when the mouse enters a window. This returns the + window id which generated the event. + +GR_EVENT_TYPE_MOUSE_EXIT (GR_EVENT_GENERAL) + This is generated when the mouse leaves a window. This returns + the window id which generated the event. + +GR_EVENT_TYPE_MOUSE_MOTION (GR_EVENT_MOUSE) + Mouse motion is generated for every motion of the mouse, and is + used to track the entire history of the mouse. Mouse motion + generates many events and causes lots of overhead. This returns + data similarly to mouse enter. + +GR_EVENT_TYPE_MOUSE_POSITION (GR_EVENT_MOUSE) + Mouse position ignores the history of the motion, and only reports the + latest position of the mouse by only queuing the latest such event for + any single client (good for rubber-banding). This returns data + similarly to mouse enter. + +GR_EVENT_TYPE_KEY_DOWN (GR_EVENT_KEYSTROKE) + This indicates that a key has been pressed on the keyboard. + This returns the window id which generated the event, the window id + which actually contains the pointer (if the pointer is outside of + the event window, this will be the event window), the current position + of the mouse, the current buttons on the mouse which are down, the + current modifier flags, and the character which was typed. + +GR_EVENT_TYPE_KEY_UP (GR_EVENT_KEYSTROKE) + This indicates that a key has been released on the keyboard. This + event is not necessarily available, and should not be depended on. + This returns data similarly to key down. + +GR_EVENT_TYPE_FOCUS_IN (GR_EVENT_GENERAL) + This indicates that the input focus has just changed to this window. + This returns the window id which got focus. + +GR_EVENT_TYPE_FOCUS_OUT (GR_EVENT_GENERAL) + This indicates that the input focus has just left this window. + This returns the window id which lost focus. + + +To select for events, you use GrSelectEvents, and specify the window which +wants to receive the events, and also specify a mask indicating the events +you wish to receive. The mask is the logical OR of individual bit values +representing the event types. The mask names are the same as the event +names, except that the "_TYPE_" string is replaced by "_MASK_". For +example, the mask associated with the event GR_EVENT_TYPE_FOCUS_IN is +GR_EVENT_MASK_FOCUS_IN. + +If you select for both button down and button up events, then the mouse +will be implicitly "grabbed" when any button is pressed down in that window. +This means that the mouse position and button down and up events will be +delivered only to that window, and the cursor shape won't change, even if +the mouse leaves that window. The implicit grabbing ends after the last +button is released. While this grabbing occurs, the input focus is also +not changed as the mouse is moved. + + +MODIFIER AND MOUSE BUTTONS + +Modifiers are the status of special keyboard shift-like keys. The state +of these keys can be read as up or down, and don't generate any characters +by themselves. These keys are for things like SHIFT, CTRL, and ALT. +They are returned as bit values OR'd together in various events. Not all +of these modifiers may be implemented. The GrGetScreenInfo function returns +the modifiers that are implemented. The following modifiers are defined: + + GR_MODIFIER_SHIFT shift key is down + GR_MODIFIER_CTRL ctrl key is down + GR_MODIFIER_META meta (or ALT) key is down + GR_MODIFIER_ANY any of the modifiers is down + + +The mouse button state are returned as bit values OR'd together in various +events. Not all of these buttons may be implemented. The GrGetScreenInfo +function returns the buttons that are implemented. The following mouse +buttons are defined: + + GR_BUTTON_1 button 1 is down (left) + GR_BUTTON_2 button 2 is down (middle) + GR_BUTTON_3 button 3 is down (right) + GR_BUTTON_ANY any of the buttons is down + + +BITMAPS + +Bitmaps are defined as an array of GR_BITMAP values, which are unsigned shorts. +Each word is 16 bits, which specify foreground and background values, with 1 +being foreground and 0 being background. Higher order bits in the word +represent pixels to the left of the lower order bits. Bitmaps have a width +and a height, measured in pixels. The width does not need to be a multiple +of 16. In this case, remaining bits in the last word of a row are unused, +so that each row starts with a new bitmap word. The GR_BITMAP_SIZE macro can +be used to allocate the proper number of bitmap words for a bitmap, as in: + + GR_BITMAP_SIZE(width, height). + +The symbol GR_MAX_BITMAP_SIZE is the number of bitmap words required for +the maximum sized cursor. + + +ERROR CODES + +Calls to the graphics libraries may produce errors. Most errors that +occur are due to specifying a window or graphics context which does not +exist, or attempting an operation which is illegal. Many things are allowed +even if pointless, such as drawing outside of the window boundaries, or +while a window is not mapped. The things which return errors are those +which definitely indicate a program bug, attempts to exceed the system +limits, or a fatal device error. + +In order to be as efficient as possible, error codes are not returned by +individual function calls. Instead, if a function fails, an error event +is generated which will eventually be noticed by the program at a possibly +much later time. This allows many drawing requests to be sent at one time +without having to worry about the status of each one. + +Error events are detected when the program checks for events, such as +by calling GrGetNextEvent. At this point, if an error had occurred, a +special error handler routine is called to notice the error. If the program +had not set up its own error handler, a default one is called which will +disconnect from the server, print out an indication of the error, and exit +the program. + +The following is a list of the possible errors: + +GR_ERROR_BAD_WINDOW_ID the specified window id is unknown +GR_ERROR_BAD_GC_ID the specified graphics context id is unknown +GR_ERROR_BAD_CURSOR_SIZE the specified cursor is too large +GR_ERROR_MALLOC_FAILED no more memory is available in the server +GR_ERROR_BAD_WINDOW_SIZE the specified window size is illegal +GR_ERROR_KEYBOARD_ERROR an error occurred reading from the keyboard +GR_ERROR_MOUSE_ERROR an error occurred reading from the mouse +GR_ERROR_INPUT_ONLY_WINDOW drawing was attempted in an input-only window +GR_ERROR_ILLEGAL_ON_ROOT_WINDOW an illegal operation was attempted on the root +GR_ERROR_TOO_MUCH_CLIPPING complexity of windows exceeded clipping limits +GR_ERROR_SCREEN_ERROR an error occurred talking to the screen driver +GR_ERROR_UNMAPPED_FOCUS_WINDOW attempted to set focus to an unmapped window +GR_ERROR_BAD_DRAWING_MODE illegal drawing mode specified for a GC + + +SCREEN PROPERTIES + +You do not have to hard code the size of the screen or the number of colors +available in your program. Instead, you can find this information out +dynamically after the connection is made to the graphics server, by using +the GrGetScreenInfo call. This returns the above information, and in addition +returns the color values for black and white, the aspect ratio of pixels, +the number of built-in fonts available, and the modifiers and buttons which +are available. The aspect ratio is useful for drawing objects which need +to be scaled correctly, such as circles. The aspect ratio is the quotient +of xdpcm and ydpcm, which are integer values. + + +typedef struct { + GR_SIZE rows; /* number of rows on screen */ + GR_SIZE cols; /* number of columns on screen */ + GR_SIZE xdpcm; /* dots/centimeter in x direction */ + GR_SIZE ydpcm; /* dots/centimeter in y direction */ + GR_COLOR maxcolor; /* maximum legal color value */ + GR_COLOR black; /* the color black */ + GR_COLOR white; /* the color white */ + GR_COUNT fonts; /* number of built-in fonts */ + GR_BUTTON buttons; /* buttons which are implemented */ + GR_MODIFIER modifiers; /* modifiers which are implemented */ +} GR_SCREEN_INFO; + + +INCLUDE FILE AND GRAPHICS LIBRARY + +To use the graphics server, your program must include "graphics.h". +This should be put into /usr/include, so that your program simply has +the following line at the top: + #include + +Including this file gives you all of the definitions you need to use the +graphics library. These are the typedefs, function declarations, event +structures, and various constants. + +When loading your program, you need to load the graphics server into the +program by using the -lgraph option in the cc command. For example, if +your program is called myprog, then you could build it using the following: + cc -o myprog myprog.c -lgraph + + +TYPEDEFS + +The following is a list of the typedefs in the include file, and a short +description of their purpose. Refer to their definitions in graphics.h +to find out what their actual C base type is. Most are shorts, unsigned +shorts, or longs. + +GR_COORD coordinate value (x, y locations, signed) +GR_SIZE size value (widths, heights, signed) +GR_COUNT number of items (signed) +GR_COLOR full color value (32 bit value for full generality) +GR_COLOR8 eight bit color value (8 bit value for efficient storage) +GR_BITMAP bitmap unit (single words of 16 bits for bitmaps) +GR_MODE drawing mode (setting, xoring, anding, oring) +GR_CHAR text character (normal chars) +GR_ID resource ids (window, graphics context, pixmap) +GR_DRAW_ID drawable id (window, pixmap) +GR_WINDOW_ID window id (identifies individual window) +GR_PIXMAP_ID pixmap id (identifies individual pixmaps, not yet used) +GR_GC_ID graphics context id (identifies indiviual graphics contexts) +GR_FONT font number (identifies individual fonts, first few built-in) +GR_BOOL boolean value (GR_TRUE or GR_FALSE) +GR_FUNC function codes (not for clients to use) +GR_ERROR error value (reasons for graphics calls to fail) +GR_EVENT_TYPE event types (identifies the type of event) +GR_BUTTON button flags (which mouse buttons are depressed) +GR_MODIFIER modifier flags (CTRL, SHIFT, etc) +GR_EVENT_MASK event masks (mask values corresponding to event types) +GR_FUNC_NAME function name (for error reporting) +GR_ERROR_FUNC error function (for defining error handlers) + + +The following typedefs may be useful to your program. None of the library +functions (currently) accept any of these structures as arguments, except +for the GrPoly and GrFillPoly routines, which use GR_POINT. + + +typedef struct { + GR_COORD x; /* x coordinate */ + GR_COORD y; /* y coordinate */ +} GR_POINT; + +typedef struct { + GR_COORD x1; /* x coordinate of first point */ + GR_COORD y1; /* y coordinate of first point */ + GR_COORD x2; /* x coordinate of second point */ + GR_COORD y2; /* y coordinate of second point */ +} GR_LINE; + +typedef struct { + GR_COORD x; /* x coordinate of center */ + GR_COORD y; /* y coordinate of center */ + GR_SIZE rx; /* radius in x direction */ + GR_SIZE ry; /* radius in y direction */ +} GR_ELLIPSE; + +typedef struct { + GR_COORD x; /* x coordinate of top left corner */ + GR_COORD y; /* y coordinate of top left corner */ + GR_SIZE width; /* width of rectangle */ + GR_SIZE height; /* height of rectangle */ +} GR_RECT; + + +LIMITS + +The coordinate system is limited to integers in the range GR_COORD_MIN +to GR_COORD_MAX. This is -32768 to 32767, and fits in a short. + +The maximum size of a cursor definition is GR_MAX_CURSOR_SIZE, which is +16 pixels by 16 pixels. + +The complexity of overlapping windows is limited to GR_MAX_CLIPRECTS regions, +which is 200. Each window which overlaps another requires another 1 to 4 +regions depending on its position and size. + + +GRAPHICS CALLS + + +int +GrOpen() +Open a connection to the graphics server. This must be the first graphics +function used by your program. Currently, this sets the screen into +graphics mode. Returns zero if successful, -1 on failure. + + +void +GrClose() +Close the connection to the graphics server, first flushing any graphics +calls that have been buffered. Currently, this sets the screen back into +text mode. This (currently) should be called before your program exits, +otherwise the screen will be left in graphics mode. If this occurs, you +can run the 'tm' program to reset the terminal to text mode. + + +GR_ERROR_FUNC +GrSetErrorHandler(func) + GR_ERROR_FUNC func; /* function to handle errors */ +Set an error handling routine, which will be called on any errors from +the server (when events are asked for by the client). If zero is given, +then a default routine will be used which will describe the error and exit. +Returns the previous error handler (0 if none). When an error occurs, +the error handling function is called with the following parameters: +GR_ERROR, GR_FUNC_NAME, and GR_ID. These are the error code, the name +of the function which failed, and a resource id (0 if not meaningful). +The error routine can return if desired, but without corrective action +new errors will probably occur soon. + + +void +GrGetScreenInfo(sip) + GR_SCREEN_INFO *sip; /* location to return info into */ +Return useful information about the screen. This information returned +has been documented above. + + +void +GrGetFontInfo(font, fip) + GR_FONT font; /* font number */ + GR_FONT_INFO *fip; /* address of font info */ +Return useful information about the specified font number. This information +is the font number, the height of the font, the maximum width of any +character in the font, the height of the baseline, a flag indicating whether +or not the font is fixed-width, and a table of the individual widths of each +character in the font. If the font is unknown, the returned font number is +set to zero and the remainder of the information is undefined. Refer to +graphics.h for a definition of the fields of GR_FONT_INFO. + + +void +GrGetGCInfo(gc, gcip) + GR_GC_ID gc; /* graphics context */ + GR_GC_INFO *gcip; /* address of graphics context info */ +Return useful information about the specified graphics context. This +information is the graphics context id, the current font, the foreground +and background colors, and so on. If the graphics context is unknown, +the returned id is 0, and the other information is undefined. Refer to +graphics.h for a definition of the fields of GR_GC_INFO. + + +void +GrGetGCTextSize(gc, cp, len, retwidth, retheight, retbase) + GR_GC_ID gc; /* graphics context containing font */ + GR_CHAR *cp; /* address of text string */ + GR_SIZE len; /* length of text string */ + GR_SIZE *retwidth; /* returned width of string */ + GR_SIZE *retheight; /* returned height of string */ + GR_SIZE *retbase; /* returned height of baseline */ +Return the size of a text string for the font in a graphics context. +This is the width of the string, the height of the string, and the height +above the bottom of the font of the baseline for the font. The returned +sizes are in pixels. + + +void +GrGetNextEvent(ep) + GR_EVENT *ep; /* address where event is returned */ +Return the next event from the event queue, waiting for it if necessary. +If a graphics error had occurred, the error handler will be called at this +point. This routine first flushes any buffered graphics commands. The +GR_EVENT is a union of all the possible events. The type field of the union +indicates which of the possible events took place, and then the correct +element of the union can be used to access that particular event type's data. + + +void +GrCheckNextEvent(ep) + GR_EVENT *ep; /* address where event is returned */ +Return the next event from the event queue if one is ready. +If one is not ready, then the event type GR_EVENT_TYPE_NONE is returned. +Therefore, this routine never blocks. This routine first flushes any +buffered graphics commands. + + +void +GrPeekEvent(ep) + GR_EVENT *ep; /* address where event is returned */ +Return the next event from the event queue if one is ready, without removing +it from the queue. If one is not ready, then the type GR_EVENT_TYPE_NONE +is returned. This routine never blocks. This routine first flushes any +buffered graphics commands. + + +void +GrSelectEvents(wid, eventmask) + GR_WINDOW_ID wid; /* window id */ + GR_EVENT_MASK eventmask; /* mask of events wanted */ +Select events for a window for this client. The events are a bitmask +specifying the events desired for this window. This totally replaces +any previously selected event mask for the window. + + +GR_WINDOW_ID +GrNewWindow(parent, x, y, width, height, bordersize, background, bordercolor) + GR_WINDOW_ID parent; /* parent id */ + GR_COORD x; /* x position relative to parent */ + GR_COORD y; /* y position relative to parent */ + GR_SIZE width; /* width */ + GR_SIZE height; /* height */ + GR_SIZE bordersize; /* size of border */ + GR_COLOR background; /* background color */ + GR_COLOR bordercolor; /* border color */ +Allocate a new input-output window which is a child of the specified window. +A new top-level window is made by specifying a parent of GR_ROOT_WINDOW_ID. +The x and y position is the upper left corner of the window, relative to +the parent's upper left corner. These corners are only for the drawable +area of the windows, so that the border does not affect the position. An +input-output window cannot be made as a child of an input-only window. The +new window starts off unmapped, and must be mapped before it can be seen. +The new window inherits the cursor of the parent window, and initially is +set to select no events. This routine returns the window id of the window +which can be used in other calls. + + +GR_WINDOW_ID +GrNewInputWindow(parent, x, y, width, height) + GR_WINDOW_ID parent; /* parent id */ + GR_COORD x; /* x position relative to parent */ + GR_COORD y; /* y position relative to parent */ + GR_SIZE width; /* width */ + GR_SIZE height; /* height */ +Allocate a new input-only window which is a child of the specified window. +An input-only window is invisible, and cannot be drawn into. It's only +purposes are that it can select events, and can have it's own cursor. The +new window starts off unmapped, and must be mapped before it is effective. +The new window inherits the cursor of the parent window, and initially is +set to select no events. This routine returns the window id of the window +which can be used in other calls. + + +void +GrDestroyWindow(wid) + GR_WINDOW_ID wid; /* window to destroy */ +This unmaps and then destroys the specified window, and all of its children. +The root window cannot be destroyed. After destroying a window, you must be +careful about handling events which refer to the dead window, but which have +not been read yet. + + +void +GrGetWindowInfo(wid, wip) + GR_WINDOW_ID wid; /* window id to find out about */ + GR_WINDOW_INFO *wip; /* location to return info into */ +Return useful information about the specified window. Refer to the +graphics.h include file for the definition of GR_WINDOW_INFO to see +what data is returned. If the window id is not valid, an error is NOT +generated. Instead, the wid value in the returned structure is set to +zero, and the other fields are not defined. + + +GR_GC_ID +GrNewGC() +Allocate a new graphics context with default parameters. These defaults are: +background of black, foreground of white, font as font 0, and drawing mode +as setting. This routine returns the id for the graphics context which can +be used in other calls. + + +GR_GC_ID +GrCopyGC(gc) + GR_GC_ID gc; /* graphics context to copy */ +Allocate a new graphics context which is a copy of another one. The new +graphics context has the same parameter values as the old one, but is then +independent. This routine returns the id for the graphics context which +can be used in other calls. + + +void +GrDestroyGC(gc) + GR_GC_ID gc; /* graphics context to destroy */ +Destroy an existing graphics context. + + +void +GrMapWindow(wid) + GR_WINDOW_ID wid; /* window to be mapped */ +Map the window to make it (and possibly its children) visible on the screen. +This paints the border and background of the window, and creates an +exposure event to tell the client to draw into it. + + +void +GrUnmapWindow(wid) + GR_WINDOW_ID wid; /* window to be unmapped */ +Unmap the window to make it and its children invisible on the screen. + + +void +GrRaiseWindow(wid) + GR_WINDOW_ID wid; /* window to be raised */ +Raise the window to the highest level among its siblings. This means that +this window will be visible in preference to those siblings. Siblings are +windows which have the same parent as this window. + + +void +GrLowerWindow(wid) + GR_WINDOW_ID wid; /* window to be lowered */ +Lower the window to the lowest level among its siblings. This means that +this window will be covered by any siblings which overlap it. + + +void +GrMoveWindow(wid, x, y) + GR_WINDOW_ID wid; /* window to be lowered */ + GR_COORD x; /* new relative x position */ + GR_COORD y; /* new relative y position */ +Move the window to the specified position relative to its parent. + + +void +GrResizeWindow(wid, width, height) + GR_WINDOW_ID wid; /* window to be lowered */ + GR_SIZE width; /* new width of window */ + GR_SIZE height; /* new height of window */ +Resize the window to be the specified size. Resizing of a window can +generate exposure events. + + +void +GrClearWindow(wid, exposeflag) + GR_WINDOW_ID wid; /* window id */ + GR_BOOL exposeflag; /* nonzero to cause an exposure */ +Clear the specified window by setting it to its background color. +If the exposeflag is nonzero, then this also creates an exposure +event for the window. + + +void +GrSetFocus(wid) + GR_WINDOW_ID wid; /* window id */ +Set the focus to a particular window. This makes keyboard events only +visible to that window or children of it, depending on the pointer location. +Setting the focus window to the root window makes the input focus track +the pointer (which is the default). + + +void +GrSetBorderColor(wid, color) + GR_WINDOW_ID wid; /* window id */ + GR_COLOR color; /* color for border */ +Set the border of a window to the specified color. + + +void +GrSetCursor(wid, width, height, hotx, hoty, foreground, background, + fgbitmap, bgbitmap) + + GR_WINDOW_ID wid; /* window id to set cursor for */ + GR_SIZE width; /* width of cursor */ + GR_SIZE height; /* height of cursor */ + GR_COORD hotx; /* relative x position of hot spot */ + GR_COORD hoty; /* relative y position of hot spot */ + GR_COLOR foreground; /* foreground color of cursor */ + GR_COLOR background; /* background color of cursor */ + GR_BITMAP *fgbitmap; /* foreground bitmap */ + GR_BITMAP *bgbitmap; /* background bitmap */ +Specify a new cursor for a window. This cursor will only be used within +that window, and by default for its new children. The cursor is defined +by giving its width and height, its foreground and background colors, its +foreground and background bitmaps, and its "hot spot" position. If a pixel +is specified for both the foreground and background bitmaps, then the +foreground has precedence. The hot spot is an offset from the upper left +corner of the bitmap, and is the location in the cursor which is important. + + +void +GrMoveCursor(x, y) + GR_COORD x; /* new x position of cursor */ + GR_COORD y; /* new y position of cursor */ +Move the cursor to the specified absolute screen coordinates. +The coordinates are that of the defined hot spot of the cursor. +The cursor's appearance is changed to that defined for the window +in which the cursor is moved to. + + +void +GrFlush() +Flush the graphics buffer so that all previous requests will be executed. +This is only needed if you do not check events quickly and want to see the +results on the screen soon, since checking for events does an automatic flush. + + +void +GrSetGCForeground(gc, foreground) + GR_GC_ID gc; /* graphics context id */ + GR_COLOR foreground; /* foreground color */ +Set the foreground color in a graphics context. The default is white. + + +void +GrSetGCBackground(gc, background) + GR_GC_ID gc; /* graphics context id */ + GR_COLOR background; /* background color */ +Set the background color in a graphics context. The default is black. + + +void +GrSetGCUseBackground(gc, flag) + GR_GC_ID gc; /* graphics context id */ + GR_BOOL flag; /* TRUE if background is drawn */ +Set whether or not the background color is drawn in bitmaps and text. +This affects GrBitmap, GrArea8, and GrText. The default is GR_TRUE. + + +void +GrSetGCMode(gc, mode) + GR_GC_ID gc; /* graphics context id */ + GR_MODE mode; /* drawing mode */ +Set the drawing mode in a graphics context. The drawing mode is one of +GR_MODE_SET, GR_MODE_XOR, GR_MODE_AND, or GR_MODE_OR. The default is +GR_MODE_SET. + + +void +GrSetGCFont(gc, font) + GR_GC_ID gc; /* graphics context id */ + GR_FONT font; /* text font */ +Set the font used for text drawing in a graphics context. +The font is a number identifying one of several fonts. +Font number 0 is always available, and is the default font. + + +void +GrLine(id, gc, x1, y1, x2, y2) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x1; + GR_COORD y1; + GR_COORD x2; + GR_COORD y2; +Draw a line in the specified drawable using the specified graphics context. + + +void +GrRect(id, gc, x, y, width, height) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE width; + GR_SIZE height; +Draw the boundary of a rectangle in the specified drawable using the +specified graphics context. + + +void +GrFillRect(id, gc, x, y, width, height) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE width; + GR_SIZE height; +Fill a rectangle in the specified drawable using the specified graphics +context. The boundary of this rectangle is identical to that drawn by +the GrRect function. + + +void +GrEllipse(id, gc, x, y, rx, ry) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE rx; + GR_SIZE ry; +Draw the boundary of an ellipse in the specified drawable with +the specified graphics context. + + +void +GrFillEllipse(id, gc, x, y, rx, ry) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE rx; + GR_SIZE ry; +Fill an ellipse in the specified drawable using the specified +graphics context. + + +void +GrBitmap(id, gc, x, y, width, height, bitmaptable) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE width; + GR_SIZE height; + GR_BITMAP *bitmaptable; +Draw a rectangular area in the specified drawable using the specified +graphics context, as determined by the specified bit map. This differs +from rectangle drawing in that the rectangle is drawn using the foreground +color and possibly the background color as determined by the bit map. +Bits which are 1 are the foreground, and bits which are 0 are the background. +Each row of bits is aligned to the next bitmap word boundary (so there can +be padding at the end of each row). The background bit values are only +written if the usebackground flag is set in the GC. + + +void +GrArea8(id, gc, x, y, width, height, colortable) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_SIZE width; + GR_SIZE height; + GR_COLOR8 *colortable; +Draw a rectangular area in the specified drawable using the specified +graphics context. This differs from rectangle drawing in that the +color values for each pixel in the rectangle are specified. The color +values are estricted to 8 bit values. The color table is indexed row by +row from left to right. Table values whose color matches the background +color are only written if the usebackground flag is set in the GC. + + +void +GrReadArea8(id, x, y, width, height, colortable) + GR_DRAW_ID id; + GR_COORD x; + GR_COORD y; + GR_SIZE width; + GR_SIZE height; + GR_COLOR8 *colortable; +Read the color values from the specified rectangular area of the specified +drawable into a supplied buffer. If the drawable is a window which is +obscured by other windows, then the returned values will include the values +from the covering windows. Regions outside of the screen boundaries, or +from unmapped windows will return black. + + +void +GrPoint(id, gc, x, y) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; +Draw a point in the specified drawable using the specified graphics context. + + +void +GrPoly(id, gc, count, pointtable) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COUNT count; + GR_POINT *pointtable; +Draw a polygon in the specified drawable using the specified graphics +context. The polygon is only complete if the first point is repeated at +the end. Note: currently if the polygon crosses itself, and the drawing +mode is set to XOR, then the individual line segments will affect each +other. The endpoints of the lines are correct, however. + + +void +GrFillPoly(id, gc, count, pointtable) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COUNT count; + GR_POINT *pointtable; +Draw a filled polygon in the specified drawable using the specified +graphics context. The last point may be a duplicate of the first point, +but this is not required. Note: currently only convex polygons are +filled properly. + + +void +GrText(id, gc, x, y, str, count) + GR_DRAW_ID id; + GR_GC_ID gc; + GR_COORD x; + GR_COORD y; + GR_CHAR *str; + GR_COUNT count; +Draw a text string at the specified location in the specified drawable +using the specified graphics context. The background of the characters +are only drawn if the usebackground flag in the GC is set. + + +EXAMPLE PROGRAM + +The following simple program opens the graphics, creates a window, prints +some text in it, waits for the mouse to be clicked in the window, then exits. + + +#include +#include + +#define MARGIN 50 /* margin around window */ + + +main() +{ + GR_WINDOW_ID wid; /* window id */ + GR_GC_ID gc; /* graphics context id */ + GR_EVENT event; /* current event */ + GR_SCREEN_INFO si; /* screen information */ + + if (GrOpen() < 0) { + fprintf(stderr, "Cannot open graphics\n"); + exit(1); + } + + GrGetScreenInfo(&si); + + wid = GrNewWindow(GR_ROOT_WINDOW_ID, MARGIN, MARGIN, + si.cols - MARGIN * 2, si.rows - MARGIN * 2, + 1, si.black, si.white); + + GrSelectEvents(wid, GR_EVENT_MASK_BUTTON_DOWN | GR_EVENT_MASK_EXPOSURE); + GrMapWindow(wid); + gc = GrNewGC(); + + while (1) { + GrGetNextEvent(&event); + switch (event.type) { + case GR_EVENT_TYPE_BUTTON_DOWN: + if (event.button.wid != wid) + break; + GrClose(); + exit(0); + + case GR_EVENT_TYPE_EXPOSURE: + if (event.exposure.wid == wid) + GrText(wid, gc, 50, 50, "EXIT", 4); + break; + } + } +} + + +For a more complete demonstration program, see the file "demo.c" in the +/usr/src/graphics/clients directory. Index: microwindows_architecture.html =================================================================== --- microwindows_architecture.html (nonexistent) +++ microwindows_architecture.html (revision 1765) @@ -0,0 +1,1085 @@ + + + + + + + +MicroWindows Architecture + + + + +

Microwindows Architecture

+ +

1999/12/04 Copyright (c) 1999 Greg Haerr <greg@censoft.com> All Rights Reserved.

+ +

This is my first cut at getting the architecture and implementation +spilled out.  Please let me know if there's more detail needed in some areas, or +whether you're confused by my explanations.  This document is for educational and +porting purposes, so please read on.

+ +

Contents

+ +

1. Architecture
+    1.1        Layered Design
+    1.2        Device Drivers
+        1.2.1     Screen Driver
+        1.2.2     Mouse Driver
+        1.2.3     Keyboard Driver
+    1.3        MicroGUI - Device +Independent Graphics Engine 
+    1.4        Applications Programmer +Interfaces
+        1.4.1    Microwindows API
+        1.4.2    Nano-X API

+ +

2. Device-Independent Engine Features
+    2.1        Graphics Engine Features +and Implementation
+        2.1.1    Regions
+        2.1.2    Clipping
+        2.1.3    Line Drawing
+        2.1.4    Rectangles, Circles, +Ellipses
+        2.1.5    Polygons
+        2.1.6    Area Fills
+        2.1.7    Fonts
+        2.1.8    Text Drawing
+        2.1.9    Color model and +palettes
+        2.1.10  Image Drawing
+        2.1.11  Blitting

+ +

3. Microwindows API
+    3.1        Message-passing +architecture
+    3.2        Window creation and +destruction
+    3.3        Window showing, hiding +and moving
+    3.4        Window painting
+        3.4.1    Client and screen +coordinates
+        3.4.2    Device contexts
+        3.4.3    Graphics drawing API
+    3.5        Utility functions
+        3.5.1    Setting window focus
+        3.5.2    Mouse capture
+        3.5.3    Rectangle and Region +management

+ +

4. Nano-X API
+    4.1        Client/Server model
+    4.2        Events
+    4.3        Window creation and +destruction
+    4.4        Window showing, hiding +and moving
+    4.5        Drawing to a window
+        4.5.1    Graphics contexts
+        4.5.2    Graphics drawing API
+    4.6        Utility functions

+ +

1. Architecture

+ +

1.1        Layered Design

+ +

Microwindows is essentially a layered design that allows different layers to be used or +rewritten to suite the needs of the implementation.  At the lowest level, screen, +mouse/touchpad and keyboard drivers provide access to the actual display and other +user-input hardware.  At the mid level, a portable graphics engine is implemented, +providing support for line draws, area fills, polygons, clipping and color models.  +At the upper level, various API's are implemented providing access to the graphics +applications programmer.  These APIs may or may not provide desktop and/or window +look and feel.  Currently, Microwindows supports the ECMA APIW and Nano-X APIs.  +These APIs provide close compatibility with the Win32 and X Window systems, allowing +programs to be ported from other systems easily.

+ +

1.2        Device Drivers

+ +

The device driver interfaces are defined in device.h.  A given implementation of +Microwindows will link at least one screen, mouse and keyboard driver into the +system.  The mid level routines in the device-independent graphics engine core then +call the device driver directly to perform the hardware-specific operations.  This +setup allows varying hardware devices to be added to the Microwindows system without +affecting the way the entire system works.

+ +

1.2.1     Screen Driver

+ +

There are currently screen drivers written for Linux 2.2.x framebuffer systems, as well +as 16-bit ELKS and MSDOS drivers for real-mode VGA cards.  The real mode drivers +(scr_bios.c, vgaplan4.c, mempl4.c, scr_her.c) can be configured to initialize the VGA +hardware directly, or utilize the PC BIOS to begin and end graphics mode.  The +framebuffer drivers (scr_fb.c, fb.c, fblin?.c) have routines for 1, 2, 4 and 8bpp +palletized displays, as well as 8, 15, 16, and 32 bpp truecolor displays.  The +framebuffer system works in Linux by opening /dev/fd0 (or getenv("FRAMEBUFFER")) +and mmap()ing the display memory into a linear buffer in memory.  Some display modes, +like the VGA 4 planes mode, require that OUT instructions be issued by the screen driver, +while packed pixel drivers typically can get away with just reading and writing the +framebuffer only.  All the graphics mode initialization and deinitialization is +handled by the Linux kernel.  Getting this set up can be a real pain.

+ +

The screen driver is the most complex driver in the system, but was designed so that it +can be extremely easy to port new hardware to Microwindows.  For this reason, there +are but a few entry points that must actually talk to the hardware, while other routines +are provided that allow just the small set of core routines to be used, if desired.  +For example, a screen driver must implement ReadPixel, DrawPixel, DrawHorzLine, and +DrawVertLine.  These routines read and write a pixel from display memory, as well as +draw a horizontal and vertical line.  Clipping is handled at the device-independent +layer.  Currently, all mouse movement, text drawing, and bitmap drawing run on top of +these low level functions.  In the future, entry points will be provided for fast +text and bitmap drawing capabilities.  If the display is palletized, a SetPalette +routine must be included, unless a static palette that matches the system palette is +linked into the system.  The screen driver, on initialization, returns values telling +the system the x,y size of the screen, along with the color model supported.

+ +

Two font models are currently provided, to be linked in at your desire.  The +proportional font model has in-core font tables built from .bdf and other font conversion +utilities provided.  The rom-based font uses the PC BIOS to find the character +generator table address and has routines to draw that fixed-pitch font format.

+ +

The screen driver can choose to implement bitblitting, by ORing in PSF_HAVEBLIT into +the returned flags field.  When present, bit blitting allows Microwindows to perform +off-screen drawing.  Microwindows allows any graphics operation that can be performed +on a physical screen to be performed off-screen, and then copied (bit-blitted) to the +physical screen.  Implementing a blitting screen driver can be fairly complex.  +The first consideration in implementing a blitting driver is whether the low-level display +hardware can be passed a hardware address for a framebuffer.  If so, then the same +routines that draw to the physical screen can be used to draw to off-screen buffers.  +This is the method used for the linear framebuffer drivers provided for Linux packed-pixel +displays.  The system replaces the mmap()'d physical framebuffer address with a +malloc()'d memory address and calls the original screen driver entry point.  In the +case where the system doesn't use an actual physical memory address, like when running on +top of X or MS Windows, then two sets of routines must be written; one to write the the +underlying graphics system hardware, and another to write to memory addresses.  In +addition, the blit entry point must then know how to copy both ways between the two +formats.  In fact, all four operations, screen-to-memory, memory-to-screen, +memory-to-memory, and screen-to-screen are supported by Microwindows and may need to be +performed.  And of course the bit blitting routine must be _fast_.  See the +files fblin8.c and mempl4.c for examples of supporting both types of display hardware.

+ +

If writing your first screen driver, I would recommend you start with the PC BIOS real +mode driver, scr_bios.c, or take a look at the framebuffer driver, scr_fb.c, which is +essentially a wrapper around all the fblin?.c routines to read and write various +framebuffer formats.  Don't set the PSF_HAVEBLIT flag at first, and you won't have to +write a bitblit routine from the start.

+ +

Note that currently, all SCREENDEVICE function pointers must be filled in to at least a +void function.  For speed reasons, the system always assumes that the function +pointers are valid.  Thus, even if not implementing bitblit, a do-nothing bit-blit +procedure must be provided.

+ +

1.2.2     Mouse Driver

+ +

There are three mouse drivers currently included in Microwindows.  A GPM driver +for Linux, mou_gpm.c, as well as a serial port mouse driver for Linux and ELKS, +mou_ser.c.  For MSDOS, an int33 driver mou_dos.c is provided.  The provided +mouse drivers decode MS, PC and Logitech mice formats.  A mouse driver's basic +function is to decode the mouse data and return either relative or absolute data for the +mouse position and buttons.

+ +

In addition, Brad LaRonde has written a touch panel driver mou_tp.c, which masquerades +as a mouse driver.  It returns the value of x, y value of the pen on the display +surface, and can be used like a mouse.

+ +

Under Linux, the main loop of Microwindows is a select() statement, with file +descriptors for the mouse and keyboard driver always passed in.  If the system that +Microwindows is running on doesn't support select() or doesn't pass mouse data through a +file descriptor, a Poll() entry point is provided.

+ +

1.2.3     Keyboard Driver

+ +

There are two keyboard drivers provided.  The first, kbd_tty.c, is used for Linux +and ELKS systems where the keyboard is opened and read as through a file descriptor.  +The second, kbd_bios.c, read the PC BIOS for keystrokes and is used in MSDOS real +mode.  The keyboard driver currently returns 8-bit data from the keyboard, but +doesn't decode multi-character function key codes. This functionality will need to be +added soon, by reading termcap files or the like.

+ +

1.3        MicroGUI - Device Independent Graphics +Engine

+ +

 The core graphics functionality of Microwindows resides in the device independent +graphics engine, which calls the screen, mouse and keyboard drivers to interface with the +hardware.  User applications programs never all the core graphics engine routines +directly, but rather through the programmer API's, discussed in the next sections.  +The core engine routines are separated from the applications API's is for a variety of +reasons.  The core routines will always reside on the server in a client/server +environment.  Also, the core routines use internal text font and bitmap formats that +are designed for speed and may or may not be the same as the structures used in standard +API's.  In addition, the core routines always use pointers, never ID's, and can then +be used together to implement more complex functions without always converting handles, +etc.

+ +

In Microwindows, the core routines all begin as GdXXX() functions, and are concerned +with graphics output, not window management.  In addition, all clipping and color +conversion is handled within this layer.  The following files comprise the core +modules of Microwindows:

+ +

    devdraw.c        Core graphics +routines for line, circle, polygon draw and fill, text and bitmap drawing, color +conversion

+ +

    devclip.c          Core +clipping routines.  (devclip2.c is the new y-x-banding algorithm, devclip1.c an older +method)

+ +

    devrgn.c           +New dynamically allocated routines for intersect/union/subtract/xor region creation.

+ +

    devmouse.c      Core routines for keeping +the mouse pointer updated or clipped from the screen.

+ +

    devkbd.c          Core +keyboard handling routines.

+ +

    devpalX.c         Linked in +static palettes for 1, 2, 4 and 8bpp palletized systems.

+ +

Section 2 following discusses the MicroGUI graphics engine routines in detail.

+ +

1.4        Applications Programmer Interfaces

+ +

Microwindows currently supports two different application programming interfaces.  +This set of routines handles client/server activity, window manager activities like +drawing title bars, close boxes, etc, as well as, of course, handling the programmer's +requests for graphics output.  Both the API's run on top of the core graphics engine +routines and device drivers.

+ +

The basic model of any API on top of Microwindows is to hang in initialize the screen, +keyboard and mouse drivers, then hang in a select() loop waiting for an event.  When +an event occurs, if it's a system event like keyboard or mouse activity, then this +information is passed to the user program converted to an expose event, paint message, +etc.  If it's a user requesting a graphics operation, then the parameters are decoded +and passed to the appropriate GdXXX engine routine.  Note that the concept of a +window versus raw graphics operations are handled at this API level.  That is, the +API defines the concepts of what a window is, what the coordinate systems are, etc, and +then the coordinates are all converted to "screen coordinates" and passed to the +core GdXXX engine routines to do the real work.  This level also defines graphics or +display contexts and passes that information, including clipping information, to the core +engine routines.

+ +

Currently, the Microwindows API code is in win*.c, while the Nano-X API code is in +nanox/srv*.c.

+ +

1.4.1    Microwindows API

+ +

The Microwindows API tries to be compliant with the European ECMA APIW standard.  +Currently, there is support for most of the graphics drawing and clipping routines, as +well as automatic window title bar drawing and dragging windows for movement. The +Microwindows API is message-based, and allows programs to be written without regard to the +eventual window management policies implemented by the system.  The Microwindows API +is not currently client/server, and will be discussed in more detail in section 4.

+ +

1.4.2    Nano-X API

+ +

The Nano-X API is modeled after the mini-x server written initially by David Bell, +which was a reimplementation of X on the MINIX operating system.  It loosely follows +the X Window System Xlib API, but the names all being with GrXXX() rather than +X...().  Currently, the Nano-X API is client/server, but does not have any provisions +for automatic window dressings, title bars, or user window moves.  There are several +groups writing widget sets currently, which will provide such things.  Unfortunately, +the user programs must also then write only to a specific widget set API, rather than +using the Nano-X API directly, which means that only the functionality provided by the +widget set will be upwardly available to the applications programmer.  (Although this +could be considerable, in the case that, say Gdk was ported.)

+ +

2. Device-Independent Engine Features

+ +

This section discusses in the capabilities and implementation of Microwindows' core +graphics engine in detail.  It's purpose is both educational and to allow extending +an API by understanding how the engine works.

+ +

    2.1        Graphics Engine +Features and Implementation

+ +

These routines concern themselves with drawing operations to off-screen or screen +surfaces.  Each routine starts with Gd... and is passed a pointer to the SCREENDEVICE +structure (PSD) as it's first parameter.  The PSD parameter specifies the low level +display details, like the x, y size of the device and the color model used by the +hardware, for example.  In addition, the actual routines to perform drawing are +function pointers in this structure.  All screen coordinates are of type COORD, and +specified in device coordinates, that is, offsets from the upper left corner of the +screen.

+ +

Colors are always specified as an RGB COLORVAL value into the graphics engine.  +They are then possibly converted to palette indices and sent to the display hardware as +PIXELVAL values.  In the case of 32bpp truecolor displays, no conversion is +required.  The color model will be discussed in detail below.

+ +

        2.1.1    Regions

+ +

Regions are used to describe arbitrary sets of pixels on the screen.  A simple, +square region of pixels can be described by a single rectangle.  More complex sets of +pixels require more complex data structures.  In Microwindows, regions are described +by an array of non-overlapping rectangles.  Currently, there are two different +implementations of regions in Microwindows, as I've been enhancing the capabilities in +this area.  The original design used a single static array of CLIPRECTs to describe +complex regions.  Any point within any rectangle in the array was considered to be in +the region.  The array wasn't sorted in any particular order, but was always +guaranteed to contain non-overlapping rectangles.  Another global variable, +clipcount, specified the number of rectangles in the array.  This original design had +no engine entry points for region management, the entire array was passed to the clipping +functions, described below.

+ +

In the new design, any number of regions can be created, as the regions (CLIPREGION *) +are stored as dynamically allocated arrays of rectangles.  In this implementation, +the non-overlapping rectangles are always kept in "y-x" sorted bands, such that +each band's y height is the same for all rectangles in the band.  This means that +only the x position and width of the rectangles in each band varied.  Because of +this, it is easier to create a set of functions for combining regions, since effectively +only a single dimension had to be compared for each region operation.  The new region +handling routines allow for creating and destroying regions, as well as combining +rectangles and regions with regions using Intersection, Union, Subtraction, and Exclusive +Or.  This model allows regions to be implemented apart from the clipping routines, +unlike the first version.  Following are the new region routines:

+ +

    +GdAllocRegion                    +- Create a region
+    +GdDestroyRegion                +- Destroy a region
+    +GdCopyRegion                    +- Copy a region
+    GdUnionRectWithRegion     - Union a rectangle with +a region
+    +GdIntersectRegion               +- Create a region from the intersection of two regions
+    +GdSubtractRegion                +- Create a region from the difference of two regions
+    +GdUnionRegion                    +- Create a region from the union of two regions
+    +GdXorRegion                       +- Create a region from the XOR of two regions
+   

+ +

        2.1.2    Clipping

+ +

Clipping in Microwindows is closely tied to the region management code.  At any +point in time, the graphics engine has a single clipping region, that is a set of +rectangles, defined for any graphics operation.  A point is drawn if it is +"inside" any of the current set of clip rectangles.  Two slightly modified +versions of the clipping algorithm are supplied, devclip1.c for the original, static +rectangle array, and devclip2.c for the newer dynamically allocated array.  A single +entry point GdSetClipRects, takes the passed region and specifies it's use for all +subsequent graphics operations.  All the drawing routines then use the two additional +routines to determine whether or not to draw.  GdClipPoint takes an x,y point in +screen coordinates and returns TRUE if the point can be drawn, that is, the point is +within one of the region rectangles.  GdClipArea takes an upper left and lower right +point, and returns one of the following: CLIP_VISIBLE, if the specified area is completely +within the region, CLIP_INVISIBLE, if the area is completely not in the region, which +means that no drawing should be performed, or CLIP_PARTIAL, if a part but not the whole +area is within the region.  A typical graphics primitive will call the screen driver +with unmodified passed inputs if CLIP_VISIBLE is returned, or return if CLIP_INIVISIBLE is +returned.  In the CLIP_PARTIAL case, the primitive must break up the original request +into areas that are within the clip region before calling the screen driver.  This +slows down the operation considerably.

+ +

Because the clipping code is called constantly before drawing operations, Microwindows +keeps a global cache rectangle of the last rectangle checked with GdClipArea, for speed +and also to allow the mid level to quickly calculate how partial drawing lengths.

+ +

        2.1.3    Line Drawing

+ +

Line drawing is the simplest of graphics operations.  Microwindows supports +GdPoint to draw a point, and GdLine to draw a horizontal, vertical or diagonal (using +Bresenham algorithm) line.  Just before any call to the screen driver, a call to +GdCheckCursor assures that the software cursor is removed prior to drawing.  +GdFixCursor restores the cursor if previously visible.

+ +

There is a tricky part to line drawing that had to be added during the support for +multiple API's.  This has to do with whether or not the last point in specified line +segment is drawn or not.  There are two schools of thought on this, and to make it +short, Microwindows supports both of them.  The last parameter to GdLine specifies +whether or not to draw the last point.  The Microwindows API doesn't draw the last +point, but the Nano-X API does.

+ +

Most drawing functions, including line drawing draw using the "current" +foreground color, specified using GdSetForeground.  In addition a drawing mode, +currently either MODE_SET or MODE_XOR can be specified using GdSetMode.

+ +

        2.1.4    Rectangles, +Circles, Ellipses

+ +

Rectangles, circles and ellipses are drawn using the GdRect and GdEllipse +routines.  A circle is an ellipse with the same x and y radius.  As with lines, +rectangles and ellipses are drawn using the current foreground color and mode.

+ +

        2.1.5    Polygons

+ +

Microwindows supports polygon drawing by specifying an array of x, y points.  The +points are then connected using the GdLine function.  The current foreground color, +drawing mode, and clip region is used during output.

+ +

        2.1.6    Area Fills

+ +

Microwindows supports filled rectangular areas using the GdFillRect function.  The +rectangle's outline and contents are filled using the current foreground color.  +Filled circles and ellipses are performed with GdFillEllipse, and polygon fills with +GdFillPoly.  Area filling is implemented through successive calls to the DrawHorzLine +in the screen driver, and are much faster if fully not clipped.

+ +

        2.1.7    Fonts

+ +

Both fixed pitch and proportional fonts are supported in Microwindows.  Because of +potentially large differences in display hardware, the actual font format is known only to +the screen driver, although a set of standard functions are supplied for dealing with +converted .bdf fonts and Microsoft Windows fonts, if you have a license.  The engine +function GdSetFont specifies a font number that is passed to the driver and used to index +a static array of linked in fonts.  Screen driver entry points GetTextSize return the +font height and width for a passed string, and GetTextBits returns an individual character +bitmap.  The engine layer uses these values to calculate a clipping region for text +drawing, as well as to draw the character as a monochrome bitmap.

+ +

The screen drivers currently supplied implement both fixed pitch PC ROM based fonts, as +well as a proportional font format that is linked into the screen driver.  A few +conversion programs allow conversion of fonts from different formats to the driver +format.  Bdftobogl converts X Window System .bdf files to Microwindows format.  +Convfnt32 converts raster and truetype Microsoft Windows fonts, if you have a license, to +Microwindows format.  Convrom converts PC ROM bios fonts.

+ +

A number of free fonts are supplied with the system, a heavier proportional 14x16 +system font, and a sans-serif 11x13 font for title bar and edit box displays.  Any +number of fonts can be linked into the system, and it's fairly easy to dynamically load +fonts if one writes the routines for it.

+ +

        2.1.8    Text Drawing

+ +

Text output is performed by first selecting the desired font with GdSetFont, and then +calling the GdText function.  Full text clipping is performed, although currently +there is no "fast" text output entry point in the screen driver, so each +character bitmap is grabbed using the GetTextBits entrypoint and then drawn using +Drawpixel.  While this will have to remain the same for partially clipped text, a +screen driver entry point to draw fast text will probably be required shortly.

+ +

Text is drawn using the current foreground color.  The background is drawn if the +current "use background" mode set via GdUseBackground is TRUE.  In this +case the background is drawn using the current background color set via +GdSetBackground.  The GdText function also takes a bottomAlign parameter that +specifies whether the text is to be bottom or top aligned, to help with differing API's.

+ +

        2.1.9    Color model and +palettes

+ +

The Microwindows graphics engine requires all colors to be specified as either 24-bit +RGB color values, or in rare cases, as palette indices for speed.  The palette index +method will only work on systems that have hardware palettes, so it's not +recommended.  All of the upper-level color parameters are specified to the engine +routines using a COLORVAL value, which is a long containing the desired RGB color, created +using the RGB() macro.  The engine then converts the COLORVAL to a PIXELVAL value, +which is normally a long also, but on some smaller systems can be compiled as an unsigned +char.  The PIXELVAL value is the actual value passed to any screen driver entry point +requiring a color.  So the mid level routines all work with RGB COLORVALs, while the +device driver routines all work with PIXELVALs.  The graphics engine converts these +values using two routines, GdFindColor and GdFindNearestColor, described below.

+ +

GdFindColor takes a hardware independent RGB value and converts it to a hardware +dependent PIXELVAL pixel value.  In the case of 32bpp display drivers, no conversion +is required.  Otherwise for truecolor systems, Microwindows converts the RGB value to +a 5/5/5 15-bit or 5/6/5 16 bit truecolor value.  For 8bpp truecolor displays, the RGB +value is converted to 3/3/2.  For palletized displays, the GdFindNearestColor +function is called to convert the RGB color to the nearest palette index in the current +system palette.  GdFindNearestColor uses a weighted distance-cubed method to find the +palette value nearest to the requested color, and returns it.  Standard palettes for +1, 2, 4 and 8bpp are included in the files devpal1, devpal2, devpal4 and devpal8.c.  +These palettes associate an RGB value with an index, but may be overwritten.

+ +

The GdSetPalette function determines whether there are any free entries in the system +palette (discussed shortly) and if so, adds entries to the system palette, and calls the +screen driver SetPalette entry point to set the hardware palette.  There is a single +global variable, gr_firstuserpalentry, that contains the index of the next available +system palette entry.  Initially, this is set to 24.  Thus, systems with less +than 24 total palette entries will never have an available palette entry to remap.  +On systems that do, like 256 color systems, then images requiring more color entries keep +calling GdSetPalette until the system palette is full.  To reset marker, the function +GdResetPalette is called.  This allows upper level API's to distinguish between +different images and force the system palette to be rewritten.

+ +

        2.1.10  Image Drawing

+ +

Microwindows supports two styles of images, monochrome and palettized.  Monochrome +images are specified with an IMAGEBITS structure, which is an array of words with 1 bits +specifying the foreground color and 0 bits the background.  The IMAGEBITS bits are +short-word padded to the width of the bitmap.  The GdBitmap routine draws monochrome +bitmaps, similar to GdText, by drawing all the 1 bits in the foreground color, and the 0 +bits in the background color if the "use background" set by GdUseBackground is +TRUE.

+ +

Color bitmaps are specified using a 1, 4 or 8bpp image palette, and an array of indices +into this palette, all stuffed into an IMAGEHDR structure, and drawn via +GdDrawImage.  First, the system creates a conversion palette by calling +GdMakePaletteConversionTable, which converts the images' palette entries into system +indices.  At the same time, the system attempts to increase the system palette if +necessary by calling the GdSetPalette function described above.  At the end of this +operation, the image has a converted palette which necessarily corresponds to the system +palette.  In the case of truecolor hardware, the image's palette entries are +converted to hardware truecolor pixel values, and output directly.

+ +

After converting the image color entries the GdDrawImage determines the whether the +image is clipped, and outputs the image, pixel by pixel.  In the future, a blitting +routine could be used for faster image drawing.

+ +

        2.1.11  Blitting

+ +

Blitting functionality is required in the screen driver for offscreen drawing +capability, discussed earlier in the screen drivers section.  The engine function +GdBlit allows upper level APIs to implement copy operations from offscreen memory to the +display, or vice versa.  The blit format is driver specific, and generally only works +for memory images created by the screen driver during runtime.  The upper level APIs +implement this by allocating a new SCREENDRIVER structure, copying an existing +SCREENDRIVER structure into it, replacing the address field with a malloc()'d value, and +setting the PSF_MEMORY bit, which indicates to the display driver that this is now an +offscreen surface.  Any subsequent calls to the engine routines then draw onto this +surface.  When it is desired to copy the offscreen surface back to the physical +display, the GdBlit routine is called.  Currently, only SRCCOPY operations are +performed, but future plans will add blitting opcodes.

+ +

 

+ +

3. Microwindows API

+ +

    3.1        Message-passing +architecture

+ +

The fundamental communications mechanism in the Microwindows API is the message.  +A message consists of a well-known message number, and two parameters, known as wParam and +lParam.  Messages are stored in an application's message-queue, and retrieved via the +GetMessage function.  The application blocks while waiting for a message.  There +are messages that correspond to hardware events, like WM_CHAR for keyboard input or +WM_LBUTTONDOWN for mouse button down.  In addtiion, events signaling window creation +and destruction WM_CREATE and WM_DESTROY are sent.  In most cases, a message is +associated with a window, identified as an HWND.  After retrieving the message, the +application sends the message to the associated window's handling procedure using +DispatchMessage.  When a window class is created, it's associated message handling +procedure is specified, so the system knows where to send the message.

+ +

The message-passing architecture allows the core API to manage many system functions by +sending messages on all sorts of events, like window creation, painting needed, moving, +etc.  By default, the associated window handling function gets a "first +pass" at the message, and then calls the DefWindowProc function, which handles +default actions for all the messages.  In this way, all windows can behave the same +way when dragged, etc, unless specifically overridden by the user.  Major window +management policies can be redefined by merely re-implementing DefWindowProc, rather than +making changes throughout the system.

+ +

The following functions deal with messages directly:

+ +

    +SendMessage                +Send a message directly to a window
+    +PostMessage                 +Queue a message on the application's message queue for later dispatch
+    PostQuitMessage          +Queue a WM_QUIT message telling the application to terminate when read
+    +GetMessage                  +Block until a message is queued for this application
+    TranslateMessage          +Translate up/down keystrokes to WM_CHAR messages
+    +DispatchMessage           Send a +messages to it's associated window procedure

+ +

A Microwindows application's entry point is the function WinMain, rather than main.

+ +

    3.2        Window creation and +destruction

+ +

The basic unit of screen organization in Microwindows API is the window.  Windows +describe an area of the screen to draw onto, as well as an associate "window +procedure" for handling messages destined for this window.  Applications +programmers can create windows from pre-defined classes, like buttons, edit boxes, and the +like, or define their own window classes.  In both cases, the method of creating and +communicating with the windows remains exactly the same.  The following functions +deal with window registration, creation, and destruction:

+ +

    +RegisterClass                +Define a new window class name and associated window procedure
+    +UnRegisterClass            Undefine +a window class
+    CreateWindowEx         Create +an instance of a window of a certain class
+    +DestroyWindow            Destroy a +window instance

+ +

The WM_CREATE message is just after window creation, before returning from +CreateWindowEx.  The WM_DESTROY message is sent just before destroying a window with +DestroyWindow.

+ +

When a window is registered, extra bytes can be allocated to the window structure when +created.  The GetWindowLong, GetWindowWord, SetWindowLong and SetWindowWord +manipulate these bytes.  In addition, a fixed number of extra bytes per window class +can be allocated on registration and retrieved via the GetClassLong function.

+ +

    3.3        Window showing, +hiding and moving

+ +

The ShowWindow function allows windows to be made visible or hidden.  In addition, +this can be specified during the creation of the window, through CreateWindowEx.  +MoveWindow is called to change a window's position or size.  A WM_MOVE message is +sent if the window's position changes, and WM_SIZE is sent on size changes.

+ +

    3.4        Window painting

+ +

The Microwindows system determines when a window needs to be initially painted or +repainted as the result of other window movement, and a WM_PAINT message is sent to the +associated window procedure.  At this point, it's up the the application to use the +graphics primitives available to paint the window, described below.  Microwindows +keeps track of a windows' "update" region, and sends WM_PAINT whenever the +region is non-empty.  For speed reasons, the WM_PAINT message is only sent when there +are no other messages in the application's queue.  This allows the application to +repaint in one, rather than possibly many, steps.  To force a repaint rather than +waiting, the UpdateWindow function can be called.  The InvalidateRect function +specifies a rectangle to add to the update region, causing a subsequent WM_PAINT.

+ +

The window title is automatically painted and is set with the SetWindowText function, +and retrieved with the GetWindowText function.

+ +

        3.4.1    Client and screen +coordinates

+ +

Every window is drawn on the screen using the device global screen coordinate system +for absolute reference to any pixel on the screen.  The Microwindows API allows +applications programmers to be concerned with only the relative coordinates from the upper +left portion of their window, not including the title bar and 3d effects.  This +coordinate system is called "client coordinates."  As will be explained +below, the Microwindows programmer has the option of getting a device context in either +screen or client coordinates.  If device coordinates are specified, then the +coordinate system is device-based and includes the title area and 3d areas of the +window.  Otherwise, the drawable region is clipped to just that  area that is +reserved by the system for the application's drawing.  The GetClientRect and +GetWindowRect functions return client or screen coordinates for the passed window.  +ClientToScreen and ScreenToClient can be called to translate between window coordinate +systems.

+ +

        3.4.2    Device contexts

+ +

An applications programmer must obtain a "device context" before calling any +graphics drawing API functions.  As explained above, this specifies to the system +which window and what coordinate system are desired, so that these don't have to be passed +to every graphics function.  In addition, various other attributes like foreground +and background color are also set in a device context, so that these parameters don't have +to be specified for every graphics operation.  The device context selects the +appropriate clipping region based on the window specified and the coordinate system.  +When a device context is obtained, various graphics values are set to default values.

+ +

To obtain a client device context, call GetDC.  To obtain a screen device context, +required when drawing onto title bars and the like, call GetWindowDC.  In addition, +fancy clipping operations and child/sibling window clipping can be specified if GetDCEx is +called.  When finished drawing, the ReleaseDC function must be called to deallocate +the DC.

+ +

On receipt of the WM_PAINT message, two special calls, BeginPaint and EndPaint are +called, that serve as replacements to the GetDC/ReleaseDC functions.  These functions +essentially allocate a DC but also validate the update region so that no subsequent +WM_PAINT messages are generated.  BeginPaint also combines the update region and the +clipping region so that user output will only occur where previously invalidated.

+ +

        3.4.3    Graphics drawing +API

+ +

There are many graphics drawing API's in the Microwindows API.  Following is a +list, most of these match up to the engine GdXXX functions discussed in section 2.

+ +

    +SetTextColor                    +Set the foreground text color in a DC
+    +SetBkColor                      +Set the background color in a DC
+    +GetSysColor                    +Get the system color defined for the current look and feel scheme
+    +SetBkMode                     +Set the use background flag in a DC
+    +SetROP2                         +Set the drawing mode (XOR, SET, etc) for drawing
+    +SetPixel                            +Draw a pixel in the current fg color
+    +MoveToEx                       +Prepare to draw a line
+    +LineTo                              +Draw a line from the last location to this one in the current fg color
+    +Rectangle                          +Draw a rectangle in the current pen color
+    +FillRect                             +Fill a rectangle with the current brush color
+    +TextOut                            +Draw text in the current fg/bg color
+    +ExtTextOut                       +Draw text in the current fg/bg color
+    +DrawText                         +Draw text or compute text height and width sizes
+    +DrawDIB                          +Draw a color bitmap
+    +SelectObject                    +Select a pen, brush or font to use in a DC
+    +GetStockObject               +Get a predefined standard pen, brush or font
+    +CreatePen                        +Create a pen of a certain color
+    +CreateSolidBrush             +Create a brush of a certain color
+    CreateCompatibleBitmap  Create an offscreen area to draw onto
+    +DeleteObject                    +Delete a pen, brush or bitmap
+    CreateCompatibleDC        Create an +offscreen DC
+    +DeleteDC                         +Delete an offscreen DC
+    +BitBlit                                +Copy from one bitmap in a DC to another
+    GetSystemPaletteEntries    Get the currently in-use +system palette entries
+  

+ +

    3.5        Utility functions

+ +

A number of routines are provided for various purposes, described below.  In +addition, Microwindows currently exports some helper routines, named WndXXX, that are +useful but subject to change.  These are detailed following:

+ +

    +WndSetDesktopWallpaper                +Set the desktop background image
+    +WndSetCursor                                  +Set the cursor for a window
+    +WndRaiseWindow                             +Raise a window's z-order
+    +WndLowerWindow                           +Lower a window's z-order
+    +WndGetTopWindow                         +Return the topmost window's handle
+    +WndRegisterFdInput                          +Register to send a message when file descriptor has read data available
+    +WndUnregisterFdInput                       +Unregister file descriptor for read data messages

+ +

    +GetTickCount                                    +Return # milliseconds elapsed since startup
+    +Sleep                                                 +Delay processing for specified milliseconds

+ +

        3.5.1    Setting window +focus

+ +

The SetFocus routine is used to pass keyboard focus from one window to another.  +Keystrokes are always sent to the window with focus.  The WM_SETFOCUS and +WM_KILLFOCUS messages are sent to windows just receiving and losing focus.  The +GetActiveWindow routines returns the first non-child ancestor of the focus window, which +is the window that is currently highlighted.  The GetDesktopWindow routine returns +the window handle of the desktop window.

+ +

        3.5.2    Mouse capture

+ +

Normally, Microwindows sends WM_MOUSEMOVE messages to the window the mouse is currently +moving over.  If desired, the 7applications programmer can "capture" the +mouse and receive all mouse move messages by calling SetCapture.  ReleaseCapture +returns the processing to normal.  In addition, the GetCapture function will return +the window with capture, if any.

+ +

        3.5.3    Rectangle and +Region management

+ +

There are a number of functions that are used for rectangles and regions.  +Following is the group:

+ +

    +SetRect                        +Define a rectangle structure
+    +SetRectEmpty              +Define an empty rectangle
+    +CopyRect                    +Copy a rectangle
+    +IsRectEmpty                +Return TRUE if empty rectangle
+    +InflateRect                    +Enlarge a rectangle
+    +OffsetRect                    +Move a rectangle
+    +PtInRect                      +Determine if a point is in a rectangle
+  

+ +

A large number of region management routines are defined and declared in the winrgn.c +file.

+ +

 

+ +

4. Nano-X API

+ +

The Nano-X API was originally designed by David Bell, with his mini-x package for the +MINIX operating system.  Nano-X is now running on top of the core graphics engine +routines discussed in section 2.  Nano-X was designed for a client/server +environment, as no pointers to structures are passed to the API routines, instead a call +is made to the server to get an ID, which is passed to the API functions and is used to +reference the data on the server.  In addition, Nano-X is not message-oriented, +instead modeled after the X protocol which was designed for speed on systems where the +client and server machines were different.

+ +

    4.1        Client/Server model

+ +

In Nano-X, there are two linking mechanisms that can be used for applications +programs.  In the client/server model, the application program is linked with a +client library that forms a UNIX socket connection with the Nano-X server, a separate +process.  Each application then communicates all parameters over the UNIX +socket.  For speed and debugging, it is sometimes desirable to link the application +directly with the server.  In this case, a stub library is provided that just passes +the client routines parameters to the server function.

+ +

The Nano-X naming convention uses GrXXX to designate client side callable routines, +with a marshalling layer implemented in the files nanox/client.c, nanox/nxproto.c, and +nanox/srvnet.c.   The client/server network layer currently uses a fast approach to +marshalling the data from the Gr routine into a buffer, and sent all at once to the +receiving stubs in nanox/srvnet.c, before calling the server drawing routines in +nanox/srvfunc.c.  In the linked application scenario, the Nano-X client links +directly with the functions in nanox/srvfunc.c, and the nanox/client.c and nanox/srvnet.c +files are not required.

+ +

A Nano-X application must call GrOpen before calling any other Nano-X function, and +call GrClose before exiting.  These functions establish a connection with the server +when running the client/server model, and return an error status if the server can't be +found or isn't currently running.

+ +

The main loop in a Nano-X application is to create some windows, define the events you +want with GrSelectEvents, and then wait for an event with GrGetNextEvent.  If it is +desired to merely check for an event, but not wait if there isn't one, GrCheckNextEvent +can be used.  GrPeekEvent can be used to examine the next event without removing it +from the queue.

+ +

When running Nano-X programs in the client/server model, it's currently necessary to +run the server first in a shell script, then wait a second, then run the +application.  Some rewriting is needed to fire up the server when an application +requires it, I believe.

+ +

 4.2        Events

+ +

Nano-X applications specify which events they would like to see on a per-window basis +using GrSelectEvents.  Then, in the main loop, the application calls GrGetNextEvent +and waits for one of the event types selected for in any of the windows.  Typically, +a switch statement is used to determine what to do after receiving the event.  This +is similar to the Microwindows's API GetMessage/DispatchMessage loop, except that in +Microwindows API, DispatchMessage is used to send the event to the window's handling +procedure, typically located with the window object.  In Nano-X, all the event +handling code for each of the windows must be placed together in the main event loop, +there is no automatic dispatching.  Of course, widget sets serve to provide +object-orientation, but this is in addition to the Nano-X API.

+ +

Following are the event types that Nano-X programs can recieve:

+ +

    GR_EVENT_TYPE_NONE, ERROR, EXPOSURE, BUTTON_DOWN, BUTTON_UP, +MOUSE_ENTER, MOUSE_EXIT, MOUSE_MOTION, MOUSE_POSITION, KEY_UP, KEY_DOWN, FOCUS_IN, +FOCUS_OUT, FDINPUT

+ +

Note that Nano-X API provides mouse enter and exit events whereas Microwindows API does +not.  Also, the exposure events are calculated and sent immediately by the server, +and not combined and possibly delayed for better paint throughput as in the Microwindows +API.

+ +

 4.3        Window creation and destruction

+ +

Windows are created in Nano-X with the GrNewWindow function.  Windows can be +specified to be input-only, in which case the GrNewInputWindow function is used.  The +window border and color is specified in these calls, but will have to be rewritten when +fancier window dressings are required.  The return value from these functions is an +ID that can be used in later calls to get a graphics context or perform window +manipulation.

+ +

    4.4        Window showing, +hiding and moving

+ +

Windows are shown by calling the GrMapWindow function, and hidden using +GrUnmapWindow.  Mapping a window is required for all ancestors of a window in order +for it to be visible.  The GrRaiseWindow call is used to raise the Z order of a +window, while GrLowerWindow is used to lower the Z order.  GrMoveWindow is used to +change the position of a window, and GrResizeWindow is used to resize a window.

+ +

    4.5        Drawing to a window

+ +

Nano-X requires both a window ID and a graphics context ID in order to draw to a +window.  Nano-X sends expose events to the application when a window needs to be +redrawn.  Unlike the Microwindows API, Nano-X clients are typically required to +create their drawing graphics contexts early on and keep them for the duration of the +application.  Like Microwindows though, the graphics contexts record information like +the current background and foreground colors so they don't have to be specified in every +graphics API call.

+ +

        4.5.1    Graphics contexts

+ +

To allocate a graphics context for a window, call GrNewGC.  On termination, call +GrDestroyGC.  GrCopyGC can be used to copy on GC to another.  GrGetGCInfo is +used to retrieve the settings contained in a GC.  After creating a graphics context, +the server returns a graphics context ID.  This is then used as a parameter in all +the graphics drawing API functions.  In Nano-X programs, the current clipping region +and window coordinate system aren't stored with the GC, as they are in Microwindows' +DCs.  This is because, first, Nano-X doesn't support dual coordinate systems for +drawing to the "window dressing" area versus the "user" area of the +window (window and client coordinates in Microwindows).  User programs can't draw the +border area of the window, only a single color and width can be specified.  Although +resembling X, this will have to change, so that widget sets can specify the look and feel +of all aspects of the windows they maintain.  Since the clipping region isn't +maintained with the graphics context, but instead with the window data structure, Nano-X +applications must specify both a window ID and a graphics context ID when calling any +graphics API function.  Because of this, many Nano-X applications allocate all +graphics contexts in the beginning of the program, and hold them throughout execution, +since the graphics contexts hold only things like foreground color, etc, and no window +information.  This cannot be done with Microwindows API because the DC's contain +window clipping information and must be released before processing the next message.

+ +

        4.5.2    Graphics drawing +API

+ +

Following are the graphics drawing functions available with Nano-X.  Like +Microwindows API, these all match up eventually to the graphics engine GdXXX routines.

+ +

    +GrGetGCTextSize                    +Return text width and height information
+    +GrClearWindow                       +Clear a window to it's background color
+    +GrSetGCForeground                +Set the foreground color in a graphics context
+    +GrSetGCBackground               +Set the background color in a graphics context
+    GrSetGCUseBackground         +Set the "use background color" in a graphics context
+    +GrSetGCMode                        +Set the drawing mode
+    +GrSetGCFont                           +Set the font
+    +GrPoint                                     +Draw a point in the passed gc's foreground color
+    +GrLine                                      +Draw a line in the passed gc's foreground color
+    +GrRect                                     +Draw a rectangle in passed gc's foreground color
+    +GrFillRect                                 +Fill a rectangle with the passed gc's foreground color
+    +GrEllipse                                   +Draw a circle or ellipse with the passed gc's foreground color
+    +GrFillEllipse                               +Fill a circle or ellipse with the passed gc's foreground color
+    +GrPoly                                       +Draw a polygon using the passed gc's foreground color
+    +GrFillPoly                                  +Fill a polygon using the passed gc's foreground color
+    +GrText                                       +Draw a text string using the foreground and possibly background colors
+    +GrBitmap                                  +Draw an image using a passed monocrhome bitmap, use fb/bg colors
+    +GrArea                                     +Draw a rectangular area using the passed device-dependent pixels
+    +GrReadArea                             +Read the pixel values from the screen and return them
+    GrGetSystemPaletteEntries        Get +the currently in-use system palette entries
+    GrFindColor                             +Translate an RGB color value to a PIXELVAL pixel value
+

+ +

   4.6        Utility functions

+ +

Various functions serve as utility functions to manipulate windows and provide other +information.  These include the following:

+ +

    +GrSetBorderColor                    +Set the border color of a window.  Not suitable for 3d look and feel.
+    +GrSetCursor                             +Set the cursor bitmap for the window.
+    +GrMoveCursor                         +Move the cursor to absolute screen coordinates.
+    +GrSetFocus                              +Set the keyboard input focus window.
+    +GrRedrawScreen                      +Redraw the entire screen.
+    +GrGetScreenInfo                       +Return information about the size of the physical display.
+    +GrGetWindowInfo                    +Return information about the passed window.
+    +GrGetGCInfo                            +Return information about the passed graphics context.
+    +GrGetFontInfo                          +Return information about the passed font number.
+    +GrRegisterInput                        +Register a file descriptor to return an event when read data available
+    GrPrepareSelect +                       +Prepare the fd_set and maxfd variables for using Nano-X as a passive library
+    GrServiceSelect +                        +Callback the passed GetNextEvent routine when Nano-X has events requiring processing
+    GrMainLoop +                             +A convenience routine for a typical Nano-X application main loop

+ + Index: faq.html =================================================================== --- faq.html (nonexistent) +++ faq.html (revision 1765) @@ -0,0 +1,171 @@ + + + + + + + + + + + + +

  Microwindows Frequently Asked +Questions

+ +

1999/12/04 Microwindows FAQ - greg@censoft.com

+ +

What is Microwindows?

+ +

Microwindows is an Open Source project that brings some of the features of modern +graphical windowing systems to the programming community not wanting or requiring the +large disk and ram requirements of higher-end windowing systems like Microsoft Windows or +the X Window System.  Microwindows does not require any operating system or other +graphics system support, as it writes directly to the display hardware, although it runs +well on Linux framebuffer systems.  Microwindows is designed to be portable, and can +run in a wide variety of hardware and software environments.  One the of more +interesting targets is the emerging market of portable handheld and pocket PC's running +Linux, also known as LinuxCE.

+ +

What does Microwindows run on?

+ +

Microwindows currently runs on 32-bit Linux systems with kernel framebuffer support, or +through the popular SVGAlib library.  In addition, it has been ported to 16-bit Linux +ELKS, and real-mode MSDOS.  Microwindows screen drivers for 1, 2, 4, 8, 16 and 32 +bits-per-pixel have been written, as well as a VGA 16 color 4 planes driver.  +Microwindows has been ported to a number of Handheld and Pocket PC's, as well.  The +Microwindows graphics engine is capable of running on any system that supports readpixel, +writepixel, drawhorzline and drawvertline, and setpalette.  Blitting support is +optional, but if implemented allows enhanced functionality.  All bitmap, font, cursor +and color support is implemented on top of these routines.  Support for 8, 15, 16 and +32 bit truecolor systems as well as 1, 2, 4 and 8bpp palletized systems is implemented.
+
+Recently, an X11 driver was completed that allows Microwindows applications to be run on +top of the X Window desktop.  This driver emulates all of Microwindows' truecolor and +palette modes so that an application can be previewed using the target system's display +characteristics directly on the desktop display, regardless of the desktop display +characteristics.

+ +

What CPU's are supported?

+ +

Microwindows is extremely portable, and completely written in C, although some routines +have been recoded in assembly for speed.  It has been ported to the Intel 16 and 32 +bit cpu's, as well as MIPS R4000 (NEC Vr41xx) and ARM chips found on popular handheld and +pocket PC's.

+ +

How big is Microwindows?

+ +

On 16 bit systems, the entire system, including screen, mouse and keyboard drivers runs +in less than 64k.  On 32-bit systems, support includes proportional fonts and +applications are typically less than 100k.

+ +

What is Microwindows' architecture and what API's are supported?

+ +

Microwindows is essentially a layered design that allows different layers to be used or +rewritten to suite the needs of the implementation.  At the lowest level, screen, +mouse/touchpad and keyboard drivers provide access to the actual display and other +user-input hardware.  At the mid level, a portable graphics engine is implemented, +providing support for line draws, area fills, polygons, clipping and color models.  +At the upper level, various API's are implemented providing access to the graphics +applications programmer.  These APIs may or may not provide desktop and/or window +look and feel.  Currently, Microwindows supports the Win32 and Nano-X APIs.  +These APIs provide close compatibility with the Win32 and X Window systems, allowing +programs to be ported from other systems easily.

+ +

What's the difference between Microwindows and NanoGUI?

+ +

Microwindows' origin is with NanoGUI.  NanoGUI was created by Alex Holden by +taking David Bell's mini-X server and Alan Cox's modifications and adding client/server +networking.  Greg Haerr then took interest in the NanoGUI project and began making +extensive enhancements and modifications to NanoGUI.  Around version 0.5, Greg Haerr +added support for multiple API's, and began distributing Microwindows.  In +Microwindows 0.84, all previous NanoGUI changes were incorporated and since then +Microwindows has been the combined NanoGUI/Microwindows distribution.

+ +

What is Nano-X?

+ +

Nano-X is the X-like API that Microwindows supports.  It is based on David Bell's +mini-X server API, and includes X-like primitives for low-level window and graphics +operations.  Window management is not included, and the window look and feel must be +created through a widget set or directly by the applications programmer.  Currently, +there are a number of people working on widget sets for Nano-X.  There is some +discussion about converting the Nano-X API to be X Window System compatible.

+ +

What is the Microwindows API?

+ +

Microwindows supports an API based on the Win32 graphics device interface +module, and implements a large portion of it. The function calls try to be 100% +compatible, so that code compiled for other operating systems can usually be +compiled with no source code changes.  In addition, a portion of the Win32 +USER module is implemented, which contains routines for window dragging, title +bars,  message passing, and generating required window messages.  +Because of this, window manager support is built into the system, and a single +API for applications programs can be used that doesn't change based on the +widget set being used.
+
+Since the WinCE API is mostly a subset of the Win32 API for graphics-related +functions, the Microwindows API is also WinCE compatible, and can be used to +implement WinCE graphics functions on platforms Microwindows is running on.

+ +

What are Microwindows' graphics features?

+ +

Microwindows features full RGB color support, color mapping, optimized palette bitmap +drawing, truecolor and palletized displays, and a 3d look-and-feel. Overlapped and child +windows are supported, with complete window and client area clipping. Proportional and +fixed fonts are supported, along with utilities for converting fonts or bitmap files. +Optimized painting algorithms are used to allow maximum response while the user is moving +windows on the screen.  Offscreen drawing and bit-blit routines are implemented for +flicker-free drawing and animation. Polygon draws, fills and arbitrary region clipping are +also supported.

+ +

What license is Microwindows under?

+ +

The project is licensed under the MPL.  Alternatively, the software can be +licensed under the GPL, if desired.  This means that the standard Microwindows +distribution can be used for commercial purposes, and supports the needs of developers +working under non-disclosure or writing proprietary device drivers.  Modifications to +source code supplied in the standard distribution must stay open source.  Or the +entire project can be converted to GPL, with files added by a developer considered GPL +only.

+ +

Where is the most current source?

+ +

The FTP site ftp://microwindows.censoft.com/pub/microwindows +is the primary distribution point for all releases.  The home web site is at http://microwindows.censoft.com.  I can be +reached at greg@censoft.com.  I am working on +getting the development tree moved to CVS, stay tuned.

+ +

Are there screenshots and/or demos available?

+ +

There are demos for Linux, ELKS and MSDOS, as well as screenshots, available at:

+ +
+

ftp://microwindows.censoft.com/pub/microwindows/ScreenShots

+

ftp://microwindows.censoft.com/pub/microwindows/LinuxExamples    + ftp://microwindows.censoft.com/pub/microwindows/ElksExamples    + ftp://microwindows.censoft.com/pub/microwindows/DosExamples

+
+ +

Is there a mailing list?

+ +

The mailing list is nanogui@linuxhacker.org

+ +

To subscribe, send an empty email to:

+ +

    nanogui-subscribe@linuxhacker.org

+ +

To unsubscribe, send an empty email to:

+ +

    nanogui-unsubscribe@linuxhacker.org

+ +

What can I do to help?

+ +

We need help in all sorts of areas.  There are currently projects to port base +level widget sets and custom controls to Microwindows.  Fast screen drivers and +blitting routines are also on the list.  There are lots of folks interested in +getting the system to run on one of the many new Handheld or Pocket PC's.  Please +join the list and join the fun.

+ +

 

+ + Index: index.html =================================================================== --- index.html (nonexistent) +++ index.html (revision 1765) @@ -0,0 +1,201 @@ + + + +Greg Haerr's Microwindows and NanoGUI Page + + + + + + + + + + + + + + + + + +

Microwindows and NanoGUI Projects

+

Downloads
+ Microwindows
+ Screen Shots +
+ Linux Binaries +
+ ELKS Binaries +
+ MSDOS Binaries +

+

Docs
+ FAQ
+ Architecture

+

Links
+ NanoGUI
+ Linux CE
+ ELKS
+ Brad's Linux MIPS Pages
+ RTEMS Port

Welcome

+

Microwindows is an Open Source project aimed at bringing the features of modern + graphical windowing environments to smaller devices and platforms.  Microwindows + allows applications to be built and tested on the Linux desktop, as well as cross-compiled + for the target device.  Microwindows' genesis was with the NanoGUI project, and has + now been combined into a single distribution.  The Win32 API implementation is known + as Microwindows, and the Xlib-like API implementation is known as Nano-X. Please read the FAQ for more information.  An extensive Architecture document is also available.   + To get involved, please join the NanoGUI + mailing list.

+

News

+

Version 0.87pre2 release

+

December 14, 1999
+ The second prerelease for version 0.87 has just been released, and is + available for download at:
+ ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre2.tar.gz  + This release is primarily intended for inspection and testing of the + changes before the directory tree reorganization, planned next.
+ The major enhancements include:

+
    +
  • Portrait mode driver for framebuffer systems.  This is a big + win for handhelds and palmtops, many of which require portrait mode + for normal operation.  All graphics output, including mouse + movement, hotspots, and text output, are rotated and displayed in + portrait mode.  In addition, your Microwindows applications can + be viewed in portrait mode on the desktop.  Try moving the mouse + without holding your head sideways!
  • +
  • The RTEMS operating system port source has been integrated with the + main tree.
  • +
  • Fixes to allow Microwindows to be run on big-endian machines are now + included.
  • +
  • Various bug fixes including the Microwindows terminal emulator pty + fix for X11, and Nano-X GrMovewindow fixes for child windows.  + There are still some issues relating to Nano-X clipping during window + movement.
  • +
+

RTEMS Port

+

December 3, 1999
+ There's been alot of interest and development with Microwindows lately.  Rosimildo + daSilva has ported Microwindows 0.86 to the RTEMS operating system, available at http://members.xoom.com/rosimildo/rtems_gui.htm. +   RTEMS is a POSIX-threads compliant real time + multitasking operating system which runs on Intel, Motorola, Hitachi, Mips, and many other + CPUs.

+

Version 0.87pre1 release

+

December 2, 1999
+ I have prepared an interim release of Microwindows and Nano-X enhancements, which + completes many things folks have asked for, version 0.87pre1. This is available for + download at ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre1.tar.gz +
+ The major enhancements include:

    +
  • Support for running under X11. Microwindows and Nano-X can now run as a user-defined + (default 640x480) window under X Windows. The graphics output and look and feel are + identical to framebuffer, but will run on any X display server.
  • +
+
    +
  • Compile-time options allow configuration to emulate any of the Microwindows truecolor or + palette modes, in any pixel depth, including grayscale. This allows a Microwindows or + Nano-X application to be emulated exactly, regardless of the host's or target's + framebuffer characteristics. Thanks to Tony Rogvall for the X11 driver.
    +
  • +
  • The client/server network code has been completely rewritten for speed!!! + I studied the + X11 Xlib implementation and came up with a similar implementation. By queuing all client + data until an event or reply is required, Nano-X now runs at extremely high speed. + For benchmarking, use the world demo, which plots several thousand + points.  This demo now runs extremely quickly.  Unlike + the Xlib implementation, Nano-X still runs synchronously per client, meaning that once a + client request packet is sent, the server waits until the whole packet has arrived until + servicing another client. This keeps the server code immensely simpler, while still + running very quickly.  I urge interested folks to check out the implementation, in + mwin/src/nanox/nxproto.{ch}, and mwin/src/nanox/client.c.
    +
  • +
  • Routines were added to allow Nano-X to be used as a "passive library", meaning + that an application with it's own main loop can now call into Nano-X occasionally + (after a + select returns a file descriptor that Nano-X is interested in), and it will all work. This + was done for Morten. See mwin/src/nanox/client.c, functions GrPrepareSelect(), + GrServiceSelect(), GrMainLoop().
    +
  • +
  • Routines were added to get the system palette, and translate an RGB color to a PIXELVAL + palette index. This was for Richard and the Opera browser. See mwin/src/nanox/srvfunc.c, + functions GrGetSystemPalette, GrFindColor().
    +
  • +
  • A null mouse driver was added for systems without a mouse, by setting NOMOUSE=1 in + Makefile.
    +
    + This is released as 0.87pre1 because I still haven't finished the directory tree + reorganization, and adding Martin's cool X11 graphics makefile configuration tool. The + client/server code rewrite took alot more time than expected. I am also working on getting + all source on CVS.
  • +
+

NanoGUI combined with Microwindows

+

November 13, 1999
+ Alex Holden, the originator of the NanoGUI project, officially handed over his role to + Greg Haerr, so that the NanoGUI and Microwindows projects can officially be available as a + single distribution.  Alex continues to host the Microwindows/NanoGUI mailing list. +   Although the releases have been maintained for some time by Greg Haerr, the + official distribution site is now moved here.  A big thanks goes to Alex for thinking + up the NanoGUI idea and hosting the initial web site.

+

Opera Web Browser ported to Microwindows

+

November 11, 1999
+ The Opera Web Browser, a browser known for it's small + footprint and operation on different operating systems, including Windows, BeOS, Linux, + Solaris, MacOS and OS/2, has announced they have completed initial work porting Opera to + Microwindows.  This is a crticial milestone for Microwindows, since it shows that + larger, graphics intensive applications can run on top of the Microwindows graphics + engine.  The Opera port uses the Nano-X api and features jpeg and gif image support, + as well as transparent image drawing.  The codefile size is 670k.  The current + Microwindows footprint is less than 100k with no compiled-in images.

+

Version 0.86 release

+

October 28, 1999
+ Thanks to Brad LaRonde for helping me get this web page out.  I have posted an update + v0.86 to Microwindows/Nano-X at:

+
+

ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.86.tar.gz +

+
+

This version completes a major effort, that of implementing off-screen drawing, as well + as screen-to-screen blitting. The screen driver interface had to change to accommodate + this, and I had to rewrite all the screen drivers. In addition, the blitting routines were + written for 1, 2, 4, 8, 16 and 32bpp linear framebuffer devices, as well as the 16 color 4 + planes vga (this was a royal pain...) The blitting uses a clipping region traversal + algorithm so that blitting is always high speed, even when the destination window is + partly obscured.

+

This release also auto-detects most Linux framebuffer implementations, and should have + a compiled in driver for it.

+

The standard Microwindows demo is now a graphical terminal emulator, mterm. (No, it + doesn't run vi yet, and it doesn't repaint it's screen contents, but it will ;-) This demo + requires screen-to-screen blitting for scrolling. The 3d graphics demo now uses offscreen + blitting to enhance (read no flicker) the display. Check it out.

+

There is also some experimental full-blown region handling code included, which uses + X11's y-x banding region algorithms. (This stuff is truly for those with extra time and + brains). It is currently not compiled in, but can be included by replacing devclip.c with + devclip2.c. In the next release, arbitrary multi-rectangle clipping regions will be + available. I also plan on implementing separate clip regions from update regions for + windows, with the system computing the update region as a subset of the clip region. + Anyway, this sophisticated region handling is required for smart window painting as well + as higher end graphics primitives. Eventually, this will also allow separate source and + destination clipping for bitblit operations. Only destination clipping is working now.

+

The next release will have a reorganized directory structure, allowing separate + development of Nano-X, widgets, core engine, and Microwindows. I plan on moving the whole + thing to a CVS soon. BTW, Microwindows now supports three processor families, according to + reports emailed me. We've got i386, 8086, MIPS Vr41xx, and ARM families running ;-)

+

Following is a summary of the ChangeLog:
+ Version 0.86 - 28th October 1999 - greg@censoft.com

    +
  • merged framebuffer, elks and msdos vga 16 color 4 planes drivers
  • +
  • wrote vga bitbit routines (a herculean effort)
  • +
  • optimized bitblit by traversing window clip region
  • +
  • added experimental multi-rectangle dynamically allocated regions
  • +
  • wrote scrolling terminal emulator demo for microwindows
  • +
  • added WM_FDINPUT msg, WndRegisterFdInput call for terminal emulator
  • +
  • changed SCREENINFO struct, removed black/white, added bpp, planes
  • +
  • added offscreen (memory DC) drawing to microwindows
  • +
  • added BitBlt, CreateCompatibleBitmap, CreateCompatibleDC, DeleteDC
  • +
  • retired BOGL library, must use new interface for blitting
  • +
  • converted framebuffer, svgalib, elks and msdos screen drivers (we need blit routines for + herc and svgalib still)
  • +
  • major screen driver interface change, old drivers not compatible
  • +
+

Page maintained by Greg Haerr <greg@censoft.com>

+ +

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.