home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / source / glview.sit / glview.src / grasp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-10-16  |  5.2 KB  |  269 lines

  1. /*-
  2.  * Mac hack of
  3.  * grasp.h - random collection of defines and structures...
  4.  *
  5.  * Copyright (c) 1991 by Patrick J. Naughton
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <ctype.h>
  10. #include <string.h>
  11.  
  12. // ---------------------------- mac adds 
  13.  
  14. typedef     unsigned int u_int;
  15. typedef     unsigned short u_short;
  16. typedef     unsigned char u_char;
  17. typedef     unsigned char u_long;
  18.  
  19. #define    True    1
  20. #define    False    0
  21.  
  22. #include "xlib.h"
  23.  
  24. //-------------------
  25.  
  26. extern char *pname;
  27. extern int  imageloop;
  28. extern int  showdirectory;
  29. extern int  showtext;
  30. extern int  printthecodes;
  31. extern int  verbose;
  32. extern int  imverbose;
  33. extern Display *dsp;
  34. extern Window win;
  35. extern Visual *vis;
  36. extern XVisualInfo vinfo;
  37. extern int  screen;
  38. extern int  planes;
  39. extern GC   gc;
  40. extern GC   gc1;
  41. extern long white;
  42. extern long black;
  43. extern int  currentcolor;
  44. //extern Atom protocol_atom;
  45. //extern Atom kill_atom;
  46. extern XRectangle window;
  47.  
  48. extern u_int GetByte();
  49. extern u_int GetWord();
  50. extern u_int GetLong();
  51. extern Colormap CreateEGAcmap();
  52. extern int  videomode;
  53. extern int  spacegap;
  54. extern int  chargap;
  55. extern void lowerstr();
  56. extern char *strdup();
  57.  
  58. #define NOTOKEN        0
  59. #define BOX        1
  60. #define BREAK        2
  61. #define CALL        3
  62. #define CFADE        4
  63. #define CFREE        5
  64. #define CGETBUF        6
  65. #define CHGCOLOR    7
  66. #define CIRCLE        8
  67. #define CLEARSCR    9
  68. #define CLOAD        10
  69. #define CLOSEGL        11
  70. #define COLOR        12
  71. #define CYCLE        13
  72. #define DATA        14
  73. #define DATABEGIN    15
  74. #define DATAEND        16
  75. #define DATASKIP    17
  76. #define DFREE        18
  77. #define DLOAD        19
  78. #define EDGE        20
  79. #define ELSE        21
  80. #define ENDLFLOAT    22
  81. #define ENDIF        23
  82. #define EXEC        24
  83. #define EXIT        25
  84. #define FFREE        26
  85. #define FGAPS        27
  86. #define FLOAD        28
  87. #define FLOAT        29
  88. #define FLY        30
  89. #define FONT        31
  90. #define FSTYLE        32
  91. #define GETCOLOR    33
  92. #define GETKEY        34
  93. #define GOSUB        35
  94. #define GOTO        36
  95. #define IF        37
  96. #define IFKEY        38
  97. #define IFMEM        39
  98. #define IFMOUSE        40
  99. #define IFVIDEO        41
  100. #define INT        42
  101. #define LINE        43
  102. #define LINK        44
  103. #define LOCAL        45
  104. #define LOOP        46
  105. #define MARK        47
  106. #define MERGE        48
  107. #define MODE        49
  108. #define MOUSE        50
  109. #define MOVE        51
  110. #define NOISE        52
  111. #define NOTE        53
  112. #define OFFSET        54
  113. #define OPENGL        55
  114. #define OUT        56
  115. #define PALETTE        57
  116. #define PAN        58
  117. #define PFADE        59
  118. #define PFREE        60
  119. #define PGETBUF        61
  120. #define PLOAD        62
  121. #define PNEWBUF        63
  122. #define POINT        64
  123. #define POKE        65
  124. #define POKEL        66
  125. #define POKEW        67
  126. #define POP        68
  127. #define POSITION    69
  128. #define PSAVE        70
  129. #define PSETBU        71
  130. #define PUTDFF        72
  131. #define PUTUP        73
  132. #define REC        74
  133. #define RESETGL        75
  134. #define RESETSCR    76
  135. #define RETURN        77
  136. #define REVPAGE        78
  137. #define SEND        79
  138. #define SET        80
  139. #define SETCOLOR    81
  140. #define SETPAGE        82
  141. #define SETRGB        83
  142. #define SETUPSCR    84
  143. #define SPLIT        85
  144. #define SPREAD        86
  145. #define TEXT        87
  146. #define TILE        88
  147. #define TIMER        89
  148. #define TRAN        90
  149. #define VIDEO        91
  150. #define WAITKEY        92
  151. #define WHEN        93
  152. #define WINDOW        94
  153. #define FADE        95
  154. #define WAIT        96
  155. #define NTOKENS        WAIT+1
  156. #define ARG        128
  157. #define INTEGER        ARG+1
  158. #define STRING        ARG+2
  159. #define IMAGE        ARG+3
  160. #define FONTTYPE    ARG+4
  161. #define EXECTYPE    ARG+5
  162. #define WILDTYPE    ARG+6
  163.  
  164.  
  165. typedef struct {
  166.     char       *name;
  167.     int         type;
  168.     int         w;
  169.     int         h;
  170.     int         d;
  171.     int         xoff;
  172.     int         yoff;
  173.     Pixmap      pix;
  174.     Colormap    cmap;
  175.     int         cmaplen;
  176.     XColor      colors[256];
  177. }           ImageStruct;
  178.  
  179. typedef struct {
  180.     Pixmap      pix;
  181.     int         width;
  182.     int         lbearing;
  183. }           GlyphStruct;
  184.  
  185. typedef struct {
  186.     char       *name;
  187.     int         width;
  188.     int         height;
  189.     GlyphStruct glyphs[256];
  190. }           FontStruct;
  191.  
  192. typedef struct {
  193.     char        fname[14];
  194.     long        offset;
  195. }           FilenameStruct;
  196.  
  197. typedef struct {
  198.     int         token;
  199.     union {
  200.     char       *s;
  201.     int         i;
  202.     ImageStruct *image;
  203.     FontStruct *font;
  204.     struct execStruct *exec;
  205.     }           val;
  206. }           ExecAtom;
  207.  
  208.  
  209. typedef struct {
  210.     char       *string;
  211.     int         ipaddr;
  212. }           LabelStruct;
  213.  
  214. #define MAXCODES 2048    // was 10240
  215. #define MAXLABELS 127    // was 512
  216.  
  217. typedef struct execStruct {
  218.     char       *name;
  219.     int         numcodes;
  220.     ExecAtom    Code[MAXCODES];
  221.     int         numlabels;
  222.     LabelStruct label[MAXLABELS];
  223.     int         currentdataptr;
  224.     int         currentdataend;
  225.     int         ip;
  226.     char       *txt;
  227. }           ExecStruct;
  228.  
  229. extern char *tokens[];
  230.  
  231. #define MAXIMAGES 120         //was 256
  232. extern ImageStruct *image[MAXIMAGES];
  233. extern int  numimages;
  234.  
  235. #define MAXFONTS 6         //was 16
  236. extern FontStruct *font[MAXFONTS];
  237. extern int  numfonts;
  238.  
  239. #define MAXEXECS 6        //was 16
  240. extern ExecStruct *exec[MAXEXECS];
  241. extern int  numexecs;
  242.  
  243. #define MAX(a,b) ((a)>(b)?(a):(b))
  244. #define MIN(a,b) ((a)<(b)?(a):(b))
  245.  
  246. /* EGA palette is 6 bit direct color, byte encoded
  247.  * _________________________________
  248.  * | x | x | r | g | b | R | G | B |
  249.  * ---------------------------------
  250.  * where r == "1 part red" and R == "2 parts red", and x's are ignored.
  251.  * where the 0-3 part sequence is 0, 85, 170, 255.
  252.  */
  253. #define decodepal(pal, one, two) ((((pal)&(one))?85:0)+(((pal)&(two))?170:0))
  254.  
  255. extern u_short egapal[16][3];
  256. extern int  cgapal[3][6];
  257.  
  258. #define EXT_PIC 0
  259. #define EXT_PCX 1
  260. #define EXT_GIF 2
  261. #define EXT_PAL 3
  262. #define EXT_CLP 4
  263. #define EXT_SET 5
  264. #define EXT_FNT 6
  265. #define EXT_TXT 7
  266.  
  267. #define YFLIP(y) (picreg[0]->h-(1)-(y))
  268. #define YFLIPIM(y,im) (YFLIP(y)-(im)->h)
  269.