/* File: QuickdrawText.h Contains: Quickdraw Text Interfaces. Version: QuickTime 7.3 Copyright: (c) 2007 (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 #ifndef __INTLRESOURCES__ #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 */ /* * StandardGlyphs() * * Availability: * Non-Carbon CFM: in QuickDrawText 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ 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; /* Type for truncWhere parameter in TruncString, TruncText */ typedef short TruncCode; enum { /* Constants for truncWhere argument in TruncString and TruncText */ truncEnd = 0, /* Truncate at end */ truncMiddle = 0x4000, /* Truncate in middle */ smTruncEnd = 0, /* Truncate at end - obsolete */ smTruncMiddle = 0x4000 /* Truncate in middle - obsolete */ }; enum { /* Constants for TruncString and TruncText results */ notTruncated = 0, /* No truncation was necessary */ truncated = 1, /* Truncation performed */ truncErr = -1, /* General error */ smNotTruncated = 0, /* No truncation was necessary - obsolete */ smTruncated = 1, /* Truncation performed - obsolete */ smTruncErr = -1 /* General error - obsolete */ }; typedef SInt8 StyledLineBreakCode; enum { smBreakWord = 0, smBreakChar = 1, smBreakOverflow = 2 }; /*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 */ /* OffsetTable moved to IntlResources.i */ typedef CALLBACK_API( Boolean , StyleRunDirectionProcPtr )(short styleRunIndex, void *dirParam); typedef STACK_UPP_TYPE(StyleRunDirectionProcPtr) StyleRunDirectionUPP; /* * NewStyleRunDirectionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( StyleRunDirectionUPP ) NewStyleRunDirectionUPP(StyleRunDirectionProcPtr userRoutine); #if !OPAQUE_UPP_TYPES enum { uppStyleRunDirectionProcInfo = 0x00000390 }; /* pascal 1_byte Func(2_bytes, 4_bytes) */ #ifdef __cplusplus inline DEFINE_API_C(StyleRunDirectionUPP) NewStyleRunDirectionUPP(StyleRunDirectionProcPtr userRoutine) { return (StyleRunDirectionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStyleRunDirectionProcInfo, GetCurrentArchitecture()); } #else #define NewStyleRunDirectionUPP(userRoutine) (StyleRunDirectionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStyleRunDirectionProcInfo, GetCurrentArchitecture()) #endif #endif /* * DisposeStyleRunDirectionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) DisposeStyleRunDirectionUPP(StyleRunDirectionUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(void) DisposeStyleRunDirectionUPP(StyleRunDirectionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } #else #define DisposeStyleRunDirectionUPP(userUPP) DisposeRoutineDescriptor(userUPP) #endif #endif /* * InvokeStyleRunDirectionUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( Boolean ) InvokeStyleRunDirectionUPP( short styleRunIndex, void * dirParam, StyleRunDirectionUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(Boolean) InvokeStyleRunDirectionUPP(short styleRunIndex, void * dirParam, StyleRunDirectionUPP userUPP) { return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppStyleRunDirectionProcInfo, styleRunIndex, dirParam); } #else #define InvokeStyleRunDirectionUPP(styleRunIndex, dirParam, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppStyleRunDirectionProcInfo, (styleRunIndex), (dirParam)) #endif #endif #if CALL_NOT_IN_CARBON || OLDROUTINENAMES /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ #define NewStyleRunDirectionProc(userRoutine) NewStyleRunDirectionUPP(userRoutine) #define CallStyleRunDirectionProc(userRoutine, styleRunIndex, dirParam) InvokeStyleRunDirectionUPP(styleRunIndex, dirParam, userRoutine) #endif /* CALL_NOT_IN_CARBON */ #if CALL_NOT_IN_CARBON /* * Pixel2Char() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( short ) Pixel2Char( Ptr textBuf, short textLen, short slop, short pixelWidth, Boolean * leadingEdge) FOURWORDINLINE(0x2F3C, 0x820E, 0x0014, 0xA8B5); /* * Char2Pixel() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( short ) Char2Pixel( Ptr textBuf, short textLen, short slop, short offset, short direction) FOURWORDINLINE(0x2F3C, 0x820C, 0x0016, 0xA8B5); #endif /* CALL_NOT_IN_CARBON */ /* * PixelToChar() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ 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); /* * CharToPixel() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ 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); /* * DrawJustified() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) DrawJustified( Ptr textPtr, long textLength, Fixed slop, JustStyleCode styleRunPosition, Point numer, Point denom) FOURWORDINLINE(0x2F3C, 0x8016, 0x0032, 0xA8B5); /* * MeasureJustified() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) MeasureJustified( Ptr textPtr, long textLength, Fixed slop, Ptr charLocs, JustStyleCode styleRunPosition, Point numer, Point denom) FOURWORDINLINE(0x2F3C, 0x801A, 0x0034, 0xA8B5); /* * PortionLine() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( Fixed ) PortionLine( Ptr textPtr, long textLen, JustStyleCode styleRunPosition, Point numer, Point denom) FOURWORDINLINE(0x2F3C, 0x8412, 0x0036, 0xA8B5); /* * HiliteText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) HiliteText( Ptr textPtr, short textLength, short firstOffset, short secondOffset, OffsetTable offsets) FOURWORDINLINE(0x2F3C, 0x800E, 0x001C, 0xA8B5); #if CALL_NOT_IN_CARBON /* * DrawJust() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( void ) DrawJust( Ptr textPtr, short textLength, short slop) FOURWORDINLINE(0x2F3C, 0x8008, 0x001E, 0xA8B5); /* * MeasureJust() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( void ) MeasureJust( Ptr textPtr, short textLength, short slop, Ptr charLocs) FOURWORDINLINE(0x2F3C, 0x800C, 0x0020, 0xA8B5); /* * PortionText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( Fixed ) PortionText( Ptr textPtr, long textLength) FOURWORDINLINE(0x2F3C, 0x8408, 0x0024, 0xA8B5); #endif /* CALL_NOT_IN_CARBON */ /* * VisibleLength() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( long ) VisibleLength( Ptr textPtr, long textLength) FOURWORDINLINE(0x2F3C, 0x8408, 0x0028, 0xA8B5); /* * GetFormatOrder() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) GetFormatOrder( FormatOrderPtr ordering, short firstFormat, short lastFormat, Boolean lineRight, StyleRunDirectionUPP rlDirProc, Ptr dirParam) FOURWORDINLINE(0x2F3C, 0x8012, 0xFFFC, 0xA8B5); /* * TextFont() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) TextFont(short font) ONEWORDINLINE(0xA887); /* * TextFace() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) TextFace(StyleParameter face) ONEWORDINLINE(0xA888); /* * TextMode() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) TextMode(short mode) ONEWORDINLINE(0xA889); /* * TextSize() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) TextSize(short size) ONEWORDINLINE(0xA88A); /* * SpaceExtra() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) SpaceExtra(Fixed extra) ONEWORDINLINE(0xA88E); /* * DrawChar() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) DrawChar(CharParameter ch) ONEWORDINLINE(0xA883); /* * DrawString() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) DrawString(ConstStr255Param s) ONEWORDINLINE(0xA884); /* * [Mac]DrawText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ #if TARGET_OS_MAC #define MacDrawText DrawText #endif EXTERN_API( void ) MacDrawText( const void * textBuf, short firstByte, short byteCount) ONEWORDINLINE(0xA885); /* * CharWidth() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) CharWidth(CharParameter ch) ONEWORDINLINE(0xA88D); /* * StringWidth() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) StringWidth(ConstStr255Param s) ONEWORDINLINE(0xA88C); /* * TextWidth() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) TextWidth( const void * textBuf, short firstByte, short byteCount) ONEWORDINLINE(0xA886); /* * MeasureText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) MeasureText( short count, const void * textAddr, void * charLocs) ONEWORDINLINE(0xA837); /* * GetFontInfo() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) GetFontInfo(FontInfo * info) ONEWORDINLINE(0xA88B); /* * CharExtra() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) CharExtra(Fixed extra) ONEWORDINLINE(0xAA23); /* * StdText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( void ) StdText( short count, const void * textAddr, Point numer, Point denom) ONEWORDINLINE(0xA882); /* * StdTxMeas() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) StdTxMeas( short byteCount, const void * textAddr, Point * numer, Point * denom, FontInfo * info) ONEWORDINLINE(0xA8ED); /* * StyledLineBreak() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( StyledLineBreakCode ) StyledLineBreak( Ptr textPtr, long textLen, long textStart, long textEnd, long flags, Fixed * textWidth, long * textOffset) FOURWORDINLINE(0x2F3C, 0x821C, 0xFFFE, 0xA8B5); /* * TruncString() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) TruncString( short width, Str255 theString, TruncCode truncWhere) FOURWORDINLINE(0x2F3C, 0x8208, 0xFFE0, 0xA8B5); /* * TruncText() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( short ) TruncText( short width, Ptr textPtr, short * length, TruncCode truncWhere) FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDE, 0xA8B5); #if CALL_NOT_IN_CARBON /* * drawstring() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( void ) drawstring(const char * s); /* * stringwidth() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( short ) stringwidth(const char * s); #endif /* CALL_NOT_IN_CARBON */ /* * stdtext() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) stdtext( short count, const void * textAddr, const Point * numer, const Point * denom); /* * SwapQDTextFlags() * * Discussion: * Obsolete. Use QDSwapTextFlags instead (in Quickdraw.h). * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Mac OS X: in version 10.2 and later */ EXTERN_API_C( UInt32 ) SwapQDTextFlags(UInt32 newFlags); #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__ */