topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-DrawSprocket.h / h



  /*
       File:       DrawSprocket.h
   
       Contains:   Games Sprockets: DrawSprocket interfaces
   
       Version:    Technology: Draw Sprocket 1.7
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1996-2001 by Apple Computer, Inc., all rights reserved.
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __DRAWSPROCKET__
  define __DRAWSPROCKET__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __EVENTS__
  include <Events.h>
  endif
  
  ifndef __QUICKDRAW__
  include <Quickdraw.h>
  endif
  
  ifndef __QDOFFSCREEN__
  include <QDOffscreen.h>
  endif
  
  ifndef __DISPLAYS__
  include <Displays.h>
  endif
  
  ifndef __MACERRORS__
  include <MacErrors.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=power
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  if PRAGMA_ENUM_ALWAYSINT
      #if defined(__fourbyteints__) && !__fourbyteints__ 
          #define __DRAWSPROCKET__RESTORE_TWOBYTEINTS
          #pragma fourbyteints on
      #endif
      #pragma enumsalwaysint on
  #elif PRAGMA_ENUM_OPTIONS
      #pragma option enum=int
  #elif PRAGMA_ENUM_PACK
      #if __option(pack_enums)
          #define __DRAWSPROCKET__RESTORE_PACKED_ENUMS
          #pragma options(!pack_enums)
      #endif
  endif
  
  /*
  ********************************************************************************
  ** constants
  ********************************************************************************
  */
  
  enum DSpDepthMask {
      kDSpDepthMask_1             = 1 << 0,
      kDSpDepthMask_2             = 1 << 1,
      kDSpDepthMask_4             = 1 << 2,
      kDSpDepthMask_8             = 1 << 3,
      kDSpDepthMask_16            = 1 << 4,
      kDSpDepthMask_32            = 1 << 5,
      kDSpDepthMask_All           = -1L
  };
  typedef enum DSpDepthMask DSpDepthMask;
  
  enum DSpColorNeeds {
      kDSpColorNeeds_DontCare     = 0L,
      kDSpColorNeeds_Request      = 1L,
      kDSpColorNeeds_Require      = 2L
  };
  typedef enum DSpColorNeeds DSpColorNeeds;
  
  enum DSpContextState {
      kDSpContextState_Active     = 0L,
      kDSpContextState_Paused     = 1L,
      kDSpContextState_Inactive   = 2L
  };
  typedef enum DSpContextState DSpContextState;
  
  /* kDSpContextOption_QD3DAccel not yet implemented */
  
  enum DSpContextOption {
                                                                  /*    kDSpContextOption_QD3DAccel       = 1<<0,*/
      kDSpContextOption_PageFlip  = 1 << 1,
      kDSpContextOption_DontSyncVBL = 1 << 2,
      kDSpContextOption_Stereoscopic = 1 << 3
  };
  typedef enum DSpContextOption DSpContextOption;
  
  enum DSpAltBufferOption {
      kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  };
  typedef enum DSpAltBufferOption DSpAltBufferOption;
  
  enum DSpBufferKind {
      kDSpBufferKind_Normal       = 0
  };
  typedef enum DSpBufferKind DSpBufferKind;
  
  enum DSpBlitMode {
      kDSpBlitMode_Plain          = 0,
      kDSpBlitMode_SrcKey         = 1 << 0,
      kDSpBlitMode_DstKey         = 1 << 1,
      kDSpBlitMode_Interpolation  = 1 << 2
  };
  typedef enum DSpBlitMode DSpBlitMode;
  
  /*
  ********************************************************************************
  ** data types
  ********************************************************************************
  */
  typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  typedef struct OpaqueDSpContextReference*  DSpContextReference;
  define kDSpEveryContext ((DSpContextReference)NULL)
  typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  
  struct DSpContextAttributes {
      Fixed                           frequency;
      UInt32                          displayWidth;
      UInt32                          displayHeight;
      UInt32                          reserved1;
      UInt32                          reserved2;
      UInt32                          colorNeeds;
      CTabHandle                      colorTable;
      OptionBits                      contextOptions;
      OptionBits                      backBufferDepthMask;
      OptionBits                      displayDepthMask;
      UInt32                          backBufferBestDepth;
      UInt32                          displayBestDepth;
      UInt32                          pageCount;
      char                            filler[3];
      Boolean                         gameMustConfirmSwitch;
      UInt32                          reserved3[4];
  };
  typedef struct DSpContextAttributes     DSpContextAttributes;
  typedef DSpContextAttributes *          DSpContextAttributesPtr;
  
  struct DSpAltBufferAttributes {
      UInt32                          width;
      UInt32                          height;
      DSpAltBufferOption              options;
      UInt32                          reserved[4];
  };
  typedef struct DSpAltBufferAttributes   DSpAltBufferAttributes;
  typedef struct DSpBlitInfo              DSpBlitInfo;
  typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  
  struct DSpBlitInfo {
      Boolean                         completionFlag;
      char                            filler[3];
      DSpBlitDoneProc                 completionProc;
      DSpContextReference             srcContext;
      CGrafPtr                        srcBuffer;
      Rect                            srcRect;
      UInt32                          srcKey;
  
      DSpContextReference             dstContext;
      CGrafPtr                        dstBuffer;
      Rect                            dstRect;
      UInt32                          dstKey;
  
      DSpBlitMode                     mode;
      UInt32                          reserved[4];
  };
  
  typedef DSpBlitInfo *                   DSpBlitInfoPtr;
  /*
  ********************************************************************************
  ** function prototypes
  ********************************************************************************
  */
  /*
  ** global operations
  */
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( OSStatus )
  DSpStartup                      (void);
  
  EXTERN_API_C( OSStatus )
  DSpShutdown                     (void);
  
  EXTERN_API_C( NumVersion )
  DSpGetVersion                   (void);
  
  EXTERN_API_C( OSStatus )
  DSpGetFirstContext              (DisplayIDType          inDisplayID,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpGetNextContext               (DSpContextReference    inCurrentContext,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpGetCurrentContext            (DisplayIDType          inDisplayID,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpFindBestContext              (DSpContextAttributesPtr  inDesiredAttributes,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpFindBestContextOnDisplayID   (DSpContextAttributesPtr  inDesiredAttributes,
                                   DSpContextReference *  outContext,
                                   DisplayIDType          inDisplayID);
  
  EXTERN_API_C( OSStatus )
  DSpCanUserSelectContext         (DSpContextAttributesPtr  inDesiredAttributes,
                                   Boolean *              outUserCanSelectContext);
  
  EXTERN_API_C( OSStatus )
  DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
                                   DisplayIDType          inDialogDisplayLocation,
                                   DSpEventProcPtr        inEventProc,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpProcessEvent                 (EventRecord *          inEvent,
                                   Boolean *              outEventWasProcessed);
  
  EXTERN_API_C( OSStatus )
  DSpSetBlankingColor             (const RGBColor *       inRGBColor);
  
  EXTERN_API_C( OSStatus )
  DSpSetDebugMode                 (Boolean                inDebugMode);
  
  EXTERN_API_C( OSStatus )
  DSpFindContextFromPoint         (Point                  inGlobalPoint,
                                   DSpContextReference *  outContext);
  
  EXTERN_API_C( OSStatus )
  DSpGetMouse                     (Point *                outGlobalPoint);
  
  /*
  ** alternate buffer operations
  */
  EXTERN_API_C( OSStatus )
  DSpAltBuffer_New                (DSpContextReference    inContext,
                                   Boolean                inVRAMBuffer,
                                   DSpAltBufferAttributes * inAttributes,
                                   DSpAltBufferReference * outAltBuffer);
  
  EXTERN_API_C( OSStatus )
  DSpAltBuffer_Dispose            (DSpAltBufferReference  inAltBuffer);
  
  EXTERN_API_C( OSStatus )
  DSpAltBuffer_InvalRect          (DSpAltBufferReference  inAltBuffer,
                                   const Rect *           inInvalidRect);
  
  EXTERN_API_C( OSStatus )
  DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference  inAltBuffer,
                                   DSpBufferKind          inBufferKind,
                                   CGrafPtr *             outCGrafPtr,
                                   GDHandle *             outGDevice);
  
  /*
  ** context operations
  */
  /* general */
  EXTERN_API_C( OSStatus )
  DSpContext_GetAttributes        (DSpContextReference    inContext,
                                   DSpContextAttributesPtr  outAttributes);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Reserve              (DSpContextReference    inContext,
                                   DSpContextAttributesPtr  inDesiredAttributes);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Queue                (DSpContextReference    inParentContext,
                                   DSpContextReference    inChildContext,
                                   DSpContextAttributesPtr  inDesiredAttributes);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Switch               (DSpContextReference    inOldContext,
                                   DSpContextReference    inNewContext);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Release              (DSpContextReference    inContext);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetDisplayID         (DSpContextReference    inContext,
                                   DisplayIDType *        outDisplayID);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GlobalToLocal        (DSpContextReference    inContext,
                                   Point *                ioPoint);
  
  EXTERN_API_C( OSStatus )
  DSpContext_LocalToGlobal        (DSpContextReference    inContext,
                                   Point *                ioPoint);
  
  EXTERN_API_C( OSStatus )
  DSpContext_SetVBLProc           (DSpContextReference    inContext,
                                   DSpCallbackProcPtr     inProcPtr,
                                   void *                 inRefCon);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetFlattenedSize     (DSpContextReference    inContext,
                                   UInt32 *               outFlatContextSize);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Flatten              (DSpContextReference    inContext,
                                   void *                 outFlatContext);
  
  EXTERN_API_C( OSStatus )
  DSpContext_Restore              (void *                 inFlatContext,
                                   DSpContextReference *  outRestoredContext);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetMonitorFrequency  (DSpContextReference    inContext,
                                   Fixed *                outFrequency);
  
  EXTERN_API_C( OSStatus )
  DSpContext_SetMaxFrameRate      (DSpContextReference    inContext,
                                   UInt32                 inMaxFPS);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetMaxFrameRate      (DSpContextReference    inContext,
                                   UInt32 *               outMaxFPS);
  
  EXTERN_API_C( OSStatus )
  DSpContext_SetState             (DSpContextReference    inContext,
                                   DSpContextState        inState);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetState             (DSpContextReference    inContext,
                                   DSpContextState *      outState);
  
  EXTERN_API_C( OSStatus )
  DSpContext_IsBusy               (DSpContextReference    inContext,
                                   Boolean *              outBusyFlag);
  
  /* dirty rectangles */
  EXTERN_API_C( OSStatus )
  DSpContext_SetDirtyRectGridSize (DSpContextReference    inContext,
                                   UInt32                 inCellPixelWidth,
                                   UInt32                 inCellPixelHeight);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetDirtyRectGridSize (DSpContextReference    inContext,
                                   UInt32 *               outCellPixelWidth,
                                   UInt32 *               outCellPixelHeight);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetDirtyRectGridUnits (DSpContextReference   inContext,
                                   UInt32 *               outCellPixelWidth,
                                   UInt32 *               outCellPixelHeight);
  
  EXTERN_API_C( OSStatus )
  DSpContext_InvalBackBufferRect  (DSpContextReference    inContext,
                                   const Rect *           inRect);
  
  /* underlays */
  EXTERN_API_C( OSStatus )
  DSpContext_SetUnderlayAltBuffer (DSpContextReference    inContext,
                                   DSpAltBufferReference  inNewUnderlay);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetUnderlayAltBuffer (DSpContextReference    inContext,
                                   DSpAltBufferReference * outUnderlay);
  
  /* gamma */
  EXTERN_API_C( OSStatus )
  DSpContext_FadeGammaOut         (DSpContextReference    inContext,
                                   RGBColor *             inZeroIntensityColor);
  
  EXTERN_API_C( OSStatus )
  DSpContext_FadeGammaIn          (DSpContextReference    inContext,
                                   RGBColor *             inZeroIntensityColor);
  
  EXTERN_API_C( OSStatus )
  DSpContext_FadeGamma            (DSpContextReference    inContext,
                                   SInt32                 inPercentOfOriginalIntensity,
                                   RGBColor *             inZeroIntensityColor);
  
  /* buffering */
  EXTERN_API_C( OSStatus )
  DSpContext_SwapBuffers          (DSpContextReference    inContext,
                                   DSpCallbackProcPtr     inBusyProc,
                                   void *                 inUserRefCon);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetBackBuffer        (DSpContextReference    inContext,
                                   DSpBufferKind          inBufferKind,
                                   CGrafPtr *             outBackBuffer);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetFrontBuffer       (DSpContextReference    inContext,
                                   CGrafPtr *             outFrontBuffer);
  
  /* clut operations */
  EXTERN_API_C( OSStatus )
  DSpContext_SetCLUTEntries       (DSpContextReference    inContext,
                                   const ColorSpec *      inEntries,
                                   UInt16                 inStartingEntry,
                                   UInt16                 inLastEntry);
  
  EXTERN_API_C( OSStatus )
  DSpContext_GetCLUTEntries       (DSpContextReference    inContext,
                                   ColorSpec *            outEntries,
                                   UInt16                 inStartingEntry,
                                   UInt16                 inLastEntry);
  
  /* blit operations */
  EXTERN_API_C( OSStatus )
  DSpBlit_Faster                  (DSpBlitInfoPtr         inBlitInfo,
                                   Boolean                inAsyncFlag);
  
  EXTERN_API_C( OSStatus )
  DSpBlit_Fastest                 (DSpBlitInfoPtr         inBlitInfo,
                                   Boolean                inAsyncFlag);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if PRAGMA_ENUM_ALWAYSINT
      #pragma enumsalwaysint reset
      #ifdef __DRAWSPROCKET__RESTORE_TWOBYTEINTS
          #pragma fourbyteints off
      #endif
  #elif PRAGMA_ENUM_OPTIONS
      #pragma option enum=reset
  #elif defined(__DRAWSPROCKET__RESTORE_PACKED_ENUMS)
      #pragma options(pack_enums)
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __DRAWSPROCKET__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.