topical media & game development

talk show tell print

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



  /*
       File:       PictUtils.h
   
       Contains:   Picture Utilities Interfaces.
   
       Version:    Technology: Mac OS 8.5
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1990-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 __PICTUTILS__
  define __PICTUTILS__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __PALETTES__
  include <Palettes.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
  
  /* verbs for the GetPictInfo, GetPixMapInfo, and NewPictInfo calls */
  enum {
      returnColorTable            = 0x0001,
      returnPalette               = 0x0002,
      recordComments              = 0x0004,
      recordFontInfo              = 0x0008,
      suppressBlackAndWhite       = 0x0010
  };
  
  enum {
                                                                  /* color pick methods */
      systemMethod                = 0,                            /* system color pick method */
      popularMethod               = 1,                            /* method that chooses the most popular set of colors */
      medianMethod                = 2                             /* method that chooses a good average mix of colors */
  };
  
  enum {
                                                                  /* color bank types */
      ColorBankIsCustom           = -1,
      ColorBankIsExactAnd555      = 0,
      ColorBankIs555              = 1
  };
  
  typedef long                            PictInfoID;
  
  struct CommentSpec {
      short                           count;                      /* number of occurrances of this comment ID */
      short                           ID;                         /* ID for the comment in the picture */
  };
  typedef struct CommentSpec              CommentSpec;
  typedef CommentSpec *                   CommentSpecPtr;
  typedef CommentSpecPtr *                CommentSpecHandle;
  
  struct FontSpec {
      short                           pictFontID;                 /* ID of the font in the picture */
      short                           sysFontID;                  /* ID of the same font in the current system file */
      long                            size[4];                    /* bit array of all the sizes found (1..127) (bit 0 means > 127) */
      short                           style;                      /* combined style of all occurrances of the font */
      long                            nameOffset;                 /* offset into the fontNamesHdl handle for the font's name */
  };
  typedef struct FontSpec                 FontSpec;
  typedef FontSpec *                      FontSpecPtr;
  typedef FontSpecPtr *                   FontSpecHandle;
  
  struct PictInfo {
      short                           version;                    /* this is always zero, for now */
      long                            uniqueColors;               /* the number of actual colors in the picture(s)/pixmap(s) */
      PaletteHandle                   thePalette;                 /* handle to the palette information */
      CTabHandle                      theColorTable;              /* handle to the color table */
      Fixed                           hRes;                       /* maximum horizontal resolution for all the pixmaps */
      Fixed                           vRes;                       /* maximum vertical resolution for all the pixmaps */
      short                           depth;                      /* maximum depth for all the pixmaps (in the picture) */
      Rect                            sourceRect;                 /* the picture frame rectangle (this contains the entire picture) */
      long                            textCount;                  /* total number of text strings in the picture */
      long                            lineCount;                  /* total number of lines in the picture */
      long                            rectCount;                  /* total number of rectangles in the picture */
      long                            rRectCount;                 /* total number of round rectangles in the picture */
      long                            ovalCount;                  /* total number of ovals in the picture */
      long                            arcCount;                   /* total number of arcs in the picture */
      long                            polyCount;                  /* total number of polygons in the picture */
      long                            regionCount;                /* total number of regions in the picture */
      long                            bitMapCount;                /* total number of bitmaps in the picture */
      long                            pixMapCount;                /* total number of pixmaps in the picture */
      long                            commentCount;               /* total number of comments in the picture */
      long                            uniqueComments;             /* the number of unique comments in the picture */
      CommentSpecHandle               commentHandle;              /* handle to all the comment information */
      long                            uniqueFonts;                /* the number of unique fonts in the picture */
      FontSpecHandle                  fontHandle;                 /* handle to the FontSpec information */
      Handle                          fontNamesHandle;            /* handle to the font names */
      long                            reserved1;
      long                            reserved2;
  };
  typedef struct PictInfo                 PictInfo;
  typedef PictInfo *                      PictInfoPtr;
  typedef PictInfoPtr *                   PictInfoHandle;
  typedef CALLBACK_API( OSErr , InitPickMethodProcPtr )(SInt16 colorsRequested, UInt32 *dataRef, SInt16 *colorBankType);
  typedef CALLBACK_API( OSErr , RecordColorsProcPtr )(UInt32 dataRef, RGBColor *colorsArray, SInt32 colorCount, SInt32 *uniqueColors);
  typedef CALLBACK_API( OSErr , CalcColorTableProcPtr )(UInt32 dataRef, SInt16 colorsRequested, void *colorBankPtr, CSpecArray resultPtr);
  typedef CALLBACK_API( OSErr , DisposeColorPickMethodProcPtr )(UInt32 dataRef);
  typedef STACK_UPP_TYPE(InitPickMethodProcPtr)                   InitPickMethodUPP;
  typedef STACK_UPP_TYPE(RecordColorsProcPtr)                     RecordColorsUPP;
  typedef STACK_UPP_TYPE(CalcColorTableProcPtr)                   CalcColorTableUPP;
  typedef STACK_UPP_TYPE(DisposeColorPickMethodProcPtr)           DisposeColorPickMethodUPP;
  if OPAQUE_UPP_TYPES
      EXTERN_API(InitPickMethodUPP)
      NewInitPickMethodUPP           (InitPickMethodProcPtr   userRoutine);
  
      EXTERN_API(RecordColorsUPP)
      NewRecordColorsUPP             (RecordColorsProcPtr     userRoutine);
  
      EXTERN_API(CalcColorTableUPP)
      NewCalcColorTableUPP           (CalcColorTableProcPtr   userRoutine);
  
      EXTERN_API(DisposeColorPickMethodUPP)
      NewDisposeColorPickMethodUPP    (DisposeColorPickMethodProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeInitPickMethodUPP       (InitPickMethodUPP       userUPP);
  
      EXTERN_API(void)
      DisposeRecordColorsUPP         (RecordColorsUPP         userUPP);
  
      EXTERN_API(void)
      DisposeCalcColorTableUPP       (CalcColorTableUPP       userUPP);
  
      EXTERN_API(void)
      DisposeDisposeColorPickMethodUPP    (DisposeColorPickMethodUPP userUPP);
  
      EXTERN_API(OSErr)
      InvokeInitPickMethodUPP        (SInt16                  colorsRequested,
                                      UInt32 *                dataRef,
                                      SInt16 *                colorBankType,
                                      InitPickMethodUPP       userUPP);
  
      EXTERN_API(OSErr)
      InvokeRecordColorsUPP          (UInt32                  dataRef,
                                      RGBColor *              colorsArray,
                                      SInt32                  colorCount,
                                      SInt32 *                uniqueColors,
                                      RecordColorsUPP         userUPP);
  
      EXTERN_API(OSErr)
      InvokeCalcColorTableUPP        (UInt32                  dataRef,
                                      SInt16                  colorsRequested,
                                      void *                  colorBankPtr,
                                      CSpecArray              resultPtr,
                                      CalcColorTableUPP       userUPP);
  
      EXTERN_API(OSErr)
      InvokeDisposeColorPickMethodUPP    (UInt32              dataRef,
                                      DisposeColorPickMethodUPP userUPP);
  
  else
      enum { uppInitPickMethodProcInfo = 0x00000FA0 };                /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
      enum { uppRecordColorsProcInfo = 0x00003FE0 };                  /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      enum { uppCalcColorTableProcInfo = 0x00003EE0 };                /* pascal 2_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes) */
      enum { uppDisposeColorPickMethodProcInfo = 0x000000E0 };        /* pascal 2_bytes Func(4_bytes) */
      #define NewInitPickMethodUPP(userRoutine)                       (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture())
      #define NewRecordColorsUPP(userRoutine)                         (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture())
      #define NewCalcColorTableUPP(userRoutine)                       (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture())
      #define NewDisposeColorPickMethodUPP(userRoutine)               (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture())
      #define DisposeInitPickMethodUPP(userUPP)                       DisposeRoutineDescriptor(userUPP)
      #define DisposeRecordColorsUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
      #define DisposeCalcColorTableUPP(userUPP)                       DisposeRoutineDescriptor(userUPP)
      #define DisposeDisposeColorPickMethodUPP(userUPP)               DisposeRoutineDescriptor(userUPP)
      #define InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userUPP)  (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppInitPickMethodProcInfo, (colorsRequested), (dataRef), (colorBankType))
      #define InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userUPP)  (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppRecordColorsProcInfo, (dataRef), (colorsArray), (colorCount), (uniqueColors))
      #define InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userUPP)  (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppCalcColorTableProcInfo, (dataRef), (colorsRequested), (colorBankPtr), (resultPtr))
      #define InvokeDisposeColorPickMethodUPP(dataRef, userUPP)       (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppDisposeColorPickMethodProcInfo, (dataRef))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewInitPickMethodProc(userRoutine)                      NewInitPickMethodUPP(userRoutine)
  define NewRecordColorsProc(userRoutine)                        NewRecordColorsUPP(userRoutine)
  define NewCalcColorTableProc(userRoutine)                      NewCalcColorTableUPP(userRoutine)
  define NewDisposeColorPickMethodProc(userRoutine)              NewDisposeColorPickMethodUPP(userRoutine)
  define CallInitPickMethodProc(userRoutine, colorsRequested, dataRef, colorBankType) InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userRoutine)
  define CallRecordColorsProc(userRoutine, dataRef, colorsArray, colorCount, uniqueColors) InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userRoutine)
  define CallCalcColorTableProc(userRoutine, dataRef, colorsRequested, colorBankPtr, resultPtr) InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userRoutine)
  define CallDisposeColorPickMethodProc(userRoutine, dataRef)    InvokeDisposeColorPickMethodUPP(dataRef, userRoutine)
  EXTERN_API( OSErr )
  GetPictInfo                     (PicHandle              thePictHandle,
                                   PictInfo *             thePictInfo,
                                   short                  verb,
                                   short                  colorsRequested,
                                   short                  colorPickMethod,
                                   short                  version)                            THREEWORDINLINE(0x303C, 0x0800, 0xA831);
  
  EXTERN_API( OSErr )
  GetPixMapInfo                   (PixMapHandle           thePixMapHandle,
                                   PictInfo *             thePictInfo,
                                   short                  verb,
                                   short                  colorsRequested,
                                   short                  colorPickMethod,
                                   short                  version)                            THREEWORDINLINE(0x303C, 0x0801, 0xA831);
  
  EXTERN_API( OSErr )
  NewPictInfo                     (PictInfoID *           thePictInfoID,
                                   short                  verb,
                                   short                  colorsRequested,
                                   short                  colorPickMethod,
                                   short                  version)                            THREEWORDINLINE(0x303C, 0x0602, 0xA831);
  
  EXTERN_API( OSErr )
  RecordPictInfo                  (PictInfoID             thePictInfoID,
                                   PicHandle              thePictHandle)                      THREEWORDINLINE(0x303C, 0x0403, 0xA831);
  
  EXTERN_API( OSErr )
  RecordPixMapInfo                (PictInfoID             thePictInfoID,
                                   PixMapHandle           thePixMapHandle)                    THREEWORDINLINE(0x303C, 0x0404, 0xA831);
  
  EXTERN_API( OSErr )
  RetrievePictInfo                (PictInfoID             thePictInfoID,
                                   PictInfo *             thePictInfo,
                                   short                  colorsRequested)                    THREEWORDINLINE(0x303C, 0x0505, 0xA831);
  
  EXTERN_API( OSErr )
  DisposePictInfo                 (PictInfoID             thePictInfoID)                      THREEWORDINLINE(0x303C, 0x0206, 0xA831);
  
  if OLDROUTINENAMES
  define DisposPictInfo(thePictInfoID) DisposePictInfo(thePictInfoID)
  endif  /* OLDROUTINENAMES */
  
  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 /* __PICTUTILS__ */
  
  


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