CGLTYPE.H 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. #ifndef __CGL_TYPE__
  2. #define __CGL_TYPE__
  3. /*********************************************************************
  4. cgltype.h
  5. Copyright (c) Creative Technology Ltd. 1994-1995. All Rights Reserved.
  6. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  7. KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  8. IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  9. PURPOSE.
  10. *********************************************************************/
  11. /*
  12. * @@ SOURCE DOCUMENTATION
  13. *
  14. * TITLE : cgltype.h
  15. *
  16. * VERSION : 0.01
  17. *
  18. * DATE : 1 December 1994
  19. *
  20. * AUTHOR : Philip Teo
  21. * Toh Chin Kok
  22. * Burak Alp
  23. *
  24. * BRIEF : This file includes all definition of structure and
  25. * data type used.
  26. *
  27. * @@ LOG CHANGE
  28. * DATE VERSION REV DESCRIPTION
  29. * 13 Feb 95 1.0 Philip Teo First library version
  30. * 11 Mar 95 1.1 Philip Teo Remove CGL_CI_ST structure.
  31. * Red component of CGL_COLOR_ST
  32. * structure will be used as index
  33. * for color index mode.
  34. * 24 Jul 95 1.2 Loy Y.C. Added in macros for WIN32
  35. */
  36. /////////////////////////
  37. // Type Definition //
  38. /////////////////////////
  39. #if (defined(__32BIT_COMPILER__) || defined(__W32BIT_COMPILER__))
  40. #if defined(__W32BIT_COMPILER__)
  41. #define CGL_API(f) __stdcall f
  42. #define CGLAPI __stdcall
  43. #define FPOINTER *
  44. #else
  45. #if defined(CGLCDL)
  46. #define CGL_API(f) (*f)
  47. #else
  48. #define CGL_API(f) f
  49. #endif
  50. #define CGLAPI
  51. #define FPOINTER far *
  52. #endif //-- 32BIT_COMPILER
  53. #define PTR *
  54. #else
  55. #define PTR far *
  56. #define FPOINTER far *
  57. #define CGL_API(f) f
  58. #define CGLAPI
  59. #endif
  60. typedef void PTR CGL_PTR;
  61. typedef void FPOINTER CGL_FPTR;
  62. typedef unsigned char CGL_UINT8, PTR CGL_UINT8P;
  63. typedef unsigned char CGL_STRING;
  64. typedef short CGL_INT16, PTR CGL_INT16P;
  65. typedef unsigned short CGL_UINT16, PTR CGL_UINT16P;
  66. typedef long CGL_INT32, PTR CGL_INT32P;
  67. typedef unsigned long CGL_UINT32, PTR CGL_UINT32P;
  68. /////////////////////////
  69. // Fixed Point Version //
  70. /////////////////////////
  71. #if defined(CGLFLOAT)
  72. typedef float CGL_FLOAT32;
  73. typedef CGL_FLOAT32 CGL_TYPE;
  74. #else
  75. typedef long CGL_TYPE;
  76. #endif
  77. //////////////////////////
  78. // Vertices Structure //
  79. //////////////////////////
  80. typedef struct CGL_VERTEX3D
  81. { CGL_TYPE x,y,z;
  82. } CGL_VERTEX3D_ST,
  83. PTR CGL_VERTEX3D_PST;
  84. typedef struct CGL_VERTEX2D
  85. { CGL_TYPE x,y;
  86. } CGL_VERTEX2D_ST,
  87. PTR CGL_VERTEX2D_PST;
  88. typedef struct CGL_SPAN2D
  89. { CGL_TYPE x;
  90. } CGL_SPAN2D_ST,
  91. PTR CGL_SPAN2D_PST;
  92. typedef struct CGL_SPAN3D
  93. { CGL_TYPE x;
  94. CGL_TYPE z;
  95. } CGL_SPAN3D_ST,
  96. PTR CGL_SPAN3D_PST;
  97. typedef struct CGL_TEXTURE2D
  98. {
  99. CGL_TYPE s,t;
  100. } CGL_TEXTURE2D_ST,
  101. PTR CGL_TEXTURE2D_PST;
  102. typedef struct CGL_TEXTURE3D
  103. {
  104. CGL_TYPE s,t,q;
  105. } CGL_TEXTURE3D_ST,
  106. PTR CGL_TEXTURE3D_PST;
  107. typedef struct CGL_COLOR
  108. {
  109. CGL_UINT8 bBlue,bGreen,bRed,bAlpha;
  110. } CGL_COLOR_ST,
  111. PTR CGL_COLOR_PST;
  112. typedef struct CGL_DEPTHCUE
  113. { CGL_TYPE d;
  114. } CGL_DEPTHCUE_ST,
  115. PTR CGL_DEPTHCUE_PST;
  116. ////////////////////////////
  117. // Primitive Operation //
  118. ////////////////////////////
  119. //*************************
  120. // Property Enable Mask
  121. //*************************
  122. union CGL_PROPERTY
  123. {
  124. CGL_UINT16 i;
  125. struct {
  126. unsigned shade : 1;
  127. unsigned depth : 1;
  128. unsigned stencil : 1;
  129. unsigned blend : 1;
  130. unsigned texture : 1;
  131. unsigned depthcue : 1;
  132. unsigned logicalOps : 1;
  133. unsigned bitMask : 1;
  134. unsigned stipple : 1;
  135. unsigned perspective : 1;
  136. unsigned reserved : 6;
  137. } u;
  138. };
  139. //***********************
  140. // Primitive Property
  141. //***********************
  142. ///////////////////////////////
  143. // Stencil Structure //
  144. ///////////////////////////////
  145. typedef struct CGL_STENCIL
  146. {
  147. CGL_UINT16 writeMask;
  148. CGL_UINT32 dwStencilRef;
  149. } CGL_STENCIL_ST,
  150. PTR CGL_STENCIL_PST;
  151. ///////////////////////////////
  152. // Depth Structure //
  153. ///////////////////////////////
  154. typedef struct CGL_DEPTH
  155. {
  156. CGL_UINT16 writeEnable;
  157. } CGL_DEPTH_ST,
  158. PTR CGL_DEPTH_PST;
  159. ///////////////////////////////
  160. // Alpha Blending Structure //
  161. ///////////////////////////////
  162. typedef struct CGL_ALPHABLEND
  163. {
  164. CGL_UINT8 bSrcAlphaValue;
  165. } CGL_ALPHABLEND_ST,
  166. PTR CGL_ALPHABLEND_PST;
  167. ////////////////////////////////////
  168. // Texture Environment Structure //
  169. ////////////////////////////////////
  170. typedef struct CGL_TEXTUREENV
  171. {
  172. CGL_UINT32 dwTextureAddress;
  173. CGL_UINT16 wBufferWidth;
  174. CGL_UINT16 wWidth;
  175. CGL_UINT16 wHeight;
  176. CGL_UINT16 wColorOrder;
  177. CGL_UINT16 wColorFormat;
  178. CGL_UINT16 wTextureMode;
  179. CGL_UINT16 wS_Wrap;
  180. CGL_UINT16 wT_Wrap;
  181. CGL_UINT16 wOverlay;
  182. CGL_UINT16 wChroma;
  183. CGL_COLOR_ST stChromaColor;
  184. CGL_INT16 wTextureFilter;
  185. } CGL_TEXTUREENV_ST,
  186. PTR CGL_TEXTUREENV_PST;
  187. //////////////////////////////////////////////////////
  188. /////////////////////////
  189. // Render Fixed Header //
  190. /////////////////////////
  191. typedef struct CGL_RENDERFIX
  192. {
  193. CGL_UINT16 wOperation;
  194. CGL_UINT32 dwNoOfVertices;
  195. CGL_UINT16 wPrimitiveType;
  196. union CGL_PROPERTY uPropertyEnableMask;
  197. CGL_DEPTH_PST pDepth;
  198. CGL_STENCIL_PST pStencil;
  199. CGL_ALPHABLEND_PST pBlend;
  200. CGL_TEXTUREENV_PST pTextureEnv;
  201. CGL_PTR pVertex;
  202. CGL_PTR pTexture;
  203. CGL_PTR pColor;
  204. CGL_PTR pDepthCue;
  205. } CGL_RENDERFIX_ST,
  206. PTR CGL_RENDERFIX_PST;
  207. ///////////////////////
  208. // Copy Fixed Header //
  209. ///////////////////////
  210. typedef struct CGL_COPYFIX
  211. {
  212. CGL_UINT16 wOperation;
  213. CGL_UINT32 dwNoOfVertices;
  214. CGL_UINT16 wPrimitiveType;
  215. CGL_UINT16 wBufferMask;
  216. CGL_TYPE wXSrc;
  217. CGL_TYPE wYSrc;
  218. CGL_VERTEX2D_PST pVertex2D;
  219. } CGL_COPYFIX_ST,
  220. PTR CGL_COPYFIX_PST;
  221. /////////////////////////////
  222. // Texture Management //
  223. /////////////////////////////
  224. typedef struct CGL_TEXTURELD
  225. {
  226. CGL_UINT32 dwFreeByteAddress;
  227. CGL_UINT32 dwTextureAddress;
  228. CGL_UINT16 wBufferWidth;
  229. CGL_UINT16 wWidth;
  230. CGL_UINT16 wHeight;
  231. CGL_UINT16 wColorFormat;
  232. CGL_UINT32 dwMemoryLeft;
  233. CGL_PTR pHostBuffer;
  234. } CGL_TEXTURELD_ST,
  235. PTR CGL_TEXTURELD_PST;
  236. /////////////////////////
  237. // Buffer Management //
  238. /////////////////////////
  239. typedef struct CGL_RECT {
  240. CGL_UINT16 wX;
  241. CGL_UINT16 wY;
  242. CGL_UINT16 wWidth;
  243. CGL_UINT16 wHeight;
  244. } CGL_RECT_ST,
  245. PTR CGL_RECT_PST;
  246. typedef struct CGL_UPDN {
  247. CGL_UINT16 wBufferType;
  248. CGL_UINT16 wColorFormat;
  249. CGL_PTR pHostBuffer;
  250. CGL_RECT_ST stBox;
  251. CGL_UINT16 wXSrc;
  252. CGL_UINT16 wYSrc;
  253. CGL_UINT16 wBufferWidth;
  254. CGL_UINT16 wPixelOps;
  255. CGL_UINT8 bConstantAlpha; //-- for CGL_BLEND_IMAGE only
  256. } CGL_UPDN_ST,
  257. PTR CGL_UPDN_PST;
  258. ////////////////////////////
  259. // Screen Management //
  260. ////////////////////////////
  261. typedef struct CGL_SCREEN
  262. {
  263. CGL_UINT16 wReference;
  264. CGL_UINT16 wMode;
  265. CGL_UINT16 wColorFormat;
  266. CGL_UINT16 wBuffers;
  267. CGL_UINT16 wOption;
  268. CGL_UINT32 dwUB_BufferSize;
  269. } CGL_SCREEN_ST,
  270. PTR CGL_SCREEN_PST;
  271. //////////////////////////////////
  272. // Query Mangement //
  273. //////////////////////////////////
  274. // Pick/Extent
  275. typedef struct CGL_PICK {
  276. CGL_RECT_ST stRect;
  277. CGL_UINT16 wStatistic;
  278. } CGL_PICK_ST,
  279. PTR CGL_PICK_PST;
  280. typedef struct CGL_EXTENT {
  281. CGL_UINT16 wStatistic;
  282. } CGL_EXTENT_ST,
  283. PTR CGL_EXTENT_PST;
  284. // Hardware Configuration
  285. union CGL_HARDWARE
  286. { CGL_UINT32 i;
  287. struct
  288. {
  289. unsigned Texture : 1;
  290. unsigned Stipple : 1;
  291. unsigned LineStipple : 1;
  292. unsigned DepthCue : 1;
  293. unsigned Shade : 1;
  294. unsigned Overlay : 1;
  295. unsigned Chroma : 1;
  296. unsigned Dither : 1;
  297. unsigned AlphaBlend : 1;
  298. unsigned Pick : 1;
  299. unsigned Extent : 1;
  300. unsigned Bitmask : 1;
  301. unsigned LogicOps : 1;
  302. unsigned DepthTest : 1;
  303. unsigned Clipping : 1;
  304. unsigned Stencil : 1;
  305. unsigned reserved : 16;
  306. } u;
  307. };
  308. typedef struct CGL_GPCONFIG
  309. {
  310. CGL_STRING Version[80];
  311. CGL_UINT16 wBoard_ID;
  312. CGL_UINT32 dwVRAM_Size;
  313. CGL_UINT32 dwDRAM_Size;
  314. CGL_UINT16 wMaxColorFormat;
  315. CGL_UINT16 wCurrentMode;
  316. union CGL_HARDWARE uHardwareSupport;
  317. } CGL_GPCONFIG_ST,
  318. PTR CGL_GPCONFIG_PST;
  319. typedef void (*CGL_ISRPROC)(CGL_UINT32 ulMask);
  320. #endif // __CGL_TYPE__