Actual source code: ximpl.h

      1: #define PETSC_DLL

      3: /*
      4:       Defines the internal data structures for the X-windows
      5:    implementation of the graphics functionality in PETSc.
      6: */

     8:  #include src/sys/src/draw/drawimpl.h
     9:  #include petscsys.h

     11: #if !defined(_XIMPL_H)
     12: #define _XIMPL_H

     14: #include <sys/types.h>
     15: #include <X11/Xlib.h>
     16: #include <X11/Xutil.h>

     18: typedef unsigned long PixVal;

     20: typedef struct {
     21:     GC       set;
     22:     PixVal   cur_pix;
     23: } XiGC;

     25: typedef struct {
     26:   Font     fnt;
     27:   int      font_w,font_h;
     28:   int      font_descent;
     29:   PixVal   font_pix;
     30: } XiFont;

     32: typedef struct {
     33:     Display  *disp;
     34:     int      screen;
     35:     Window   win;
     36:     Visual   *vis;            /* Graphics visual */
     37:     XiGC     gc;
     38:     XiFont   *font;
     39:     int      depth;           /* Depth of visual */
     40:     int      numcolors,      /* Number of available colors */
     41:              maxcolors;       /* Current number in use */
     42:     Colormap cmap;
     43:     PixVal   foreground,background;
     44:     PixVal   cmapping[256];
     45:     int      x,y,w,h;      /* Size and location of window */
     46:     Drawable drw;
     47: } PetscDraw_X;

     49: #define XiDrawable(w) ((w)->drw ? (w)->drw : (w)->win)

     51: #define XiSetColor(Win,icolor)\
     52:   {if (icolor >= 256 || icolor < 0) SETERRQ(PETSC_ERR_ARG_OUTOFRANGE,"Color value out of range");\
     53:    if ((Win)->gc.cur_pix != (Win)->cmapping[icolor]) { \
     54:      XSetForeground((Win)->disp,(Win)->gc.set,(Win)->cmapping[icolor]); \
     55:      (Win)->gc.cur_pix   = (Win)->cmapping[icolor];\
     56:   }}

     58: #define XiSetPixVal(Win,pix)\
     59:   {if ((PixVal) (Win)->gc.cur_pix != pix) { \
     60:      XSetForeground((Win)->disp,(Win)->gc.set,pix); \
     61:      (Win)->gc.cur_pix   = pix;\
     62:   }}

     64: typedef struct {
     65:   int      x,y,xh,yh,w,h;
     66: } XiRegion;

     68: typedef struct {
     69:   XiRegion Box;
     70:   int      width,HasColor,is_in;
     71:   PixVal   Hi,Lo;
     72: } XiDecoration;

     74: #endif