home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / evbl0627.zip / everblue_20010627.zip / x11 / Xlib_SetStip.c < prev    next >
C/C++ Source or Header  |  1999-11-02  |  1KB  |  40 lines

  1.  
  2. #include "Xlib_private.h"
  3.  
  4. int Xlib_SetStipple(Pixmap pixmap, Pixmap stipple)
  5. {
  6.     DBUG_ENTER("Xlib_SetStipple")
  7.     LONG atom = LCID_DEFAULT;
  8.     if (!pixmap) DBUG_RETURN(0);
  9.     if (stipple) {
  10.         atom = Xlib_AllocPixmapAtom((Xlib_Pixmap *)pixmap, (Xlib_Pixmap *)stipple);
  11.         if (!atom) {
  12.             x11_console_notice("Out of free GPI atoms!\n");
  13.             /* Perhaps need some LRU disposal schema */
  14.             DBUG_RETURN(0);
  15.         }
  16.     }
  17.     GpiSetPatternSet(((Xlib_Pixmap *)pixmap)->hps, atom);
  18.     DBUG_RETURN(1);
  19. }
  20.  
  21. int XSetStipple(Display* dpy, GC gc, Pixmap stipple)
  22. {
  23.     DBUG_ENTER("XSetStipple")
  24.     Xlib_GC *xgc = (Xlib_GC *)gc;
  25.     HPS hps = NULLHANDLE;
  26.     int result = 0;
  27.     if (!xgc) DBUG_RETURN(0);
  28.     if ((xgc->values.stipple = stipple)) 
  29.         Xlib_MonitorResource((XID *)&xgc->values.stipple);
  30.     if (GetDrawableHeight(0, gc, &hps, GC_NOPATH)) {
  31.         if (xgc->pixmap)
  32.             result = Xlib_SetStipple((Pixmap)xgc->pixmap, stipple);
  33.         else
  34.         if (xgc->winattrib)
  35.             result = Xlib_SetStipple((Pixmap)xgc->winattrib, stipple);
  36.     }
  37.     SyncHandle();
  38.     DBUG_RETURN(result);
  39. }
  40.