topical media & game development

talk show tell print

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



  /*
       File:       ScalerStreamTypes.h
   
       Contains:   Scaler streaming data structures and constants for OFA 1.x
   
       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 __SCALERSTREAMTYPES__
  define __SCALERSTREAMTYPES__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __SFNTTYPES__
  include <SFNTTypes.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
  
  /* ScalerStream input/output types */
  enum {
      cexec68K                    = 0x0001,
      truetypeStreamType          = 0x0001,
      type1StreamType             = 0x0002,
      type3StreamType             = 0x0004,
      type42StreamType            = 0x0008,
      type42GXStreamType          = 0x0010,
      portableStreamType          = 0x0020,
      flattenedStreamType         = 0x0040,
      evenOddModifierStreamType   = 0x8000
  };
  
  /* Possible streamed font formats */
  typedef unsigned long                   scalerStreamTypeFlag;
  enum {
      downloadStreamAction        = 0,                            /* Transmit the (possibly sparse) font data */
      asciiDownloadStreamAction   = 1,                            /* Transmit font data to a 7-bit ASCII destination */
      fontSizeQueryStreamAction   = 2,                            /* Estimate in-printer memory used if the font were downloaded */
      encodingOnlyStreamAction    = 3,                            /* Transmit only the encoding for the font */
      prerequisiteQueryStreamAction = 4,                          /* Return a list of prerequisite items needed for the font */
      prerequisiteItemStreamAction = 5,                           /* Transmit a specified prerequisite item */
      variationQueryStreamAction  = 6,                            /* Return information regarding support for variation streaming */
      variationPSOperatorStreamAction = 7                         /* Transmit Postscript code necessary to effect variation of a font */
  };
  
  typedef long                            scalerStreamAction;
  enum {
      selectAllVariations         = -1                            /* Special variationCount value meaning include all variation data */
  };
  
  struct scalerPrerequisiteItem {
      long                            enumeration;                /* Shorthand tag identifying the item */
      long                            size;                       /* Worst case vm in printer item requires */
      unsigned char                   name[1];                    /* Name to be used by the client when emitting the item (Pascal string) */
  };
  typedef struct scalerPrerequisiteItem   scalerPrerequisiteItem;
  
  struct scalerStream {
      const void *                    streamRefCon;               /* <- private reference for client */
      const char *                    targetVersion;              /* <- e.g. Postscript printer name (C string) */
      scalerStreamTypeFlag            types;                      /* <->    Data stream formats desired/supplied */
      scalerStreamAction              action;                     /* <-     What action to take */
      unsigned long                   memorySize;                 /* -> Worst case memory use (vm) in printer or as sfnt */
      long                            variationCount;             /* <- The number of variations, or selectAllVariations */
      const void *                    variations;                 /* <- A pointer to an array of the variations (gxFontVariation) */
      union {
                                                                  /* Normal font streaming information*/
          struct {
              const unsigned short *          encoding;           /* <- Intention is * unsigned short[256] */
              long *                          glyphBits;          /* <->    Bitvector: a bit for each glyph, 1 = desired/supplied */
              char *                          name;               /* <->    The printer font name to use/used (C string) */
          }                                 font;
  
                                                                  /* Used to obtain a list of prerequisites from the scaler*/
          struct {
              long                            size;               /* ->     Size of the prereq. list in bytes (0 indicates no prerequisites)*/
              void *                          list;               /* <- Pointer to client block to hold list (nil = list size query only) */
          }                                 prerequisiteQuery;
  
          long                            prerequisiteItem;       /* <-     Enumeration value for the prerequisite item to be streamed.*/
  
          long                            variationQueryResult;   /* -> Output from the variationQueryStreamAction */
      }                                 info;
  };
  typedef struct scalerStream             scalerStream;
  
  struct scalerStreamData {
      long                            hexFlag;                    /* Indicates that the data is to be interpreted as hex, versus binary */
      long                            byteCount;                  /* Number of bytes in the data being streamed */
      const void *                    data;                       /* Pointer to the data being streamed */
  };
  typedef struct scalerStreamData         scalerStreamData;
  
  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 /* __SCALERSTREAMTYPES__ */
  
  


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