/* 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 #endif #ifndef __MIXEDMODE__ #include #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__ */