XDRIVER

Jerry Ballard ballard at mc1.wes.army.mil
Mon Apr 13 15:58:58 EDT 1992


 I have written X11 code that will run a 24-bit X display in GRASS3.0
but can't seem to find it right now. ( Don't tell my boss.) 

There are a couple of inefficient ways to do it: This is one of them!

  ( From the 3.0 XDRIVER source )

  1. In Graph_Set.c change the line:

   bkupmap = XCreatePixmap(dpy,grwin,SC_WID,SC_HITE,8);
     to
   bkupmap = XCreatePixmap(dpy,grwin,SC_WID,SC_HITE,24);

  2. In Reset_clr.c add the lines:

   (globally )
   int Red[NCOLORS],Grn[NCOLORS],Blu[NCOLORS];

   ( in the function )
    Red[number] = red;
    Grn[number] = grn;
    Blu[number] = blu;

  3. In Color.c add the line:

   (globally)
   extern int Red[NCOLORS],Grn[NCOLORS],Blu[NCOLORS];

     and then change the line in the function:

   XSetForeground(dpy,gc, (unsigned long) number);

     to

   int shftcolr;
   shiftcolr = (Red[number] << 16) | (Grn[number] << 8) | Blu[number];
        XSetForeground(dpy,gc, (unsigned long) shiftcolr);


  Explanation:
    1. Set the backup pixmap to the same depth as your main window.  I think
  the GRASS4.0 driver correctly uses window manager hints. So if you are
  modifying 4.0 skip #1.
    2. In Reset_clr.c when the RGB values are passed in, save them in a
  three global color tables to be retrieved later by Color.c. 
    3. In Color.c using the color number from the input parameters, use
  the color lookup values, bit shift them up for the display device.
  Generally after Color.c has been called, a line, or polygon will be
  drawn with the set Foreground color.

  ** Warning **
    The XSetForeground call in Color.c, will slow down display speed with
  excessive network i/o.  Perhaps someone with some time could write an
  efficient XDRIVER for 24-bits, but until then, this should get you
  going in the right direction.

    I wonder if there should be a disclaimer to this message?

  Jerry Ballard
  Spatial Data Systems Team
  Waterways Experiment Station
  United States Army Corp Engineers

+----------------------------+---------------------------------------+
| USACE-WES-EN-A             | FAX:       (601) 634-3842             |
| ATTN: Jerry Ballard, EN-A  | Voice:     (601) 634-2946             |
| 3909 Halls Ferry Rd.       | e-mail:    ballard at mc1.wes.army.mil   |
| Vicksburg, MS  39180       |                                       |
+----------------------------+---------------------------------------+




More information about the grass-dev mailing list