annotate pkg-src/tree-x/dissolve.c @ 163:0132846995bd r20-3b8

Import from CVS: tag r20-3b8
author cvs
date Mon, 13 Aug 2007 09:43:35 +0200
parents
children 85ec50267440
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
163
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
1 /* ----------------------------------------------------------------------------
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
2 * Animated display of collapse and expansion of nodes in a tree.
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
3 * ----------------------------------------------------------------------------
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
4 */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
5
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
6 #include <X11/Xlib.h>
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
7
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
8 #include "dissolve.h"
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
9
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
10 static Pixmap DissolvePixmaps[NUM_DISSOLVE_STEPS];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
11 static GC DissolveInGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
12 static GC DissolveOutGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
13 static GC DissolveInLineGC[NUM_LINE_STEPS];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
14 static GC DissolveOutLineGC[NUM_LINE_STEPS];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
15
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
16 static unsigned char first_dash[] = {1, 3};
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
17 static unsigned char second_dash[] = {1, 1};
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
18
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
19 InitializeDissolveEffect(dpy, drawable, fg_pixel, bg_pixel)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
20 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
21 Drawable drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
22 int fg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
23 int bg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
24 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
25 unsigned long gcvaluemask;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
26 XGCValues gcvalues;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
27 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
28
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
29 /* make DissolveOutGC */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
30 gcvalues.background = bg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
31 gcvalues.foreground = bg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
32 gcvalues.function = GXcopy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
33 gcvalues.fill_style = FillStippled;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
34 gcvalues.line_width = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
35 gcvaluemask = GCFunction | GCForeground | GCBackground | GCFillStyle |
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
36 GCLineWidth;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
37 DissolveOutGC = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
38 XSetTSOrigin(dpy, DissolveOutGC, 0, 0);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
39
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
40 /* make DissolveInGC */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
41 gcvalues.foreground = fg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
42 DissolveInGC = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
43 XSetTSOrigin(dpy, DissolveInGC, 0, 0);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
44
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
45 /* make DissolveOutLineGC */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
46 i = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
47 gcvalues.foreground = bg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
48 gcvalues.fill_style = FillSolid;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
49 gcvalues.line_style = LineOnOffDash;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
50 gcvalues.line_width = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
51 gcvaluemask = GCFunction | GCForeground | GCBackground |
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
52 GCFillStyle | GCLineStyle | GCLineWidth ;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
53 DissolveOutLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
54 XSetDashes(dpy, DissolveOutLineGC[i], 0, first_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
55 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
56 DissolveOutLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
57 XSetDashes(dpy, DissolveOutLineGC[i], 0, second_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
58 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
59 DissolveOutLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
60 XSetDashes(dpy, DissolveOutLineGC[i], 3, first_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
61 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
62 gcvalues.line_style = LineSolid;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
63 DissolveOutLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
64
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
65 /* make DissolveInLineGC */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
66 i = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
67 gcvalues.foreground = fg_pixel;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
68 gcvalues.fill_style = FillSolid;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
69 gcvalues.line_style = LineOnOffDash;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
70 gcvalues.line_width = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
71 gcvaluemask = GCFunction | GCForeground | GCBackground |
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
72 GCFillStyle | GCLineStyle | GCLineWidth;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
73 DissolveInLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
74 XSetDashes(dpy, DissolveInLineGC[i], 0, first_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
75 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
76 DissolveInLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
77 XSetDashes(dpy, DissolveInLineGC[i], 0, second_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
78 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
79 DissolveInLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
80 XSetDashes(dpy, DissolveInLineGC[i], 3, first_dash, 2);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
81 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
82 gcvalues.line_style = LineSolid;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
83 DissolveInLineGC[i] = XCreateGC(dpy, drawable, gcvaluemask, &gcvalues);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
84
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
85 i = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
86 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
87 first_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
88 first_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
89 first_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
90 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
91 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
92 second_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
93 second_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
94 second_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
95 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
96 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
97 third_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
98 third_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
99 third_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
100 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
101 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
102 fourth_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
103 fourth_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
104 fourth_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
105 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
106 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
107 fifth_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
108 fifth_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
109 fifth_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
110 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
111 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
112 sixth_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
113 sixth_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
114 sixth_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
115 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
116 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
117 seventh_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
118 seventh_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
119 seventh_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
120 i++;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
121 DissolvePixmaps[i] = XCreateBitmapFromData(dpy, drawable,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
122 eighth_bits,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
123 eighth_width,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
124 eighth_height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
125 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
126
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
127 DissolveRectangle(dpy, drawable, x, y, width, height, mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
128 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
129 Window drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
130 int x, y, width, height;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
131 int mode;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
132 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
133 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
134 GC gc;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
135
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
136 gc = mode ? DissolveOutGC : DissolveInGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
137
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
138 for (i = 0 ; i < NUM_DISSOLVE_STEPS ; i++) {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
139 XSetStipple(dpy, gc, DissolvePixmaps[i]);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
140 if (mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
141 XFillRectangle(dpy, drawable, gc, x, y, width, height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
142 else
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
143 XDrawRectangle(dpy, drawable, gc, x, y, width, height);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
144 XFlush(dpy);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
145 usleep(50000);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
146 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
147 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
148
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
149 DissolveRectangles(dpy, drawable, rectangles, nrectangles, mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
150 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
151 Window drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
152 XRectangle rectangles[];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
153 int nrectangles;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
154 int mode;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
155 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
156 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
157 GC gc;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
158
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
159 gc = mode ? DissolveOutGC : DissolveInGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
160
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
161 for (i = 0 ; i < NUM_DISSOLVE_STEPS ; i++) {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
162 XSetStipple(dpy, gc, DissolvePixmaps[i]);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
163 if (mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
164 XFillRectangles(dpy, drawable, gc, rectangles, nrectangles);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
165 else
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
166 XDrawRectangles(dpy, drawable, gc, rectangles, nrectangles);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
167 XFlush(dpy);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
168 usleep(50000);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
169 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
170 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
171
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
172 DissolveSegments(dpy, drawable, segments, nsegments, mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
173 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
174 Window drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
175 XSegment segments[];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
176 int nsegments;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
177 int mode;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
178 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
179 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
180 GC *gc;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
181
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
182 gc = mode ? DissolveOutLineGC : DissolveInLineGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
183
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
184 for (i = 0 ; i < NUM_LINE_STEPS ; i++) {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
185 XDrawSegments(dpy, drawable, gc[i], segments, nsegments);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
186 XFlush(dpy);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
187 usleep(50000);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
188 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
189 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
190
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
191 DissolveTree(dpy, drawable, rectangles, nrectangles, segments, nsegments, mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
192 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
193 Window drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
194 XRectangle rectangles[];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
195 int nrectangles;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
196 XSegment segments[];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
197 int nsegments;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
198 int mode;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
199 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
200 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
201 int j = 0;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
202 int idle;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
203 GC gc;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
204 GC *lineGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
205
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
206 gc = mode ? DissolveOutGC : DissolveInGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
207 lineGC = mode ? DissolveOutLineGC : DissolveInLineGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
208
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
209 /* speed up if there are lots of nodes */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
210 idle = nrectangles > 50 ? 0 : 25000;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
211
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
212 for (i = 0 ; i < NUM_DISSOLVE_STEPS ; i++) {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
213 XSetStipple(dpy, gc, DissolvePixmaps[i]);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
214 if (mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
215 XFillRectangles(dpy, drawable, gc, rectangles, nrectangles);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
216 else
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
217 XDrawRectangles(dpy, drawable, gc, rectangles, nrectangles);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
218 if (i % 2)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
219 XDrawSegments(dpy, drawable, lineGC[j++], segments, nsegments);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
220 XFlush(dpy);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
221 usleep(idle);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
222 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
223 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
224
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
225 DissolvePolygon(dpy, drawable, pts, num_pts, mode)
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
226 Display *dpy;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
227 Window drawable;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
228 XPoint *pts;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
229 int num_pts;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
230 int mode;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
231 {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
232 int i;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
233 GC gc;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
234
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
235 gc = mode ? DissolveOutGC : DissolveInGC;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
236
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
237 for (i = 0 ; i < NUM_DISSOLVE_STEPS ; i++) {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
238 XSetStipple(dpy, gc, DissolvePixmaps[i]);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
239 XFillPolygon(dpy, drawable, gc, pts, num_pts,
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
240 Nonconvex, CoordModeOrigin);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
241 XFlush(dpy);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
242 usleep(50000);
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
243 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
244 }
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
245