1 /*
2    gc.c
3 
4    Mike Hufnagel & Bill Kendrick
5    Last modified: 11/18/95
6 */
7 
8 #include <X11/Xlib.h>
9 #include "gc.h"
10 
CreateGC(Display * display,Drawable drawable,unsigned long forecolor,unsigned long backcolor)11 GC CreateGC(Display *display, Drawable drawable, unsigned long forecolor,
12             unsigned long backcolor)
13 {
14   XGCValues xgcvalues;
15   GC gc;
16 
17   xgcvalues.foreground = forecolor;
18   xgcvalues.background = backcolor;
19   gc = XCreateGC(display,drawable,(GCForeground | GCBackground),
20 		 &xgcvalues);
21 
22   return(gc);
23 }
24 
CreateClearGC(Display * display,Drawable drawable)25 GC CreateClearGC(Display *display, Drawable drawable)
26 {
27   XGCValues xgcvalues;
28   GC gc;
29 
30   xgcvalues.function = GXclear;
31   xgcvalues.fill_style = FillSolid;
32   gc = XCreateGC(display, drawable, (GCFunction), &xgcvalues);
33 
34   return(gc);
35 }
36 
CreateXorGC(Display * display,Drawable drawable,unsigned long forecolor,unsigned long backcolor)37 GC CreateXorGC(Display *display, Drawable drawable, unsigned long forecolor,
38 	       unsigned long backcolor)
39 {
40   XGCValues xgcvalues;
41   GC gc;
42 
43   xgcvalues.foreground = forecolor ^ backcolor;
44   xgcvalues.background = 0;
45   xgcvalues.function = GXxor;
46 
47   gc = XCreateGC(display,drawable,(GCForeground | GCBackground | GCFunction),
48 		 &xgcvalues);
49 
50   return (gc);
51 }
52 
CreateAndGC(Display * display,Drawable drawable,unsigned long forecolor,unsigned long backcolor)53 GC CreateAndGC(Display *display, Drawable drawable, unsigned long forecolor,
54 	       unsigned long backcolor)
55 {
56   XGCValues xgcvalues;
57   GC gc;
58 
59   xgcvalues.foreground = forecolor;
60   xgcvalues.background = backcolor;
61   xgcvalues.function = GXand;
62 
63   gc = XCreateGC(display,drawable,(GCForeground | GCBackground | GCFunction),
64 		 &xgcvalues);
65 
66   return (gc);
67 }
68 
69 
CreateAndInvertedGC(Display * display,Drawable drawable,unsigned long forecolor,unsigned long backcolor)70 GC CreateAndInvertedGC(Display *display, Drawable drawable,
71 		       unsigned long forecolor, unsigned long backcolor)
72 {
73   XGCValues xgcvalues;
74   GC gc;
75 
76   xgcvalues.foreground = forecolor;
77   xgcvalues.background = backcolor;
78   xgcvalues.function = GXandInverted;
79 
80   gc = XCreateGC(display,drawable,(GCForeground | GCBackground | GCFunction),
81 		 &xgcvalues);
82 
83   return (gc);
84 }
85 
CreateOrGC(Display * display,Drawable drawable,unsigned long forecolor,unsigned long backcolor)86 GC CreateOrGC(Display *display, Drawable drawable, unsigned long forecolor,
87 	       unsigned long backcolor)
88 {
89   XGCValues xgcvalues;
90   GC gc;
91 
92   xgcvalues.foreground = forecolor;
93   xgcvalues.background = backcolor;
94   xgcvalues.function = GXor;
95 
96   gc = XCreateGC(display,drawable,(GCForeground | GCBackground | GCFunction),
97 		 &xgcvalues);
98 
99   return (gc);
100 }
101