topical media & game development

talk show tell print

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



  /*
       File:       QuickdrawText.h
   
       Contains:   Quickdraw Text Interfaces.
   
       Version:    Technology: Mac OS 8.5
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1983-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 __QUICKDRAWTEXT__
  define __QUICKDRAWTEXT__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __MIXEDMODE__
  include <MixedMode.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
  
  /* new CGrafPort bottleneck ("newProc2") function, used in Unicode Text drawing */
  EXTERN_API_C( OSStatus )
  StandardGlyphs                  (void *                 dataStream,
                                   ByteCount              size);
  
  enum {
                                                                  /* CharToPixel directions */
      leftCaret                   = 0,                            /*Place caret for left block*/
      rightCaret                  = -1,                           /*Place caret for right block*/
      kHilite                     = 1                             /*Direction is SysDirection*/
  };
  
  enum {
      smLeftCaret                 = 0,                            /*Place caret for left block - obsolete */
      smRightCaret                = -1,                           /*Place caret for right block - obsolete */
      smHilite                    = 1                             /*Direction is TESysJust - obsolete */
  };
  
  enum {
                                                                  /*Constants for styleRunPosition argument in PortionLine, DrawJustified, MeasureJustified, CharToPixel, and PixelToChar.*/
      onlyStyleRun                = 0,                            /* This is the only style run on the line */
      leftStyleRun                = 1,                            /* This is leftmost of multiple style runs on the line */
      rightStyleRun               = 2,                            /* This is rightmost of multiple style runs on the line */
      middleStyleRun              = 3,                            /* There are multiple style runs on the line and this is neither the leftmost nor the rightmost. */
      smOnlyStyleRun              = 0,                            /* obsolete */
      smLeftStyleRun              = 1,                            /* obsolete */
      smRightStyleRun             = 2,                            /* obsolete */
      smMiddleStyleRun            = 3                             /* obsolete */
  };
  
  /* type for styleRunPosition parameter in PixelToChar etc. */
  typedef short                           JustStyleCode;
  /*QuickTime3.0*/
  enum {
                                                                  /* Constants for txFlags (which used to be the pad field after txFace) */
      tfAntiAlias                 = 1 << 0,
      tfUnicode                   = 1 << 1
  };
  
  struct FontInfo {
      short                           ascent;
      short                           descent;
      short                           widMax;
      short                           leading;
  };
  typedef struct FontInfo                 FontInfo;
  
  typedef short                           FormatOrder[1];
  typedef FormatOrder *                   FormatOrderPtr;
  /* FormatStatus was moved to TextUtils.i */
  
  struct OffPair {
      short                           offFirst;
      short                           offSecond;
  };
  typedef struct OffPair                  OffPair;
  
  typedef OffPair                         OffsetTable[3];
  typedef CALLBACK_API( Boolean , StyleRunDirectionProcPtr )(short styleRunIndex, void *dirParam);
  typedef STACK_UPP_TYPE(StyleRunDirectionProcPtr)                StyleRunDirectionUPP;
  if OPAQUE_UPP_TYPES
      EXTERN_API(StyleRunDirectionUPP)
      NewStyleRunDirectionUPP        (StyleRunDirectionProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeStyleRunDirectionUPP    (StyleRunDirectionUPP    userUPP);
  
      EXTERN_API(Boolean)
      InvokeStyleRunDirectionUPP     (short                   styleRunIndex,
                                      void *                  dirParam,
                                      StyleRunDirectionUPP    userUPP);
  
  else
      enum { uppStyleRunDirectionProcInfo = 0x00000390 };             /* pascal 1_byte Func(2_bytes, 4_bytes) */
      #define NewStyleRunDirectionUPP(userRoutine)                    (StyleRunDirectionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStyleRunDirectionProcInfo, GetCurrentArchitecture())
      #define DisposeStyleRunDirectionUPP(userUPP)                    DisposeRoutineDescriptor(userUPP)
      #define InvokeStyleRunDirectionUPP(styleRunIndex, dirParam, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppStyleRunDirectionProcInfo, (styleRunIndex), (dirParam))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewStyleRunDirectionProc(userRoutine)                   NewStyleRunDirectionUPP(userRoutine)
  define CallStyleRunDirectionProc(userRoutine, styleRunIndex, dirParam) InvokeStyleRunDirectionUPP(styleRunIndex, dirParam, userRoutine)
  if CALL_NOT_IN_CARBON
  if CALL_NOT_IN_CARBON
  EXTERN_API( short )
  Pixel2Char                      (Ptr                    textBuf,
                                   short                  textLen,
                                   short                  slop,
                                   short                  pixelWidth,
                                   Boolean *              leadingEdge)                        FOURWORDINLINE(0x2F3C, 0x820E, 0x0014, 0xA8B5);
  
  EXTERN_API( short )
  Char2Pixel                      (Ptr                    textBuf,
                                   short                  textLen,
                                   short                  slop,
                                   short                  offset,
                                   short                  direction)                          FOURWORDINLINE(0x2F3C, 0x820C, 0x0016, 0xA8B5);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API( short )
  PixelToChar                     (Ptr                    textBuf,
                                   long                   textLength,
                                   Fixed                  slop,
                                   Fixed                  pixelWidth,
                                   Boolean *              leadingEdge,
                                   Fixed *                widthRemaining,
                                   JustStyleCode          styleRunPosition,
                                   Point                  numer,
                                   Point                  denom)                              FOURWORDINLINE(0x2F3C, 0x8222, 0x002E, 0xA8B5);
  
  EXTERN_API( short )
  CharToPixel                     (Ptr                    textBuf,
                                   long                   textLength,
                                   Fixed                  slop,
                                   long                   offset,
                                   short                  direction,
                                   JustStyleCode          styleRunPosition,
                                   Point                  numer,
                                   Point                  denom)                              FOURWORDINLINE(0x2F3C, 0x821C, 0x0030, 0xA8B5);
  
  EXTERN_API( void )
  DrawJustified                   (Ptr                    textPtr,
                                   long                   textLength,
                                   Fixed                  slop,
                                   JustStyleCode          styleRunPosition,
                                   Point                  numer,
                                   Point                  denom)                              FOURWORDINLINE(0x2F3C, 0x8016, 0x0032, 0xA8B5);
  
  EXTERN_API( void )
  MeasureJustified                (Ptr                    textPtr,
                                   long                   textLength,
                                   Fixed                  slop,
                                   Ptr                    charLocs,
                                   JustStyleCode          styleRunPosition,
                                   Point                  numer,
                                   Point                  denom)                              FOURWORDINLINE(0x2F3C, 0x801A, 0x0034, 0xA8B5);
  
  EXTERN_API( Fixed )
  PortionLine                     (Ptr                    textPtr,
                                   long                   textLen,
                                   JustStyleCode          styleRunPosition,
                                   Point                  numer,
                                   Point                  denom)                              FOURWORDINLINE(0x2F3C, 0x8412, 0x0036, 0xA8B5);
  
  EXTERN_API( void )
  HiliteText                      (Ptr                    textPtr,
                                   short                  textLength,
                                   short                  firstOffset,
                                   short                  secondOffset,
                                   OffsetTable            offsets)                            FOURWORDINLINE(0x2F3C, 0x800E, 0x001C, 0xA8B5);
  
  if CALL_NOT_IN_CARBON
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  DrawJust                        (Ptr                    textPtr,
                                   short                  textLength,
                                   short                  slop)                               FOURWORDINLINE(0x2F3C, 0x8008, 0x001E, 0xA8B5);
  
  EXTERN_API( void )
  MeasureJust                     (Ptr                    textPtr,
                                   short                  textLength,
                                   short                  slop,
                                   Ptr                    charLocs)                           FOURWORDINLINE(0x2F3C, 0x800C, 0x0020, 0xA8B5);
  
  EXTERN_API( Fixed )
  PortionText                     (Ptr                    textPtr,
                                   long                   textLength)                         FOURWORDINLINE(0x2F3C, 0x8408, 0x0024, 0xA8B5);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API( long )
  VisibleLength                   (Ptr                    textPtr,
                                   long                   textLength)                         FOURWORDINLINE(0x2F3C, 0x8408, 0x0028, 0xA8B5);
  
  EXTERN_API( void )
  GetFormatOrder                  (FormatOrderPtr         ordering,
                                   short                  firstFormat,
                                   short                  lastFormat,
                                   Boolean                lineRight,
                                   StyleRunDirectionUPP   rlDirProc,
                                   Ptr                    dirParam)                           FOURWORDINLINE(0x2F3C, 0x8012, 0xFFFC, 0xA8B5);
  
  EXTERN_API( void )
  TextFont                        (short                  font)                               ONEWORDINLINE(0xA887);
  
  EXTERN_API( void )
  TextFace                        (StyleParameter         face)                               ONEWORDINLINE(0xA888);
  
  EXTERN_API( void )
  TextMode                        (short                  mode)                               ONEWORDINLINE(0xA889);
  
  EXTERN_API( void )
  TextSize                        (short                  size)                               ONEWORDINLINE(0xA88A);
  
  EXTERN_API( void )
  SpaceExtra                      (Fixed                  extra)                              ONEWORDINLINE(0xA88E);
  
  EXTERN_API( void )
  DrawChar                        (CharParameter          ch)                                 ONEWORDINLINE(0xA883);
  
  EXTERN_API( void )
  DrawString                      (ConstStr255Param       s)                                  ONEWORDINLINE(0xA884);
  
  if TARGET_OS_MAC
      #define MacDrawText DrawText
  endif
  EXTERN_API( void )
  MacDrawText                     (const void *           textBuf,
                                   short                  firstByte,
                                   short                  byteCount)                          ONEWORDINLINE(0xA885);
  
  EXTERN_API( short )
  CharWidth                       (CharParameter          ch)                                 ONEWORDINLINE(0xA88D);
  
  EXTERN_API( short )
  StringWidth                     (ConstStr255Param       s)                                  ONEWORDINLINE(0xA88C);
  
  EXTERN_API( short )
  TextWidth                       (const void *           textBuf,
                                   short                  firstByte,
                                   short                  byteCount)                          ONEWORDINLINE(0xA886);
  
  EXTERN_API( void )
  MeasureText                     (short                  count,
                                   const void *           textAddr,
                                   void *                 charLocs)                           ONEWORDINLINE(0xA837);
  
  EXTERN_API( void )
  GetFontInfo                     (FontInfo *             info)                               ONEWORDINLINE(0xA88B);
  
  EXTERN_API( void )
  CharExtra                       (Fixed                  extra)                              ONEWORDINLINE(0xAA23);
  
  EXTERN_API( void )
  StdText                         (short                  count,
                                   const void *           textAddr,
                                   Point                  numer,
                                   Point                  denom)                              ONEWORDINLINE(0xA882);
  
  EXTERN_API( short )
  StdTxMeas                       (short                  byteCount,
                                   const void *           textAddr,
                                   Point *                numer,
                                   Point *                denom,
                                   FontInfo *             info)                               ONEWORDINLINE(0xA8ED);
  
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( void )
  drawstring                      (const char *           s);
  
  EXTERN_API_C( short )
  stringwidth                     (const char *           s);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API_C( void )
  stdtext                         (short                  count,
                                   const void *           textAddr,
                                   const Point *          numer,
                                   const Point *          denom);
  
  if OLDROUTINENAMES
  define NPixel2Char(textBuf, textLen, slop, pixelWidth, leadingEdge, widthRemaining, styleRunPosition, numer, denom) \
      PixelToChar(textBuf, textLen, slop, pixelWidth, leadingEdge, widthRemaining, styleRunPosition, numer, denom) 
  define NChar2Pixel(textBuf, textLen, slop, offset, direction, styleRunPosition, numer, denom) \
      CharToPixel(textBuf, textLen, slop, offset, direction, styleRunPosition, numer, denom)
  define NDrawJust(textPtr, textLength, slop, styleRunPosition, numer, denom) \
      DrawJustified(textPtr, textLength, slop, styleRunPosition, numer, denom)
  define NMeasureJust(textPtr, textLength, slop, charLocs, styleRunPosition, numer, denom) \
      MeasureJustified(textPtr, textLength, slop, charLocs, styleRunPosition, numer, denom)
  define NPortionText(textPtr, textLen, styleRunPosition, numer, denom)\
      PortionLine(textPtr, textLen, styleRunPosition, numer, denom)
  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 /* __QUICKDRAWTEXT__ */
  
  


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