Date: 2013-07-02T14:38:23+00:00

Actual source code: ximpl.h
petsc-3.4.2 2013-07-02

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

      7: #if !defined(_XIMPL_H)
      8: #define _XIMPL_H
      9: #include <petsc-private/drawimpl.h>

     11: #include <X11/Xlib.h>
     12: #include <X11/Xutil.h>

     14: typedef unsigned long PetscDrawXiPixVal;

     16: typedef struct {
     17:   GC                set;
     18:   PetscDrawXiPixVal cur_pix;
     19: } PetscDrawXiGC;

     21: typedef struct {
     22:   Font              fnt;
     23:   int               font_w,font_h;
     24:   int               font_descent;
     25:   PetscDrawXiPixVal font_pix;
     26: } PetscDrawXiFont;

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

     45: #define PetscDrawXiDrawable(w) ((w)->drw ? (w)->drw : (w)->win)

     47: #define PetscDrawXiSetColor(Win,icolor) \
     48:   { if (icolor >= 256 || icolor < 0) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Color value out of range"); \
     49:     if ((Win)->gc.cur_pix != (Win)->cmapping[icolor]) {                  \
     50:       XSetForeground((Win)->disp,(Win)->gc.set,(Win)->cmapping[icolor]); \
     51:       (Win)->gc.cur_pix = (Win)->cmapping[icolor]; \
     52:     }}

     54: #define PetscDrawXiSetPixVal(Win,pix) \
     55:   { if ((PetscDrawXiPixVal) (Win)->gc.cur_pix != pix) { \
     56:       XSetForeground((Win)->disp,(Win)->gc.set,pix);    \
     57:       (Win)->gc.cur_pix = pix; \
     58:     }}

     60: #endif