234 |
|
getbestvis(); |
235 |
|
/* store image */ |
236 |
|
getras(); |
237 |
+ |
/* get size and position */ |
238 |
+ |
bzero((char *)&oursizhints, sizeof(oursizhints)); |
239 |
+ |
oursizhints.width = xmax; oursizhints.height = ymax; |
240 |
+ |
if (geometry != NULL) { |
241 |
+ |
i = XParseGeometry(geometry, &oursizhints.x, &oursizhints.y, |
242 |
+ |
(unsigned *)&oursizhints.width, |
243 |
+ |
(unsigned *)&oursizhints.height); |
244 |
+ |
if ((i&(WidthValue|HeightValue)) == (WidthValue|HeightValue)) |
245 |
+ |
oursizhints.flags |= USSize; |
246 |
+ |
else |
247 |
+ |
oursizhints.flags |= PSize; |
248 |
+ |
if ((i&(XValue|YValue)) == (XValue|YValue)) { |
249 |
+ |
oursizhints.flags |= USPosition; |
250 |
+ |
if (i & XNegative) |
251 |
+ |
oursizhints.x += DisplayWidth(thedisplay, |
252 |
+ |
ourscreen)-1-oursizhints.width-2*BORWIDTH; |
253 |
+ |
if (i & YNegative) |
254 |
+ |
oursizhints.y += DisplayHeight(thedisplay, |
255 |
+ |
ourscreen)-1-oursizhints.height-2*BORWIDTH; |
256 |
+ |
} |
257 |
+ |
} |
258 |
|
/* open window */ |
259 |
|
ourwinattr.border_pixel = ourblack; |
260 |
|
ourwinattr.background_pixel = ourwhite; |
261 |
|
ourwinattr.colormap = XCreateColormap(thedisplay, ourroot, |
262 |
|
ourvis.visual, AllocNone); |
263 |
< |
wind = XCreateWindow(thedisplay, ourroot, 0, 0, xmax, ymax, BORWIDTH, |
263 |
> |
wind = XCreateWindow(thedisplay, ourroot, oursizhints.x, oursizhints.y, |
264 |
> |
oursizhints.width, oursizhints.height, BORWIDTH, |
265 |
|
ourvis.depth, InputOutput, ourvis.visual, |
266 |
|
CWBackPixel|CWBorderPixel|CWColormap, &ourwinattr); |
267 |
|
if (wind == 0) |
280 |
|
XDefineCursor(thedisplay, wind, XCreateFontCursor(thedisplay, |
281 |
|
XC_diamond_cross)); |
282 |
|
XStoreName(thedisplay, wind, fname == NULL ? progname : fname); |
283 |
< |
if (geometry != NULL) { |
262 |
< |
bzero((char *)&oursizhints, sizeof(oursizhints)); |
263 |
< |
i = XParseGeometry(geometry, &oursizhints.x, &oursizhints.y, |
264 |
< |
(unsigned *)&oursizhints.width, |
265 |
< |
(unsigned *)&oursizhints.height); |
266 |
< |
if ((i&(WidthValue|HeightValue)) == (WidthValue|HeightValue)) |
267 |
< |
oursizhints.flags |= USSize; |
268 |
< |
else { |
269 |
< |
oursizhints.width = xmax; |
270 |
< |
oursizhints.height = ymax; |
271 |
< |
oursizhints.flags |= PSize; |
272 |
< |
} |
273 |
< |
if ((i&(XValue|YValue)) == (XValue|YValue)) { |
274 |
< |
oursizhints.flags |= USPosition; |
275 |
< |
if (i & XNegative) |
276 |
< |
oursizhints.x += DisplayWidth(thedisplay, |
277 |
< |
ourscreen)-1-oursizhints.width-2*BORWIDTH; |
278 |
< |
if (i & YNegative) |
279 |
< |
oursizhints.y += DisplayHeight(thedisplay, |
280 |
< |
ourscreen)-1-oursizhints.height-2*BORWIDTH; |
281 |
< |
} |
283 |
> |
if (oursizhints.flags) |
284 |
|
XSetNormalHints(thedisplay, wind, &oursizhints); |
283 |
– |
} |
285 |
|
ourxwmhints.flags = InputHint|IconPixmapHint; |
286 |
|
ourxwmhints.input = True; |
287 |
|
ourxwmhints.icon_pixmap = XCreateBitmapFromData(thedisplay, |
613 |
|
map_rcolors(ourras, wind); |
614 |
|
if (fast) |
615 |
|
make_rpixmap(ourras, wind); |
616 |
+ |
redraw(0, 0, width, height); |
617 |
+ |
return(0); |
618 |
+ |
case '0': /* recenter origin */ |
619 |
+ |
if (xoff == 0 & yoff == 0) |
620 |
+ |
return(0); |
621 |
+ |
xoff = yoff = 0; |
622 |
+ |
XClearWindow(thedisplay, wind); |
623 |
|
redraw(0, 0, width, height); |
624 |
|
return(0); |
625 |
|
case ' ': /* clear */ |