| 193 |
|
getevent(); /* main loop */ |
| 194 |
|
userr: |
| 195 |
|
fprintf(stderr, |
| 196 |
< |
"Usage: %s [-display disp][-geometry spec][-b][-m][-d][-f][-c ncolors][-e +/-stops] file\n", |
| 196 |
> |
"Usage: %s [-di disp][[-ge] spec][-b][-m][-d][-f][-c nclrs][-e +/-stops] pic\n", |
| 197 |
|
progname); |
| 198 |
< |
quit(1); |
| 198 |
> |
exit(1); |
| 199 |
|
} |
| 200 |
|
|
| 201 |
|
|
| 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, |
| 533 |
|
switch (com) { /* interpret command */ |
| 534 |
|
case 'q': |
| 535 |
|
case CTRL('D'): /* quit */ |
| 536 |
< |
quit(0); |
| 536 |
> |
quiterr(NULL); |
| 537 |
|
case '\n': |
| 538 |
|
case '\r': |
| 539 |
|
case 'l': |