ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/px/x11image.c
(Generate patch)

Comparing ray/src/px/x11image.c (file contents):
Revision 2.15 by greg, Tue Oct 13 16:43:39 1992 UTC vs.
Revision 2.20 by greg, Fri Feb 12 18:03:08 1993 UTC

# Line 234 | Line 234 | init()                 /* get data and open window */
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)
# Line 258 | Line 280 | init()                 /* get data and open window */
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,
# Line 614 | Line 615 | XKeyPressedEvent  *ekey;
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 */
626                  redraw(box.xmin, box.ymin, box.xsiz, box.ysiz);
627                  return(0);
# Line 755 | Line 763 | getmono()                      /* get monochrome data */
763          dp = ourdata - 1;
764          for (y = 0; y < ymax; y++) {
765                  getscan(y);
758                normcolrs(scanline, xmax, scale);
766                  add2icon(y, scanline);
767 +                normcolrs(scanline, xmax, scale);
768                  err = 0;
769                  for (x = 0; x < xmax; x++) {
770                          if (!(x&7))
# Line 782 | Line 790 | COLR  *scan;
790          static short  cerr[ICONSIZ];
791          static int  ynext;
792          static char  *dp;
793 +        COLR  clr;
794          register int  err;
795          register int    x, ti;
796          int  errp;
# Line 812 | Line 821 | COLR  *scan;
821                          *++dp = 0;
822                  errp = err;
823                  ti = x*xmax/iconwidth;
824 <                err += normbright(scan[ti]) + cerr[x];
824 >                copycolr(clr, scan[ti]);
825 >                normcolrs(clr, 1, scale);
826 >                err += normbright(clr) + cerr[x];
827                  if (err > 127)
828                          err -= 255;
829                  else
# Line 835 | Line 846 | getfull()                      /* get full (24-bit) data */
846          dp = (unsigned long *)ourdata;
847          for (y = 0; y < ymax; y++) {
848                  getscan(y);
849 +                add2icon(y, scanline);
850                  if (scale)
851                          shiftcolrs(scanline, xmax, scale);
852                  colrs_gambs(scanline, xmax);
841                add2icon(y, scanline);
853                  if (ourras->image->blue_mask & 1)
854                          for (x = 0; x < xmax; x++)
855                                  *dp++ = scanline[x][RED] << 16 |
# Line 864 | Line 875 | getgrey()                      /* get greyscale data */
875          dp = ourdata;
876          for (y = 0; y < ymax; y++) {
877                  getscan(y);
878 +                add2icon(y, scanline);
879                  if (scale)
880                          shiftcolrs(scanline, xmax, scale);
881 +                for (x = 0; x < xmax; x++)
882 +                        scanline[x][GRN] = normbright(scanline[x]);
883                  colrs_gambs(scanline, xmax);
870                add2icon(y, scanline);
884                  if (maxcolors < 256)
885                          for (x = 0; x < xmax; x++)
886 <                                *dp++ = ((long)normbright(scanline[x]) *
887 <                                        maxcolors + 128) >> 8;
886 >                                *dp++ = ((long)scanline[x][GRN] *
887 >                                        maxcolors + maxcolors/2) >> 8;
888                  else
889                          for (x = 0; x < xmax; x++)
890 <                                *dp++ = normbright(scanline[x]);
890 >                                *dp++ = scanline[x][GRN];
891          }
892          for (x = 0; x < maxcolors; x++)
893                  clrtab[x][RED] = clrtab[x][GRN] =
894 <                        clrtab[x][BLU] = ((long)x*256+maxcolors/2)/maxcolors;
894 >                        clrtab[x][BLU] = ((long)x*256 + 128)/maxcolors;
895   }
896  
897  
# Line 892 | Line 905 | getmapped()                    /* get color-mapped data */
905          for (y = 0; y < ymax; y++) {
906                  if (getscan(y) < 0)
907                          quiterr("seek error in getmapped");
908 +                add2icon(y, scanline);
909                  if (scale)
910                          shiftcolrs(scanline, xmax, scale);
911                  colrs_gambs(scanline, xmax);
898                add2icon(y, scanline);
912                  cnt_colrs(scanline, xmax);
913          }
914                                          /* map pixels */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines