topical media & game development

talk show tell print

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



  /*
       File:       GXEnvironment.h
   
       Contains:   QuickDraw GX environment constants and interfaces
   
       Version:    Technology: Quickdraw GX 1.1
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1994-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 __GXENVIRONMENT__
  define __GXENVIRONMENT__
  
  ifndef __CONDITIONALMACROS__
  include <ConditionalMacros.h>
  endif
  
  ifndef __MIXEDMODE__
  include <MixedMode.h>
  endif
  
  ifndef __QUICKDRAW__
  include <Quickdraw.h>
  endif
  
  ifndef __GXTYPES__
  include <GXTypes.h>
  endif
  
  ifndef __CMAPPLICATION__
  include <CMApplication.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=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  if defined(__MWERKS__) && TARGET_CPU_68K
      #pragma push
      #pragma pointers_in_D0
  endif
   
  /* old header = graphics macintosh */
   
  enum {
      defaultPollingHandlerFlags  = 0x00,
      okToSwitchDuringPollFlag    = 0x00,
      dontSwitchDuringPollFlag    = 0x01
  };
  
  typedef long                            gxPollingHandlerFlags;
  typedef CALLBACK_API_C( void , gxPollingHandlerProcPtr )(long reference, gxPollingHandlerFlags flags);
  typedef STACK_UPP_TYPE(gxPollingHandlerProcPtr)                 gxPollingHandlerUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(gxPollingHandlerUPP)
      NewgxPollingHandlerUPP         (gxPollingHandlerProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposegxPollingHandlerUPP     (gxPollingHandlerUPP     userUPP);
  
      EXTERN_API(void)
      InvokegxPollingHandlerUPP      (long                    reference,
                                      gxPollingHandlerFlags   flags,
                                      gxPollingHandlerUPP     userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppgxPollingHandlerProcInfo = 0x000003C1 };              /* no_return_value Func(4_bytes, 4_bytes) */
      #define NewgxPollingHandlerUPP(userRoutine)                     (gxPollingHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxPollingHandlerProcInfo, GetCurrentArchitecture())
      #define DisposegxPollingHandlerUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
      #define InvokegxPollingHandlerUPP(reference, flags, userUPP)    CALL_TWO_PARAMETER_UPP((userUPP), uppgxPollingHandlerProcInfo, (reference), (flags))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewgxPollingHandlerProc(userRoutine)                    NewgxPollingHandlerUPP(userRoutine)
  define CallgxPollingHandlerProc(userRoutine, reference, flags) InvokegxPollingHandlerUPP(reference, flags, userRoutine)
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( gxPollingHandlerUPP )
  GXGetGraphicsPollingHandler     (long *                 reference)                          THREEWORDINLINE(0x303C, 0x0245, 0xA832);
  
  EXTERN_API_C( void )
  GXSetGraphicsPollingHandler     (gxPollingHandlerUPP    handler,
                                   long                   reference)                          THREEWORDINLINE(0x303C, 0x0246, 0xA832);
  
  /* old header = graphics toolbox */
   
  
  /* QD to QD GX Translator typedefs */
  endif  /* CALL_NOT_IN_CARBON */
  
  enum {
      gxDefaultOptionsTranslation = 0x0000,
      gxOptimizedTranslation      = 0x0001,
      gxReplaceLineWidthTranslation = 0x0002,
      gxSimpleScalingTranslation  = 0x0004,
      gxSimpleGeometryTranslation = 0x0008,                       /* implies simple scaling */
      gxSimpleLinesTranslation    = 0x000C,                       /* implies simple geometry & scaling */
      gxLayoutTextTranslation     = 0x0010,                       /* turn on gxLine layout (normally off) */
      gxRasterTargetTranslation   = 0x0020,
      gxPostScriptTargetTranslation = 0x0040,
      gxVectorTargetTranslation   = 0x0080,
      gxPDDTargetTranslation      = 0x0100,
      gxDontConvertPatternsTranslation = 0x1000,
      gxDontSplitBitmapsTranslation = 0x2000
  };
  
  typedef long                            gxTranslationOption;
  enum {
      gxContainsFormsBegin        = 0x0001,
      gxContainsFormsEnd          = 0x0002,
      gxContainsPostScript        = 0x0004,
      gxContainsEmptyPostScript   = 0x0008
  };
  
  typedef long                            gxTranslationStatistic;
  enum {
      gxQuickDrawPictTag          = FOUR_CHAR_CODE('pict')
  };
  
  struct gxQuickDrawPict {
                                                                  /* translator inputs */
      gxTranslationOption             options;
      Rect                            srcRect;
      Point                           styleStretch;
  
                                                                  /* size of quickdraw picture data */
      unsigned long                   dataLength;
  
                                                                  /* file alias */
      gxBitmapDataSourceAlias         alias;
  };
  typedef struct gxQuickDrawPict          gxQuickDrawPict;
  /* WindowRecord utilities */
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( gxViewPort )
  GXNewWindowViewPort             (WindowPtr              qdWindow)                           THREEWORDINLINE(0x303C, 0x0236, 0xA832);
  
  EXTERN_API_C( gxViewPort )
  GXGetWindowViewPort             (WindowPtr              qdWindow)                           THREEWORDINLINE(0x303C, 0x0237, 0xA832);
  
  EXTERN_API_C( WindowPtr )
  GXGetViewPortWindow             (gxViewPort             portOrder)                          THREEWORDINLINE(0x303C, 0x0238, 0xA832);
  
  /* GDevice utilities */
  EXTERN_API_C( GDHandle )
  GXGetViewDeviceGDevice          (gxViewDevice           theDevice)                          THREEWORDINLINE(0x303C, 0x0239, 0xA832);
  
  EXTERN_API_C( gxViewDevice )
  GXGetGDeviceViewDevice          (GDHandle               qdGDevice)                          THREEWORDINLINE(0x303C, 0x023A, 0xA832);
  
  /* gxPoint utilities */
  EXTERN_API_C( void )
  GXConvertQDPoint                (const Point *          shortPt,
                                   gxViewPort             portOrder,
                                   gxPoint *              fixedPt)                            THREEWORDINLINE(0x303C, 0x023B, 0xA832);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  typedef CALLBACK_API_C( OSErr , gxShapeSpoolProcPtr )(gxShape toSpool, long refCon);
  /* printing utilities typedef */
  typedef CALLBACK_API_C( void , gxUserViewPortFilterProcPtr )(gxShape toFilter, gxViewPort portOrder, long refCon);
  typedef CALLBACK_API_C( long , gxConvertQDFontProcPtr )(gxStyle dst, long txFont, long txFace);
  typedef STACK_UPP_TYPE(gxShapeSpoolProcPtr)                     gxShapeSpoolUPP;
  typedef STACK_UPP_TYPE(gxUserViewPortFilterProcPtr)             gxUserViewPortFilterUPP;
  typedef STACK_UPP_TYPE(gxConvertQDFontProcPtr)                  gxConvertQDFontUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(gxShapeSpoolUPP)
      NewgxShapeSpoolUPP             (gxShapeSpoolProcPtr     userRoutine);
  
      EXTERN_API(gxUserViewPortFilterUPP)
      NewgxUserViewPortFilterUPP     (gxUserViewPortFilterProcPtr userRoutine);
  
      EXTERN_API(gxConvertQDFontUPP)
      NewgxConvertQDFontUPP          (gxConvertQDFontProcPtr  userRoutine);
  
      EXTERN_API(void)
      DisposegxShapeSpoolUPP         (gxShapeSpoolUPP         userUPP);
  
      EXTERN_API(void)
      DisposegxUserViewPortFilterUPP    (gxUserViewPortFilterUPP userUPP);
  
      EXTERN_API(void)
      DisposegxConvertQDFontUPP      (gxConvertQDFontUPP      userUPP);
  
      EXTERN_API(OSErr)
      InvokegxShapeSpoolUPP          (gxShape                 toSpool,
                                      long                    refCon,
                                      gxShapeSpoolUPP         userUPP);
  
      EXTERN_API(void)
      InvokegxUserViewPortFilterUPP    (gxShape               toFilter,
                                      gxViewPort              portOrder,
                                      long                    refCon,
                                      gxUserViewPortFilterUPP userUPP);
  
      EXTERN_API(long)
      InvokegxConvertQDFontUPP       (gxStyle                 dst,
                                      long                    txFont,
                                      long                    txFace,
                                      gxConvertQDFontUPP      userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppgxShapeSpoolProcInfo = 0x000003E1 };                  /* 2_bytes Func(4_bytes, 4_bytes) */
      enum { uppgxUserViewPortFilterProcInfo = 0x00000FC1 };          /* no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppgxConvertQDFontProcInfo = 0x00000FF1 };               /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
      #define NewgxShapeSpoolUPP(userRoutine)                         (gxShapeSpoolUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxShapeSpoolProcInfo, GetCurrentArchitecture())
      #define NewgxUserViewPortFilterUPP(userRoutine)                 (gxUserViewPortFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxUserViewPortFilterProcInfo, GetCurrentArchitecture())
      #define NewgxConvertQDFontUPP(userRoutine)                      (gxConvertQDFontUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxConvertQDFontProcInfo, GetCurrentArchitecture())
      #define DisposegxShapeSpoolUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
      #define DisposegxUserViewPortFilterUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
      #define DisposegxConvertQDFontUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
      #define InvokegxShapeSpoolUPP(toSpool, refCon, userUPP)         (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppgxShapeSpoolProcInfo, (toSpool), (refCon))
      #define InvokegxUserViewPortFilterUPP(toFilter, portOrder, refCon, userUPP)  CALL_THREE_PARAMETER_UPP((userUPP), uppgxUserViewPortFilterProcInfo, (toFilter), (portOrder), (refCon))
      #define InvokegxConvertQDFontUPP(dst, txFont, txFace, userUPP)  (long)CALL_THREE_PARAMETER_UPP((userUPP), uppgxConvertQDFontProcInfo, (dst), (txFont), (txFace))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewgxShapeSpoolProc(userRoutine)                        NewgxShapeSpoolUPP(userRoutine)
  define NewgxUserViewPortFilterProc(userRoutine)                NewgxUserViewPortFilterUPP(userRoutine)
  define NewgxConvertQDFontProc(userRoutine)                     NewgxConvertQDFontUPP(userRoutine)
  define CallgxShapeSpoolProc(userRoutine, toSpool, refCon)      InvokegxShapeSpoolUPP(toSpool, refCon, userRoutine)
  define CallgxUserViewPortFilterProc(userRoutine, toFilter, portOrder, refCon) InvokegxUserViewPortFilterUPP(toFilter, portOrder, refCon, userRoutine)
  define CallgxConvertQDFontProc(userRoutine, dst, txFont, txFace) InvokegxConvertQDFontUPP(dst, txFont, txFace, userRoutine)
  
  typedef gxShapeSpoolProcPtr             gxShapeSpoolFunction;
  typedef gxUserViewPortFilterProcPtr     gxUserViewPortFilter;
  typedef gxConvertQDFontProcPtr          gxConvertQDFontFunction;
  /* mouse utilities */
  /* return mouse location in fixed-gxPoint global space */
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( void )
  GXGetGlobalMouse                (gxPoint *              globalPt)                           THREEWORDINLINE(0x303C, 0x023C, 0xA832);
  
  /* return fixed-gxPoint local mouse (gxViewPort == 0 --> default) */
  EXTERN_API_C( void )
  GXGetViewPortMouse              (gxViewPort             portOrder,
                                   gxPoint *              localPt)                            THREEWORDINLINE(0x303C, 0x023D, 0xA832);
  
  /* printing utilities */
  EXTERN_API_C( gxUserViewPortFilterUPP )
  GXGetViewPortFilter             (gxViewPort             portOrder,
                                   long *                 refCon)                             THREEWORDINLINE(0x303C, 0x025E, 0xA832);
  
  EXTERN_API_C( void )
  GXSetViewPortFilter             (gxViewPort             portOrder,
                                   gxUserViewPortFilterUPP  filter,
                                   long                   refCon)                             THREEWORDINLINE(0x303C, 0x023E, 0xA832);
  
  /* QD to QD GX Translator functions */
  EXTERN_API_C( void )
  GXInstallQDTranslator           (GrafPtr                port,
                                   gxTranslationOption    options,
                                   const Rect *           srcRect,
                                   const Rect *           dstRect,
                                   Point                  styleStrech,
                                   gxShapeSpoolUPP        userFunction,
                                   void *                 reference)                          THREEWORDINLINE(0x303C, 0x023F, 0xA832);
  
  EXTERN_API_C( gxTranslationStatistic )
  GXRemoveQDTranslator            (GrafPtr                port,
                                   gxTranslationStatistic * statistic)                        THREEWORDINLINE(0x303C, 0x0240, 0xA832);
  
  EXTERN_API_C( gxShape )
  GXConvertPICTToShape            (PicHandle              pict,
                                   gxTranslationOption    options,
                                   const Rect *           srcRect,
                                   const Rect *           dstRect,
                                   Point                  styleStretch,
                                   gxShape                destination,
                                   gxTranslationStatistic * stats)                            THREEWORDINLINE(0x303C, 0x0241, 0xA832);
  
  /* Find the best GX style given a QD font and face. Called by the QD->GX translator */
  EXTERN_API_C( long )
  GXConvertQDFont                 (gxStyle                theStyle,
                                   long                   txFont,
                                   long                   txFace)                             THREEWORDINLINE(0x303C, 0x0242, 0xA832);
  
  EXTERN_API_C( gxConvertQDFontUPP )
  GXGetConvertQDFont              (void)                                                      THREEWORDINLINE(0x303C, 0x0243, 0xA832);
  
  EXTERN_API_C( void )
  GXSetConvertQDFont              (gxConvertQDFontUPP     userFunction)                       THREEWORDINLINE(0x303C, 0x0244, 0xA832);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  typedef unsigned long                   gxProfilePoolAttributes;
  
  struct gxFlatProfileListItem {
      gxProfilePoolAttributes         attributes;                 /* information about this particular profile's source*/
      CMProfileRef                    profileRef;                 /* reference to profile, only valid before shape is disposed*/
      CMProfileIdentifier             identifier;                 /* information on how to find the profile upon unflattening*/
  };
  typedef struct gxFlatProfileListItem    gxFlatProfileListItem;
  
   
  if defined(__MWERKS__) && TARGET_CPU_68K
      #pragma pop
  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 /* __GXENVIRONMENT__ */
  
  


(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.