home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume15 / gbench / part01 / gbench.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-12  |  5.6 KB  |  261 lines

  1. #include <ctype.h>
  2. #include <nlist.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <sys/time.h>
  7.  
  8. #ifdef SUN3
  9. #define FIXLOAD
  10. #endif
  11. #ifdef SUN4
  12. #define FIXLOAD
  13. #endif
  14.  
  15. #ifdef X10
  16. #   include <X10/Xlib.h>
  17. #   define _BlackPixel        BlackPixel
  18. #   define ButtonPress        ButtonPressed
  19. #   define ButtonPressMask    ButtonPressed
  20. #   define ButtonRelease    ButtonReleased
  21. #   define ButtonReleaseMask    ButtonReleased
  22. #   define DARG
  23. #   define DARGC
  24. #   define DefaultFonts        "4x6,6x10,6x13,9x15,ice34"
  25. #   define _DisplayHeight    DisplayHeight()
  26. #   define _DisplayWidth    DisplayWidth()
  27. #   define Drawable        Window
  28. #   define ExposeRegionMask    ExposeRegion
  29. #   define ExposureMask        ExposeCopy
  30. #   define GC            int
  31. #   define MotionNotify        MouseMoved
  32. #   define PointerMotionMask    MouseMoved
  33. #   define _RootWindow        RootWindow
  34. #   define _WhitePixel        WhitePixel
  35. #   define XClearWindow        XClear
  36. #   define XCreateSimpleWindow    XCreateWindow
  37. #   define XFontStruct        FontInfo
  38. #   define XFreeFont        XCloseFont
  39. #   define XGraphicsExposeEvent    XExposeEvent
  40. #   define XPoint        Vertex
  41. #   define XTextItem        char
  42. #   define XMotionEvent        XMouseMovedEvent
  43. #else
  44. #   include <X11/Xlib.h>
  45. #   include <X11/X.h>
  46. #   include <X11/Xutil.h>
  47. #   include <X11/cursorfont.h>
  48. #   define _BlackPixel        BlackPixel(sp->d,DefaultScreen(sp->d))
  49. #   define BlackPixmap        _BlackPixel
  50. #   define DARG            sp->d
  51. #   define DARGC        DARG,
  52. #   define DefaultFonts        "vg-??"
  53. #   define _DisplayHeight    DisplayHeight(sp->d,DefaultScreen(sp->d))
  54. #   define _DisplayWidth    DisplayWidth(sp->d,DefaultScreen(sp->d))
  55. #   define ExposeRegionMask    0
  56. #   define Pattern        int
  57. #   define _RootWindow        DefaultRootWindow(sp->d)
  58. #   define _WhitePixel        WhitePixel(sp->d,DefaultScreen(sp->d))
  59. #   define WhitePixmap        _WhitePixel
  60. #endif
  61.  
  62. #define Border        10
  63. #define DefaultAngle    350
  64. #define DefaultAspect    1.
  65. #define DefaultLwidth   1
  66. #define DefaultMaxshift    32
  67. #define DefaultNchar    10
  68. #define DefaultNvert    4
  69. #define DefaultNwin    10
  70. #define DefaultOffset    .5
  71. #define DefaultPtsize    12
  72. #define DefaultSize    100
  73. #define DefaultTimegoal    1
  74. #define DefaultWinsize  _DisplayWidth/2
  75. #define MaxIndepth    10
  76. #define MaxNum        1000000
  77. #define MaxPositional    5
  78. #define MaxStr        120
  79. #define MaxVert        31
  80. #define MaxFonts    16
  81. #define MinAspect    .1
  82. #define nil        0
  83. #define NumOps        9
  84. #define OverlapSize    2
  85. #define Pi        3.141592654
  86. #define PolyAngle    Pi/18
  87. #define Version         1.0
  88.  
  89. #define Sign(x) ((x)>=0?1:-1)
  90.  
  91. typedef enum {false,true} bool;
  92.  
  93. typedef double Load;
  94.  
  95. typedef void (*Op)();
  96.  
  97. typedef enum {
  98.     NilIndex = -1,
  99.     ArcIndex,
  100.     BlitIndex,
  101.     MapIndex,
  102.     NopIndex,
  103.     PointIndex,
  104.     PolyIndex,
  105.     RectIndex,
  106.     TextIndex,
  107.     VecIndex
  108. } OpIndex;
  109.  
  110. typedef enum {StartOp,DoOp,EraseOp,FinishOp} OpType;
  111.  
  112. typedef struct {
  113.     bool    altcolor;
  114.     bool    altfont;
  115.     bool    altgc;
  116.     bool    altwin;
  117.     bool    drag;
  118.     bool    fill;
  119.     bool    invert;
  120.     bool    offdest;
  121.     bool    offsrc;
  122.     bool    overlap;
  123.     bool    poll;
  124.     bool    polyself;
  125.     bool    polywind;
  126.     bool    profile;
  127.     bool    setdefaults;
  128.     bool    silent;
  129.     bool    stipple;
  130.     bool    tile;
  131.     bool    unbatched;
  132. } OptFlags;
  133.  
  134. typedef struct {
  135.     int        angle;
  136.     float   aspect;
  137.     int        count;
  138.     char    fonts[MaxStr];
  139.     int        ptsize;
  140.     int        lwidth;
  141.     int        maxshift;
  142.     float   offset;
  143.     int        nchar;
  144.     int        nwin;
  145.     int        nvert;
  146.     char    opts[MaxStr];
  147.     char    outfile[MaxStr];
  148.     int        size;
  149.     char    tag[MaxStr];
  150.     int        timegoal;
  151.     int        winsize;
  152. } Params;
  153.  
  154. typedef unsigned long Pixel;
  155.  
  156. typedef enum {
  157.     Succeeded,
  158.     CmdNotSupported,
  159.     OptNotSupported,
  160.     NoFonts,
  161.     NoOffscreenMem
  162. } Result;
  163.  
  164. typedef double Rtime;
  165.  
  166. typedef struct {
  167.     char*   cur;
  168.     char*   end;
  169. } TokenState;
  170.  
  171. typedef struct {
  172.     int        bbx;
  173.     int        bby;
  174.     Pixel    colorbg;
  175.     Pixel    colorfg;
  176.     Drawable    dest;
  177.     int        dx;
  178.     int        dy;
  179.     Font    fontid;
  180.     int        func;
  181.     GC        gc;
  182.     OpIndex    index;
  183.     int        iterations;
  184.     OptFlags    o;
  185.     Params    p;
  186.     Result    result;
  187.     int        shift;
  188.     int        size[3];
  189.     Drawable    src;
  190.     double    time;
  191.     Window    w;
  192.     int        x;
  193.     int        y;
  194. } Cmd;
  195.  
  196. typedef struct {
  197.     bool        altwin;
  198.     int            argc;
  199.     int            argindex;
  200.     char**        argv;
  201.     Cursor        cursor;
  202.     Window        cw1;
  203.     Window        cw2;
  204.     Display*        d;
  205.     Params        defaults;
  206.     Drawable        dest1;
  207.     Drawable        dest2;
  208.     char        disphost[MaxStr];
  209.     char        fonts[MaxStr];
  210.     XFontStruct*    fontinfo[MaxFonts];
  211.     GC            gc1;
  212.     GC            gc2;
  213.     char*        gxname;
  214.     char        host[MaxStr];
  215.     int            indepth;
  216.     FILE*        infds[MaxIndepth+1];
  217.     char        instr[MaxStr+1];
  218.     Drawable        offpix;
  219.     FILE*        outfd;
  220.     char        outfile[MaxStr+1];
  221.     char        outstr[MaxStr+1];
  222.     Pattern        pattern;
  223.     OpIndex        previndex;
  224.     Params        prevparams;
  225.     int            scriptindex;
  226.     Drawable        src1;
  227.     Drawable        src2;
  228.     bool        strinput;
  229.     bool        supcmds[NumOps];
  230.     OptFlags        supopts;
  231.     XTextItem        texts[MaxStr];
  232.     Pixmap        tile;
  233.     TokenState        ts;
  234.     XPoint        v[MaxVert+1];
  235.     Window        w1;
  236.     Window        w2;
  237.     int            winsize;
  238. } State;
  239.  
  240. bool    GetCmd();
  241. Load    GetLoad();
  242. OpIndex    GetOpIndex();
  243. Rtime    GetTime();
  244. FILE*    Out();
  245. void    Start(),Erase(),Finish();
  246. void    StartArc(),DoArc();
  247. void    StartBlit(),DoBlit();
  248. void    StartMap(),DoMap(),FinishMap();
  249. void    DoNop();
  250. void    StartPoint(),DoPoint();
  251. void    StartPoly(),DoPoly();
  252. void    StartRect(),DoRect();
  253. void    StartText(),DoText();
  254. void    StartVec(),DoVec();
  255. char*    StrToken();
  256.  
  257. extern char*    OpNames[NumOps][1+MaxPositional];
  258. extern Op    Ops[NumOps][4];
  259. extern char*    ResultMsgs[];
  260. extern char*    Script[];
  261.