home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume8 / xfig2.8 / part03 / grid.c < prev    next >
C/C++ Source or Header  |  1990-07-02  |  4KB  |  116 lines

  1. /* 
  2.  *    FIG : Facility for Interactive Generation of figures
  3.  *
  4.  *    Copyright (c) 1985 by Supoj Sutanthavibul (supoj@sally.UTEXAS.EDU)
  5.  *    January 1985.
  6.  *    1st revision : Aug 1985.
  7.  *
  8.  *    %W%    %G%
  9. */
  10. #include "fig.h"
  11. #include "resources.h"
  12. #include "const.h"
  13. #include "func.h"
  14. #include "paintop.h"
  15.  
  16. static int    cur_grid = -1;
  17. extern int    CANVAS_WIDTH, CANVAS_HEIGHT;
  18. extern appresStruct    appres;
  19.  
  20. #define null_width 32
  21. #define null_height 32
  22. static char null_bits[null_width * null_height / 8] = { 0 };
  23.  
  24. #define quarter_width 20
  25. #define quarter_height 20
  26. static char quarter_bits[] = {
  27.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  28.    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  29.    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  30.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  31.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x08};
  32.  
  33. #define half_width 40
  34. #define half_height 40
  35. static char half_bits[] = {
  36.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  37.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  38.    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  39.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  40.    0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  41.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  42.    0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  43.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  44.    0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  45.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  46.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  47.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  48.    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  49.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  50.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  51.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  52.    0x00, 0x00, 0x00, 0x10, 0x42, 0x08, 0x21, 0x84};
  53.  
  54. #define half_cm_width 15
  55. #define half_cm_height 15
  56. static char half_cm_bits[] = {
  57.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
  58.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
  59.    0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x00};
  60.  
  61. static Pixmap    null_pm, quarter_pm, half_pm, half_cm_pm;
  62.  
  63. init_grid()
  64. {
  65.     unsigned long bg, fg;
  66.     Arg    tmp_arg[3];
  67.  
  68.     XtSetArg(tmp_arg[0], XtNbackground, &bg);
  69.     XtSetArg(tmp_arg[1], XtNforeground, &fg);
  70.     XtGetValues(canvas_sw, tmp_arg, 2);
  71.     
  72.     null_pm = XCreatePixmapFromBitmapData(tool_d, canvas_win,
  73.         null_bits, null_width, null_height,
  74.         fg, bg,    DefaultDepthOfScreen(tool_s));
  75.     quarter_pm = XCreatePixmapFromBitmapData(tool_d, canvas_win,
  76.         quarter_bits, quarter_width, quarter_height,
  77.         fg, bg,    DefaultDepthOfScreen(tool_s));
  78.     half_pm = XCreatePixmapFromBitmapData(tool_d, canvas_win,
  79.         half_bits, half_width, half_height,
  80.         fg, bg,    DefaultDepthOfScreen(tool_s));
  81.     half_cm_pm = XCreatePixmapFromBitmapData(tool_d, canvas_win,
  82.         half_cm_bits, half_cm_width, half_cm_height,
  83.         fg, bg, DefaultDepthOfScreen(tool_s));
  84. }
  85.  
  86. /* grid in X11 is simply the background of the canvas */
  87.  
  88. setup_grid(grid)
  89.     int        grid;
  90. {
  91.     static Arg    grid_args[] =
  92.     {
  93.         { XtNbackgroundPixmap, (XtArgVal)NULL },
  94.     };
  95.  
  96.     if (grid == cur_grid)
  97.     {
  98.         grid_args[0].value = (XtArgVal)null_pm;
  99.         grid = -1;
  100.     }
  101.     if( appres.INCHES )
  102.     {
  103.         if (grid == F_GRID1)
  104.             grid_args[0].value = (XtArgVal)quarter_pm;
  105.         else if (grid == F_GRID2)
  106.             grid_args[0].value = (XtArgVal)half_pm;
  107.     }else if (grid == F_GRID1 || grid == F_GRID2)
  108.         grid_args[0].value = (XtArgVal)half_cm_pm;
  109.     cur_grid = grid;
  110.     XtSetValues(canvas_sw, grid_args, XtNumber(grid_args));
  111. }
  112.  
  113. redisplay_grid()
  114. {
  115. }
  116.