summaryrefslogtreecommitdiff
path: root/uisimulator/alpha.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/alpha.c')
-rw-r--r--uisimulator/alpha.c78
1 files changed, 0 insertions, 78 deletions
diff --git a/uisimulator/alpha.c b/uisimulator/alpha.c
index 22504fcd93..39abd33251 100644
--- a/uisimulator/alpha.c
+++ b/uisimulator/alpha.c
@@ -135,81 +135,3 @@ initialize_transparency_colormap (Display *dpy, Colormap cmap,
135 XFree ((XPointer) all_colors); 135 XFree ((XPointer) all_colors);
136} 136}
137 137
138
139Bool
140allocate_alpha_colors (Screen *screen, Visual *visual, Colormap cmap,
141 int *nplanesP, Bool additive_p,
142 unsigned long **plane_masks,
143 unsigned long *base_pixelP)
144{
145 Display *dpy = DisplayOfScreen (screen);
146 XColor *colors;
147 int nplanes = *nplanesP;
148 int i;
149
150 if (!has_writable_cells (screen, visual))
151 cmap = 0;
152
153 if (!cmap) /* A TrueColor visual, or similar. */
154 {
155 int depth = visual_depth (screen, visual);
156 unsigned long masks;
157 XVisualInfo vi_in, *vi_out;
158
159 /* Find out which bits the R, G, and B components actually occupy
160 on this visual. */
161 vi_in.screen = screen_number (screen);
162 vi_in.visualid = XVisualIDFromVisual (visual);
163 vi_out = XGetVisualInfo (dpy, VisualScreenMask|VisualIDMask,
164 &vi_in, &i);
165 if (! vi_out) abort ();
166 masks = vi_out[0].red_mask | vi_out[0].green_mask | vi_out[0].blue_mask;
167 XFree ((char *) vi_out);
168
169 if (nplanes > depth)
170 nplanes = depth;
171 *nplanesP = nplanes;
172 *base_pixelP = 0;
173 *plane_masks = (unsigned long *) calloc(sizeof(unsigned long), nplanes);
174
175 /* Pick the planar values randomly, but constrain them to fall within
176 the bit positions of the R, G, and B fields. */
177 for (i = 0; i < nplanes; i++)
178 (*plane_masks)[i] = random() & masks;
179
180 }
181 else /* A PseudoColor visual, or similar. */
182 {
183 if (nplanes > 31) nplanes = 31;
184 *plane_masks = (unsigned long *) malloc(sizeof(unsigned long) * nplanes);
185
186 nplanes = allocate_color_planes (dpy, cmap, nplanes, *plane_masks,
187 base_pixelP);
188 *nplanesP = nplanes;
189
190 if (nplanes <= 1)
191 {
192 free(*plane_masks);
193 *plane_masks = 0;
194 return False;
195 }
196
197 colors = (XColor *) calloc (nplanes, sizeof (XColor));
198 for (i = 0; i < nplanes; i++)
199 {
200 /* pick the base colors. If we are in subtractive mode, pick higher
201 intensities. */
202 hsv_to_rgb (random () % 360,
203 frand (1.0),
204 frand (0.5) + (additive_p ? 0.2 : 0.5),
205 &colors[i].red,
206 &colors[i].green,
207 &colors[i].blue);
208 }
209 initialize_transparency_colormap (dpy, cmap, nplanes,
210 *base_pixelP, *plane_masks, colors,
211 additive_p);
212 XFree ((XPointer) colors);
213 }
214 return True;
215}