home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks96 / FinderFlocks.sit / FinderFlocks / DrawSprocket.h < prev    next >
Text File  |  1996-06-22  |  10KB  |  337 lines

  1. /*
  2.  *    File:            DrawSprocket.h
  3.  *
  4.  *    Version:        Apple Game Sprockets 1.0
  5.  *
  6.  *    Dependencies:    Universal Interfaces 2.1.2 on ETO #20
  7.  *
  8.  *    Contents:        Public interfaces for DrawSprocket.
  9.  *
  10.  *    Bugs:            If you find a problem with this file or DrawSprocketLib,
  11.  *                    please send e-mail describing the problem in enough detail
  12.  *                    to be reproduced, and include the version number above, the
  13.  *                    version of MacOS and hardware configuration information to
  14.  *                    sprockets@adr.apple.com.
  15.  *
  16.  *    Copyright (c) 1996 Apple Computer, Inc.  All rights reserved.
  17.  */
  18.  
  19. #ifndef __DRAWSPROCKET__
  20. #define __DRAWSPROCKET__
  21.  
  22. #ifndef __TYPES__
  23. #include <Types.h>
  24. #endif
  25. /*    #include <ConditionalMacros.h>                                */
  26.  
  27. #ifndef __EVENTS__
  28. #include <Events.h>
  29. #endif
  30.  
  31. #ifndef __QUICKDRAW__
  32. #include <Quickdraw.h>
  33. #endif
  34.  
  35. #ifndef __QDOFFSCREEN__
  36. #include <QDOffscreen.h>
  37. #endif
  38.  
  39. #ifndef __DISPLAYS__
  40. #include <Displays.h>
  41. #endif
  42.  
  43.  
  44. #if GENERATINGPOWERPC
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. #if PRAGMA_ALIGN_SUPPORTED
  51. #pragma options align=power
  52. #endif
  53.  
  54. /*
  55. ********************************************************************************
  56. ** error/warning codes
  57. ********************************************************************************
  58. */
  59. enum {
  60.     kDSpNotInitializedErr                = -30440L,
  61.     kDSpSystemSWTooOldErr                = -30441L,
  62.     kDSpInvalidContextErr                = -30442L,
  63.     kDSpInvalidAttributesErr            = -30443L,
  64.     kDSpContextAlreadyReservedErr        = -30444L,
  65.     kDSpContextNotReservedErr            = -30445L,
  66.     kDSpContextNotFoundErr                = -30446L,
  67.     kDSpFrameRateNotReadyErr            = -30447L,
  68.     kDSpConfirmSwitchWarning            = -30448L,
  69.     kDSpInternalErr                        = -30449L
  70. };
  71.  
  72. /*
  73. ********************************************************************************
  74. ** constants
  75. ********************************************************************************
  76. */
  77. typedef UInt32 DSpDepthMask;
  78. enum {
  79.     kDSpDepthMask_1        = 1U<<0,
  80.     kDSpDepthMask_2        = 1U<<1,
  81.     kDSpDepthMask_4        = 1U<<2,
  82.     kDSpDepthMask_8        = 1U<<3,
  83.     kDSpDepthMask_16    = 1U<<4,
  84.     kDSpDepthMask_32    = 1U<<5,
  85.     kDSpDepthMask_All    = ~0U
  86. };
  87.  
  88. typedef UInt32 DSpColorNeeds;
  89. enum {
  90.     kDSpColorNeeds_DontCare    = 0L,
  91.     kDSpColorNeeds_Request    = 1L,
  92.     kDSpColorNeeds_Require    = 2L
  93. };
  94.  
  95. typedef UInt32 DSpContextState;
  96. enum {
  97.     kDSpContextState_Active        = 0L,
  98.     kDSpContextState_Paused        = 1L,
  99.     kDSpContextState_Inactive    = 2L
  100. };
  101.  
  102. typedef UInt32 DSpContextOption;
  103. enum {
  104.     kDSpContextOption_QD3DAccel        = 1U<<0,
  105.     kDSpContextOption_PageFlip        = 1U<<1,
  106.     kDSpContextOption_DontSyncVBL    = 1U<<2
  107. };
  108.  
  109. typedef UInt32 DSpBufferKind;
  110. enum {
  111.     kDSpBufferKind_Normal    = 0U
  112. };
  113.  
  114. /* buffer scaling is not implemented in 1.0 */
  115. typedef UInt32 DSpBufferScale;
  116. enum {
  117.     kDSpBufferScale_1                = 0x00000001U,
  118.     kDSpBufferScale_2                = 0x00000002U,
  119.     kDSpBufferScale_2Interpolate    = 0x80000002U,
  120.     kDSpBufferScale_3                = 0x00000003U,
  121.     kDSpBufferScale_3Interpolate    = 0x80000003U,
  122.     kDSpBufferScale_4                = 0x00000004U,
  123.     kDSpBufferScale_4Interpolate    = 0x80000004U
  124. };
  125.  
  126. /*
  127. ********************************************************************************
  128. ** data types
  129. ********************************************************************************
  130. */
  131. typedef struct DSpAltBufferPrivate *DSpAltBufferReference;
  132. typedef struct DSpContextPrivate *DSpContextReference;
  133.  
  134. #define kDSpEveryContext ((DSpContextReference)NULL)
  135.  
  136. typedef Boolean (*DSpEventProcPtr)( EventRecord *inEvent );
  137. typedef Boolean (*DSpCallbackProcPtr)( DSpContextReference inContext,
  138.             void *inRefCon );
  139.  
  140. struct DSpContextAttributes {
  141.     Fixed                frequency;
  142.     UInt32                displayWidth;
  143.     UInt32                displayHeight;
  144.     UInt32                reserved1;
  145.     UInt32                reserved2;
  146.     UInt32                colorNeeds;
  147.     CTabHandle            colorTable;
  148.     OptionBits            contextOptions;
  149.     OptionBits            backBufferDepthMask;
  150.     OptionBits            displayDepthMask;
  151.     UInt32                backBufferBestDepth;
  152.     UInt32                displayBestDepth;
  153.     UInt32                pageCount;
  154.     Boolean                gameMustConfirmSwitch;
  155.     UInt32                reserved3[4];
  156. };
  157. typedef struct DSpContextAttributes DSpContextAttributes;
  158. typedef struct DSpContextAttributes *DSpContextAttributesPtr;
  159.  
  160. /*
  161. ********************************************************************************
  162. ** function prototypes
  163. ********************************************************************************
  164. */
  165.  
  166. /*
  167. ** global operations
  168. */
  169. OSStatus DSpStartup( void );
  170. OSStatus DSpShutdown( void );
  171.  
  172. OSStatus DSpGetFirstContext( DisplayIDType inDisplayID,
  173.             DSpContextReference *outContext );
  174. OSStatus DSpGetNextContext( DSpContextReference inCurrentContext,
  175.             DSpContextReference *outContext );
  176.  
  177. OSStatus DSpFindBestContext(
  178.             DSpContextAttributesPtr inDesiredAttributes,
  179.             DSpContextReference *outContext );
  180.  
  181. OSStatus DSpCanUserSelectContext(
  182.             DSpContextAttributesPtr inDesiredAttributes,
  183.             Boolean *outUserCanSelectContext );
  184. OSStatus DSpUserSelectContext(
  185.             DSpContextAttributesPtr inDesiredAttributes,
  186.             DisplayIDType inDialogDisplayLocation, DSpEventProcPtr inEventProc,
  187.             DSpContextReference *outContext );
  188.  
  189. OSStatus DSpProcessEvent( EventRecord *inEvent, Boolean *outEventWasProcessed );
  190.  
  191. OSStatus DSpSetBlankingColor( const RGBColor *inRGBColor );
  192.  
  193. OSStatus DSpSetDebugMode( Boolean inDebugMode );
  194.  
  195. OSStatus DSpFindContextFromPoint( Point inGlobalPoint,
  196.             DSpContextReference *outContext );
  197.  
  198. OSStatus DSpGetMouse( Point *outGlobalPoint );
  199.  
  200. /*
  201. ** alternate buffer operations
  202. */
  203. OSStatus DSpAltBuffer_New( DSpContextReference inContext, Boolean inVRAMBuffer,
  204.             UInt32 inReserved, DSpAltBufferReference *outAltBuffer );
  205. OSStatus DSpAltBuffer_Dispose( DSpAltBufferReference inAltBuffer );
  206. OSStatus DSpAltBuffer_InvalRect( DSpAltBufferReference inAltBuffer,
  207.             const Rect *inInvalidRect );
  208. OSStatus DSpAltBuffer_GetCGrafPtr( DSpAltBufferReference inAltBuffer,
  209.             DSpBufferKind inBufferKind, CGrafPtr *outCGrafPtr,
  210.             GDHandle *outGDevice );
  211.  
  212. /*
  213. ** context operations
  214. */
  215.  
  216. /* general */
  217. OSStatus DSpContext_GetAttributes( DSpContextReference inContext,
  218.             DSpContextAttributesPtr outAttributes );
  219.  
  220. OSStatus DSpContext_Reserve( DSpContextReference inContext,
  221.             DSpContextAttributesPtr inDesiredAttributes );
  222. OSStatus DSpContext_Release( DSpContextReference inContext );
  223.  
  224. OSStatus DSpContext_GetDisplayID( DSpContextReference inContext,
  225.             DisplayIDType *outDisplayID );
  226.  
  227. OSStatus DSpContext_GlobalToLocal( DSpContextReference inContext,
  228.             Point *ioPoint );
  229. OSStatus DSpContext_LocalToGlobal( DSpContextReference inContext,
  230.             Point *ioPoint );
  231.  
  232. OSStatus DSpContext_SetVBLProc( DSpContextReference inContext,
  233.             DSpCallbackProcPtr inProcPtr, void *inRefCon );
  234.  
  235. OSStatus DSpContext_GetFlattenedSize( DSpContextReference inContext,
  236.             UInt32 *outFlatContextSize );
  237. OSStatus DSpContext_Flatten( DSpContextReference inContext,
  238.             void *outFlatContext );
  239. OSStatus DSpContext_Restore( void *inFlatContext,
  240.             DSpContextReference *outRestoredContext );
  241.  
  242. OSStatus DSpContext_GetMonitorFrequency( DSpContextReference inContext,
  243.             Fixed *outFrequency );
  244. OSStatus DSpContext_SetMaxFrameRate( DSpContextReference inContext,
  245.             UInt32 inMaxFPS );
  246. OSStatus DSpContext_GetMaxFrameRate( DSpContextReference inContext,
  247.             UInt32 *outMaxFPS );
  248.  
  249. OSStatus DSpContext_SetState( DSpContextReference inContext,
  250.             DSpContextState inState );
  251. OSStatus DSpContext_GetState( DSpContextReference inContext,
  252.             DSpContextState *outState );
  253.  
  254. OSStatus DSpContext_IsBusy( DSpContextReference inContext,
  255.             Boolean *outBusyFlag );
  256.  
  257. /* dirty rectangles */
  258. OSStatus DSpContext_SetDirtyRectGridSize( DSpContextReference inContext,
  259.             UInt32 inCellPixelWidth, UInt32 inCellPixelHeight );
  260. OSStatus DSpContext_GetDirtyRectGridSize( DSpContextReference inContext,
  261.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  262. OSStatus DSpContext_GetDirtyRectGridUnits( DSpContextReference inContext,
  263.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  264. OSStatus DSpContext_InvalBackBufferRect( DSpContextReference inContext,
  265.             const Rect *inRect );
  266.  
  267. /* underlays */
  268. OSStatus DSpContext_SetUnderlayAltBuffer( DSpContextReference inContext,
  269.             DSpAltBufferReference inNewUnderlay );
  270. OSStatus DSpContext_GetUnderlayAltBuffer( DSpContextReference inContext,
  271.             DSpAltBufferReference *outUnderlay );
  272.  
  273. /* gamma */
  274. OSStatus DSpContext_FadeGammaOut( DSpContextReference inContext,
  275.             RGBColor *inZeroIntensityColor );
  276. OSStatus DSpContext_FadeGammaIn( DSpContextReference inContext,
  277.             RGBColor *inZeroIntensityColor );
  278. OSStatus DSpContext_FadeGamma( DSpContextReference inContext,
  279.             SInt32 inPercentOfOriginalIntensity,
  280.             RGBColor *inZeroIntensityColor );
  281.  
  282. /* buffering */
  283. OSStatus DSpContext_SwapBuffers( DSpContextReference inContext,
  284.             DSpCallbackProcPtr inBusyProc, void *inUserRefCon );
  285. OSStatus DSpContext_GetBackBuffer( DSpContextReference inContext,
  286.             DSpBufferKind inBufferKind, CGrafPtr *outBackBuffer );
  287.  
  288. /* clut operations */
  289. OSStatus DSpContext_SetCLUTEntries( DSpContextReference inContext,
  290.             const ColorSpec *inEntries, UInt16 inStartingEntry,
  291.             UInt16 inEntryCount );
  292. OSStatus DSpContext_GetCLUTEntries( DSpContextReference inContext,
  293.             ColorSpec *outEntries, UInt16 inStartingEntry,
  294.             UInt16 inEntryCount );
  295.             
  296. #ifdef __cplusplus
  297. }
  298. #endif
  299.  
  300. /*
  301. ********************************************************************************
  302. ** unimplemented functions
  303. ********************************************************************************
  304. */
  305.  
  306. /*
  307. ** These functions and associated items were slated to make it into the
  308. ** 1.0 release of DrawSprocket, but didn't make it.
  309. */
  310. #if 0
  311.  
  312. /* alt buffer */
  313. OSStatus DSpAltBuffer_RebuildTransparencyMask(
  314.             DSpAltBufferReference inAltBuffer, UInt32 inTransparencyValue );
  315.  
  316. /* pixel scaling */
  317. OSStatus DSpContext_SetScale( DSpContextReference inContext,
  318.             DSpBufferScale inScale );
  319. OSStatus DSpContext_GetScale( DSpContextReference inContext,
  320.             DSpBufferScale *outScale );
  321.  
  322. /* overlays */
  323. OSStatus DSpContext_SetOverlayAltBuffer( DSpContextReference inContext,
  324.             DSpAltBufferReference inNewOverlay );
  325. OSStatus DSpContext_GetOverlayAltBuffer( DSpContextReference inContext,
  326.             DSpAltBufferReference *outOverlay );
  327.             
  328. #endif
  329.  
  330.  
  331. #if PRAGMA_ALIGN_SUPPORTED
  332. #pragma options align=reset
  333. #endif
  334.  
  335. #endif /* GENERATINGPOWERPC */
  336. #endif /* __DRAWSPROCKET__ */
  337.