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
[] = {4, 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
.line_width
= 3;
109 gc_values
.line_style
= LineOnOffDash
;
110 gc_values
.cap_style
= CapRound
;
111 gc_values
.join_style
= JoinRound
;
112 line_xor_gc
= XCreateGC (dpy
, window
,
113 GCForeground
| GCBackground
| GCLineStyle
114 | GCJoinStyle
| GCCapStyle
| GCLineWidth
,
116 XSetDashes (dpy
, line_xor_gc
, 0, dash_list
, dashes
);
118 line_xor_inv_gc
= XCreateGC (dpy
, window
,
119 GCForeground
| GCBackground
| GCLineWidth
,
122 depth
= DefaultDepthOfScreen (ScreenOfDisplay (dpy
, DefaultScreen (dpy
)));
123 pix
= XCreateBitmapFromData (dpy
, window
, page_glyf_bits
,
124 page_glyf_width
, page_glyf_height
);
126 XMapWindow (dpy
, window
);
131 XNextEvent (dpy
, &event
);
135 switch (event
.xbutton
.button
)
138 XDrawLine (dpy
, window
, line_xor_gc
, 25, 75, 300, 75);
142 XDrawLine (dpy
, window
, line_xor_inv_gc
, 25, 25, 300, 25);
146 XDrawLine (dpy
, window
, line_xor_gc
, 25, 25, 25, 125);
155 XComposeStatus status
;
158 n
= XLookupString (&event
, buf
, 20, &keysym
,
159 (XComposeStatus
*) &status
);
161 if (n
== 1 && buf
[0] == 'q')
167 XCopyPlane (dpy
, pix
, window
, fill_gc
, 0, 0,
168 page_glyf_width
, page_glyf_height
, 100, 100, 1L);
169 XFillRectangle (dpy
, window
, fill_gc
, 50, 50, 50, 50);
173 XClearWindow (dpy
, window
);