1 /*
2  * grX11Int.h --
3  *
4  * Internal definitions for grX11su[1..5].c.
5  *
6  * NOTE:  In order for the these defs to work correctly, this file
7  * (grXInt.h) must be included after all the Magic .h files and before
8  * the X .h files.
9  */
10 
11 #include "utils/magic.h"
12 
13 /* Constants
14  */
15 #define M_WIDTH		1023
16 #define M_HEIGHT	750
17 
18 #define MAX_CURSORS	32	/* Maximum number of programmable cursors */
19 
20 #define GR_DEFAULT_FONT "9x15"
21 #define X11_BATCH_SIZE	10000
22 
23 #define grMagicToX(y) ( grCurrent.mw->w_allArea.r_ytop - (y))
24 #define grXToMagic(y) ( grCurrent.mw->w_allArea.r_ytop - (y))
25 
26 #ifdef	OLD_R2_FONTS
27 /*
28  * Some machines still run release 2 of X.
29  */
30 # define       X_FONT_SMALL    "vg-13"
31 # define       X_FONT_MEDIUM   "fg-18"
32 # define       X_FONT_LARGE    "vrb-25"
33 # define       X_FONT_XLARGE   "vrb-37"
34 #else
35 /*
36  * Our default fonts for X11.  (Release 3 fonts.)
37  */
38 
39 # define	X_FONT_SMALL	"-*-helvetica-medium-r-normal--10-*-75-75-p-*-iso8859-*"
40 # define	X_FONT_MEDIUM	"-*-helvetica-medium-r-normal--14-*-75-75-p-*-iso8859-*"
41 # define	X_FONT_LARGE	"-*-helvetica-medium-r-normal--18-*-75-75-p-*-iso8859-*"
42 # define	X_FONT_XLARGE 	"-*-helvetica-medium-r-normal--24-*-75-75-p-*-iso8859-*"
43 #endif
44 
45 /* Macro for conversion between X and Magic coordinates
46  */
47 
48 /* Current settings for X function parameters */
49 typedef struct {
50     XFontStruct 	*font;
51     Cursor		cursor;
52     int			fontSize;
53     int			maskmod;
54     Window 		window;
55     MagWindow		*mw;
56 } GR_CURRENT;
57 
58 /* X11 Display settings determined by the visual */
59 typedef struct {
60     unsigned long basepixel;
61     unsigned long planes[32];
62     int		depth;
63     int		planeCount;
64     int		colorCount;
65     int		realColors;
66     int		red_mask;
67     int		green_mask;
68     int		blue_mask;
69 } GR_DISPLAY;
70 
71 extern Display *grXdpy;
72 extern Colormap grXcmap;
73 extern int	grXscrn;
74 extern unsigned int grClass;
75 extern unsigned long grPixels[];
76 extern unsigned long grPlanes[];
77 extern GR_CURRENT grCurrent;
78 extern GR_DISPLAY grDisplay;
79 extern GC grGCFill, grGCText, grGCDraw, grGCCopy, grGCGlyph;
80 
81 extern bool grx11GetCursorRootPos();
82 extern bool grx11DrawGrid();
83 extern void GrX11EnableTablet();
84 extern void GrX11DisableTablet();
85 extern void GrX11SetCMap();
86 extern void grx11PutText();
87 extern void grx11FontText();
88 extern void grx11DefineCursor();
89 extern void GrX11SetCursor();
90 extern void GrX11TextSize();
91 extern void GrX11DrawGlyph();
92 extern void GrX11BitBlt();
93 extern void NullBitBlt();
94 extern int  GrX11ReadPixel();
95 extern void grx11DrawLine();
96 extern void grx11SetLineStyle();
97 extern void grx11SetCharSize();
98 extern void grx11SetWMandC();
99 extern void grx11FillRect();
100 extern void grx11RectConvert();
101 extern void grx11FillPolygon();
102 
103 extern void grx11FreeBackingStore();
104 extern void grx11CreateBackingStore();
105 extern bool grx11GetBackingStore();
106 extern bool grx11ScrollBackingStore();
107 extern void grx11PutBackingStore();
108 
109 extern void grx11DrawLines();
110 extern XSegment grx11Lines[];
111 extern int grx11NbLines;
112 extern void grx11FillRects();
113 extern XRectangle grx11Rects[];
114 extern int grx11NbRects;
115 
116 #define GR_X_FLUSH_LINES() {if (grx11NbLines>0) {grx11DrawLines(grx11Lines, grx11NbLines); grx11NbLines=0;}}
117 #define GR_X_FLUSH_RECTS() {if (grx11NbRects>0) {grx11FillRects(grx11Rects, grx11NbRects); grx11NbRects=0;}}
118 #define	GR_X_FLUSH_BATCH() {GR_X_FLUSH_LINES(); GR_X_FLUSH_RECTS();}
119