blob: a07c7f4893633a42fd4720a456d8383a1688ddb1 [file] [log] [blame]
jtgafb833d1999-08-19 00:55:39 +00001
2/**************************************************************************
3
4Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
5All Rights Reserved.
6
7Permission is hereby granted, free of charge, to any person obtaining a
8copy of this software and associated documentation files (the
9"Software"), to deal in the Software without restriction, including
10without limitation the rights to use, copy, modify, merge, publish,
11distribute, sub license, and/or sell copies of the Software, and to
12permit persons to whom the Software is furnished to do so, subject to
13the following conditions:
14
15The above copyright notice and this permission notice (including the
16next paragraph) shall be included in all copies or substantial portions
17of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
23ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27**************************************************************************/
28
29/*
30 * Authors:
31 * Kevin E. Martin <kevin@precisioninsight.com>
32 *
Brian Pauld4a736d2000-04-05 22:09:10 +000033 * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.5 2000/04/05 22:09:10 brianp Exp $
jtgafb833d1999-08-19 00:55:39 +000034 */
35
36#ifndef _XMESA_XF86_H_
37#define _XMESA_XF86_H_
38
39#include "scrnintstr.h"
40#include "pixmapstr.h"
41
42typedef struct _XMesaImageRec XMesaImage;
43
44typedef ScreenRec XMesaDisplay;
45typedef PixmapPtr XMesaPixmap;
46typedef ColormapPtr XMesaColormap;
47typedef DrawablePtr XMesaDrawable;
48typedef WindowPtr XMesaWindow;
49typedef GCPtr XMesaGC;
50typedef VisualPtr XMesaVisualInfo;
51typedef DDXPointRec XMesaPoint;
52typedef xColorItem XMesaColor;
53
54#define XMesaSetGeneric(__d,__gc,__val,__mask) \
Brian Paulc902f7d2000-01-17 23:22:57 +000055do { \
jtgafb833d1999-08-19 00:55:39 +000056 CARD32 __v[1]; \
57 (void) __d; \
58 __v[0] = __val; \
59 dixChangeGC(NullClient, __gc, __mask, __v, NULL); \
Brian Paulc902f7d2000-01-17 23:22:57 +000060} while (0)
jtgafb833d1999-08-19 00:55:39 +000061
62#define XMesaSetGenericPtr(__d,__gc,__pval,__mask) \
Brian Paulc902f7d2000-01-17 23:22:57 +000063do { \
jtgafb833d1999-08-19 00:55:39 +000064 ChangeGCVal __v[1]; \
65 (void) __d; \
66 __v[0].ptr = __pval; \
67 dixChangeGC(NullClient, __gc, __mask, NULL, __v); \
Brian Paulc902f7d2000-01-17 23:22:57 +000068} while (0)
jtgafb833d1999-08-19 00:55:39 +000069
70#define XMesaSetDashes(__d,__gc,__do,__dl,__n) \
Brian Paulc902f7d2000-01-17 23:22:57 +000071do { \
jtgafb833d1999-08-19 00:55:39 +000072 (void) __d; \
73 SetDashes(__gc, __do, __n, (unsigned char *)__dl); \
Brian Paulc902f7d2000-01-17 23:22:57 +000074} while (0)
jtgafb833d1999-08-19 00:55:39 +000075
76#define XMesaSetLineAttributes(__d,__gc,__lw,__ls,__cs,__js) \
Brian Paulc902f7d2000-01-17 23:22:57 +000077do { \
jtgafb833d1999-08-19 00:55:39 +000078 CARD32 __v[4]; \
79 (void) __d; \
80 __v[0] = __lw; \
81 __v[1] = __ls; \
82 __v[2] = __cs; \
83 __v[3] = __js; \
84 dixChangeGC(NullClient, __gc, \
85 GCLineWidth|GCLineStyle|GCCapStyle|GCJoinStyle, \
86 __v, NULL); \
Brian Paulc902f7d2000-01-17 23:22:57 +000087} while (0)
jtgafb833d1999-08-19 00:55:39 +000088
89#define XMesaSetForeground(d,gc,v) XMesaSetGeneric(d,gc,v,GCForeground)
90#define XMesaSetBackground(d,gc,v) XMesaSetGeneric(d,gc,v,GCBackground)
91#define XMesaSetPlaneMask(d,gc,v) XMesaSetGeneric(d,gc,v,GCPlaneMask)
92#define XMesaSetFunction(d,gc,v) XMesaSetGeneric(d,gc,v,GCFunction)
93#define XMesaSetFillStyle(d,gc,v) XMesaSetGeneric(d,gc,v,GCFillStyle)
94
95#define XMesaSetTile(d,gc,v) XMesaSetGenericPtr(d,gc,v,GCTile)
96#define XMesaSetStipple(d,gc,v) XMesaSetGenericPtr(d,gc,v,GCStipple)
97
98#define XMesaDrawPoint(__d,__b,__gc,__x,__y) \
Brian Paulc902f7d2000-01-17 23:22:57 +000099do { \
jtgafb833d1999-08-19 00:55:39 +0000100 XMesaPoint __p[1]; \
101 (void) __d; \
102 __p[0].x = __x; \
103 __p[0].y = __y; \
104 ValidateGC(__b, __gc); \
105 (*gc->ops->PolyPoint)(__b, __gc, CoordModeOrigin, 1, __p); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000106} while (0)
jtgafb833d1999-08-19 00:55:39 +0000107
108#define XMesaDrawPoints(__d,__b,__gc,__p,__n,__m) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000109do { \
jtgafb833d1999-08-19 00:55:39 +0000110 (void) __d; \
111 ValidateGC(__b, __gc); \
112 (*gc->ops->PolyPoint)(__b, __gc, __m, __n, __p); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000113} while (0)
jtgafb833d1999-08-19 00:55:39 +0000114
115#define XMesaDrawLine(__d,__b,__gc,__x0,__y0,__x1,__y1) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000116do { \
jtgafb833d1999-08-19 00:55:39 +0000117 XMesaPoint __p[2]; \
118 (void) __d; \
119 ValidateGC(__b, __gc); \
120 __p[0].x = __x0; \
121 __p[0].y = __y0; \
122 __p[1].x = __x1; \
123 __p[1].y = __y1; \
124 (*__gc->ops->Polylines)(__b, __gc, CoordModeOrigin, 2, __p); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000125} while (0)
jtgafb833d1999-08-19 00:55:39 +0000126
127#define XMesaFillRectangle(__d,__b,__gc,__x,__y,__w,__h) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000128do { \
jtgafb833d1999-08-19 00:55:39 +0000129 xRectangle __r[1]; \
130 (void) __d; \
Brian Pauld4a736d2000-04-05 22:09:10 +0000131 ValidateGC((DrawablePtr)__b, __gc); \
jtgafb833d1999-08-19 00:55:39 +0000132 __r[0].x = __x; \
133 __r[0].y = __y; \
134 __r[0].width = __w; \
135 __r[0].height = __h; \
Brian Pauld4a736d2000-04-05 22:09:10 +0000136 (*__gc->ops->PolyFillRect)((DrawablePtr)__b, __gc, 1, __r); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000137} while (0)
jtgafb833d1999-08-19 00:55:39 +0000138
139#define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000140do { \
jtgafb833d1999-08-19 00:55:39 +0000141 /* Assumes: Images are always in ZPixmap format */ \
142 (void) __d; \
143 if (__sx || __sy) /* The non-trivial case */ \
144 XMesaPutImageHelper(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h); \
145 ValidateGC(__b, __gc); \
146 (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \
147 __x, __y, __w, __h, 0, ZPixmap, \
148 ((XMesaImage *)(__i))->data); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000149} while (0)
jtgafb833d1999-08-19 00:55:39 +0000150
151#define XMesaCopyArea(__d,__sb,__db,__gc,__sx,__sy,__w,__h,__x,__y) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000152do { \
jtgafb833d1999-08-19 00:55:39 +0000153 (void) __d; \
154 ValidateGC(__db, __gc); \
155 (*__gc->ops->CopyArea)((DrawablePtr)__sb, __db, __gc, \
156 __sx, __sy, __w, __h, __x, __y); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000157} while (0)
jtgafb833d1999-08-19 00:55:39 +0000158
159#define XMesaFillPolygon(__d,__b,__gc,__p,__n,__s,__m) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000160do { \
jtgafb833d1999-08-19 00:55:39 +0000161 (void) __d; \
162 ValidateGC(__b, __gc); \
163 (*__gc->ops->FillPolygon)(__b, __gc, __s, __m, __n, __p); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000164} while (0)
jtgafb833d1999-08-19 00:55:39 +0000165
166/* CreatePixmap returns a PixmapPtr; so, it cannot be inside braces */
167#define XMesaCreatePixmap(__d,__b,__w,__h,__depth) \
168 (*__d->CreatePixmap)(__d, __w, __h, __depth)
169#define XMesaFreePixmap(__d,__b) \
170 (*__d->DestroyPixmap)(__b)
171
172#define XMesaFreeGC(__d,__gc) \
Brian Paulc902f7d2000-01-17 23:22:57 +0000173do { \
jtgafb833d1999-08-19 00:55:39 +0000174 (void) __d; \
175 FreeScratchGC(__gc); \
Brian Paulc902f7d2000-01-17 23:22:57 +0000176} while (0)
jtgafb833d1999-08-19 00:55:39 +0000177
178#define GET_COLORMAP_SIZE(__v) __v->visinfo->ColormapEntries
179#define GET_REDMASK(__v) __v->visinfo->redMask
180#define GET_GREENMASK(__v) __v->visinfo->greenMask
181#define GET_BLUEMASK(__v) __v->visinfo->blueMask
jtgafb833d1999-08-19 00:55:39 +0000182#define GET_VISUAL_CLASS(__v) __v->visinfo->class
183#define GET_VISUAL_DEPTH(__v) __v->visinfo->nplanes
184#define GET_BLACK_PIXEL(__v) __v->display->blackPixel
185#define CHECK_BYTE_ORDER(__v) GL_TRUE
186#define CHECK_FOR_HPCR(__v) GL_FALSE
187
188#endif