home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1999 March / PCShareware-3-99.iso / IMPLE / DJGPP.RAR / DJGPP2 / XLIB-SR0.ZIP / SRC / XLIBEMU / CHWATTR.C < prev    next >
C/C++ Source or Header  |  1994-02-20  |  3KB  |  99 lines

  1. /* $Id: chwattr.c 1.2 1994/02/20 19:59:19 ulrich Exp $ */
  2. /*
  3.  * X library function XChangeWindowAttributes.
  4.  */
  5. #include "Xlibemu.h"
  6.  
  7. extern _WContextFilledBox ();
  8.  
  9. int
  10. XChangeWindowAttributes (Display*    dpy,
  11.              Window        window,
  12.              unsigned long    valuemask,
  13.              XSetWindowAttributes* attributes)
  14. {
  15.   int redraw_border;
  16.  
  17.   if (0 == _WCheckWindow (dpy, window, X_ChangeWindowAttributes))
  18.     return 0;
  19.  
  20.   redraw_border = False;
  21.  
  22.   if (valuemask & CWBackPixmap) {
  23.     window->background.fillArg = (long) None;
  24.     window->background.fillBox = _WDummyFilledBox;
  25.     if (attributes->background_pixmap != None) {
  26.       if (attributes->background_pixmap->pattern != NULL) {
  27.     window->background.fillArg = (long) attributes->background_pixmap->pattern;
  28.     if (attributes->background_pixmap->type == 0) {
  29.       GrPattern *bmp = attributes->background_pixmap->pattern;
  30.       window->background.fillArg = (long)
  31.         GrBuildPixmapFromBits (bmp->gp_bmp_data + bmp->gp_bmp_height,
  32.                    attributes->background_pixmap->width,
  33.                    attributes->background_pixmap->height,
  34.                    bmp->gp_bmp_fgcolor,
  35.                    bmp->gp_bmp_bgcolor);
  36.     }
  37.     window->background.fillBox = GrPatternFilledBox;
  38.       }
  39.       else if (attributes->background_pixmap->context != NULL) {
  40.     window->background.fillArg = (long) attributes->background_pixmap->context;
  41.     window->background.fillBox = _WContextFilledBox;
  42.       }
  43.     }
  44.   }
  45.   if (valuemask & CWBackPixel) {
  46.     window->background.fillArg    = attributes->background_pixel;
  47.     window->background.fillBox    = GrFilledBox;
  48.   }
  49.   if (valuemask & CWBorderPixmap) {
  50.     window->border.fillArg    = (long) attributes->border_pixmap->pattern;
  51.     window->border.fillBox    = (window->border.fillArg != None)
  52.       ? GrPatternFilledBox : _WDummyFilledBox;
  53.     redraw_border = True;
  54.   }
  55.   if (valuemask & CWBorderPixel) {
  56.     window->border.fillArg    = attributes->border_pixel;
  57.     window->border.fillBox    = GrFilledBox;
  58.     redraw_border = True;
  59.   }
  60.   if (valuemask & CWBitGravity)
  61.     window->bit_gravity        = attributes->bit_gravity;
  62.   if (valuemask & CWWinGravity)
  63.     window->win_gravity        = attributes->win_gravity;
  64.   if (valuemask & CWBackingStore)
  65.     window->backing_store    = attributes->backing_store;
  66.   if (valuemask & CWBackingPlanes)
  67.     window->backing_planes    = attributes->backing_planes;
  68.   if (valuemask & CWBackingPixel)
  69.     window->backing_pixel    = attributes->backing_pixel;
  70.   if (valuemask & CWSaveUnder)
  71.     window->save_under        = attributes->save_under;
  72.   if (valuemask & CWEventMask) {
  73.     int i;
  74.     long mask;
  75.  
  76.     window->event_masks[ConnectionNumber(dpy)] = attributes->event_mask;
  77.     mask = 0;
  78.     for (i = 0; i < MAX_CONN; i++) {
  79.       mask |= window->event_masks[i];
  80.     }
  81.     window->event_mask = mask;
  82.   }
  83.   if (valuemask & CWDontPropagate)
  84.     window->do_not_propagate_mask    = attributes->do_not_propagate_mask;
  85.   if (valuemask & CWOverrideRedirect)
  86.     window->override_redirect    = attributes->override_redirect;
  87.   if (valuemask & CWColormap)
  88.     window->colormap        = attributes->colormap;
  89.   if (valuemask & CWCursor)
  90.     window->cursor        = attributes->cursor;
  91.  
  92.   if (window->viewable) {
  93.     if (redraw_border)
  94.       _WDrawWindowBorder (dpy, window, &window->border_port, True);
  95.   }
  96.   
  97.   return 1;
  98. }
  99.