f0ab104f070bc7f569404826fea1828ed985638cvboxsync/***********************************************************
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCopyright 1987, 1998 The Open Group
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncthe above copyright notice appear in all copies and that both that
f0ab104f070bc7f569404826fea1828ed985638cvboxsynccopyright notice and this permission notice appear in supporting
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncThe above copyright notice and this permission notice shall be included in
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncall copies or substantial portions of the Software.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncin this Software without prior written authorization from The Open Group.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync All Rights Reserved
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncPermission to use, copy, modify, and distribute this software and its
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation for any purpose and without fee is hereby granted,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncprovided that the above copyright notice appear in all copies and that
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncboth that copyright notice and this permission notice appear in
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncsupporting documentation, and that the name of Digital not be
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncused in advertising or publicity pertaining to distribution of the
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncsoftware without specific, written prior permission.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncSOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync******************************************************************/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifndef GC_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GC_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include <X11/X.h> /* for GContext, Mask */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include <X11/Xdefs.h> /* for Bool */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include <X11/Xproto.h>
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "screenint.h" /* for ScreenPtr */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "pixmap.h" /* for DrawablePtr */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* clientClipType field in GC */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_NONE 0
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_PIXMAP 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_REGION 2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_UNSORTED 6
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_YSORTED 10
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_YXSORTED 14
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define CT_YXBANDED 18
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCQREASON_VALIDATE 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCQREASON_CHANGE 2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCQREASON_COPY_SRC 3
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCQREASON_COPY_DST 4
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCQREASON_DESTROY 5
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GC_CHANGE_SERIAL_BIT (((unsigned long)1)<<31)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GC_CALL_VALIDATE_BIT (1L<<30)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define GCExtensionInterest (1L<<29)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define DRAWABLE_SERIAL_BITS (~(GC_CHANGE_SERIAL_BIT))
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define MAX_SERIAL_NUM (1L<<28)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define NEXT_SERIAL_NUMBER ((++globalSerialNumber) > MAX_SERIAL_NUM ? \
f0ab104f070bc7f569404826fea1828ed985638cvboxsync (globalSerialNumber = 1): globalSerialNumber)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _GCInterest *GCInterestPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _GC *GCPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _GCOps *GCOpsPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void ValidateGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DrawablePtr /*pDraw*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef union {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 val;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer ptr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} ChangeGCVal, *ChangeGCValPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern int ChangeGCXIDs(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr /*client*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync BITS32 /*mask*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 * /*pval*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int ChangeGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr /*client*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync BITS32 /*mask*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ChangeGCValPtr /*pCGCV*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT GCPtr CreateGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DrawablePtr /*pDrawable*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync BITS32 /*mask*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XID* /*pval*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int* /*pStatus*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XID /*gcid*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr /*client*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int CopyGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr/*pgcSrc*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr/*pgcDst*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync BITS32 /*mask*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int FreeGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer /*pGC*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XID /*gid*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void FreeGCperDepth(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*screenNum*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool CreateGCperDepth(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*screenNum*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool CreateDefaultStipple(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*screenNum*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void FreeDefaultStipple(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*screenNum*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int SetDashes(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned /*offset*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned /*ndash*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned char* /*pdash*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int VerifyRectOrder(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*nrects*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xRectangle* /*prects*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*ordering*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT int SetClipRects(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*xOrigin*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*yOrigin*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*nrects*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xRectangle* /*prects*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int /*ordering*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT GCPtr GetScratchGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned /*depth*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScreenPtr /*pScreen*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void FreeScratchGC(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync GCPtr /*pGC*/);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif /* GC_H */