4 #include <X11/Xresource.h>
18 static Colormap screen_colormap
;
28 screen_colormap
= DefaultColormap (dpy
, DefaultScreen (dpy
));
30 exists
= XParseColor (dpy
, screen_colormap
, color
, &color_def
)
31 && XAllocColor (dpy
, screen_colormap
, &color_def
);
33 return color_def
.pixel
;
35 fprintf (stderr
, "Can't get color; using black.");
36 return BlackPixel (dpy
, DefaultScreen (dpy
));
39 static char *visual_strings
[] =
57 XVisualInfo
*vinfo
, visual_template
;
62 GC fill_gc
, pix_gc
, line_xor_gc
, line_xor_inv_gc
;
64 int x
, y
, width
, height
, geometry
, gravity
;
66 char default_geo
[] = "80x40+0+0";
69 char *string
= "Kill the head and the body will die.";
70 char dash_list
[] = {6, 4, 6, 4};
74 dpy_string
= "localhost:0.0";
82 printf ("Geometry: %s\t(default: %s)\n", argv
[2], default_geo
);
84 XWMGeometry (dpy
, DefaultScreen (dpy
), geo
, default_geo
,
85 3, &hints
, &x
, &y
, &width
, &height
, &gravity
);
88 dpy
= XOpenDisplay (dpy_string
);
91 printf ("Can' open display %s\n", dpy_string
);
95 window
= XCreateSimpleWindow (dpy
, DefaultRootWindow (dpy
),
96 300, 300, 300, 300, 1,
97 BlackPixel (dpy
, DefaultScreen (dpy
)),
98 WhitePixel (dpy
, DefaultScreen (dpy
)));
99 XSelectInput (dpy
, window
, ButtonPressMask
| KeyPressMask
100 | EnterWindowMask
| LeaveWindowMask
);
102 gc_values
.foreground
= obtain_color ("blue");
103 gc_values
.background
= WhitePixel (dpy
, DefaultScreen (dpy
));
104 fill_gc
= XCreateGC (dpy
, window
, GCForeground
| GCBackground
,
107 gc_values
.foreground
= obtain_color ("red");
108 gc_values
.function
= GXor
;
109 gc_values
.line_width
= 3;
110 gc_values
.line_style
= LineOnOffDash
;
111 gc_values
.cap_style
= CapRound
;
112 gc_values
.join_style
= JoinRound
;
113 line_xor_gc
= XCreateGC (dpy
, window
,
114 GCForeground
| GCBackground
| GCLineStyle
115 | GCJoinStyle
| GCCapStyle
| GCLineWidth
118 XSetDashes (dpy
, line_xor_gc
, 0, dash_list
, dashes
);
120 gc_values
.background
= WhitePixel (dpy
, DefaultScreen (dpy
));
121 gc_values
.foreground
= obtain_color ("blue");
122 line_xor_inv_gc
= XCreateGC (dpy
, window
,
123 GCForeground
| GCBackground
124 | GCLineWidth
| GCFunction
,
127 depth
= DefaultDepthOfScreen (ScreenOfDisplay (dpy
, DefaultScreen (dpy
)));
128 pix
= XCreateBitmapFromData (dpy
, window
, page_glyf_bits
,
129 page_glyf_width
, page_glyf_height
);
131 XMapWindow (dpy
, window
);
136 XNextEvent (dpy
, &event
);
141 if (event
.xbutton
.state
&& ShiftMask
)
143 switch (event
.xbutton
.button
)
146 XDrawLine (dpy
, window
, line_xor_gc
, 25, 75, 125, 75);
148 XDrawLine (dpy
, window
, line_xor_gc
, 25, 75, 125, 75);
152 XDrawLine (dpy
, window
, line_xor_gc
, 25, 75, 125, 75);
156 XDrawLine (dpy
, window
, line_xor_gc
, 25, 75, 125, 75);
165 XComposeStatus status
;
168 n
= XLookupString (&event
, buf
, 20, &keysym
,
169 (XComposeStatus
*) &status
);
171 if (n
== 1 && buf
[0] == 'q')
177 XCopyPlane (dpy
, pix
, window
, fill_gc
, 0, 0,
178 page_glyf_width
, page_glyf_height
, 100, 100, 1L);
179 XFillRectangle (dpy
, window
, fill_gc
, 50, 50, 50, 50);
183 XClearWindow (dpy
, window
);