summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/ATSTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/ATSTypes.h')
-rw-r--r--common/quicktime_win32/ATSTypes.h369
1 files changed, 369 insertions, 0 deletions
diff --git a/common/quicktime_win32/ATSTypes.h b/common/quicktime_win32/ATSTypes.h
new file mode 100644
index 0000000..a72a6ed
--- /dev/null
+++ b/common/quicktime_win32/ATSTypes.h
@@ -0,0 +1,369 @@
+/*
+ File: ATSTypes.h
+
+ Contains: Public interfaces for Apple Type Services components.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1997-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 __ATSTYPES__
+#define __ATSTYPES__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __FILES__
+#include <Files.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
+
+typedef UInt32 FMGeneration;
+/* The FMFontFamily reference represents a collection of fonts with the same design
+ characteristics. It replaces the standard QuickDraw font identifer and may be used
+ with all QuickDraw functions including GetFontName and TextFont. It cannot be used
+ with the Resource Manager to access information from a FOND resource handle. A font
+ reference does not imply a particular script system, nor is the character encoding
+ of a font family determined by an arithmetic mapping of its value.
+*/
+typedef SInt16 FMFontFamily;
+typedef SInt16 FMFontStyle;
+typedef SInt16 FMFontSize;
+/*
+ The font family is a collection of fonts, each of which is identified
+ by an FMFont reference that maps to a single object registered with
+ the font database. The font references associated with the font
+ family consist of individual outline and bitmapped fonts that may be
+ used with the font access routines of the Font Manager and ATS.
+*/
+typedef UInt32 FMFont;
+struct FMFontFamilyInstance {
+ FMFontFamily fontFamily;
+ FMFontStyle fontStyle;
+};
+typedef struct FMFontFamilyInstance FMFontFamilyInstance;
+struct FMFontFamilyIterator {
+ UInt32 reserved[16];
+};
+typedef struct FMFontFamilyIterator FMFontFamilyIterator;
+struct FMFontIterator {
+ UInt32 reserved[16];
+};
+typedef struct FMFontIterator FMFontIterator;
+struct FMFontFamilyInstanceIterator {
+ UInt32 reserved[16];
+};
+typedef struct FMFontFamilyInstanceIterator FMFontFamilyInstanceIterator;
+enum {
+ kInvalidGeneration = 0L,
+ kInvalidFontFamily = -1,
+ kInvalidFont = 0L
+};
+
+enum {
+ kFMCurrentFilterFormat = 0L
+};
+
+typedef UInt32 FMFilterSelector;
+enum {
+ kFMFontTechnologyFilterSelector = 1L,
+ kFMFontContainerFilterSelector = 2L,
+ kFMGenerationFilterSelector = 3L,
+ kFMFontFamilyCallbackFilterSelector = 4L,
+ kFMFontCallbackFilterSelector = 5L,
+ kFMFontDirectoryFilterSelector = 6L
+};
+
+enum {
+ kFMTrueTypeFontTechnology = FOUR_CHAR_CODE('true'),
+ kFMPostScriptFontTechnology = FOUR_CHAR_CODE('typ1')
+};
+
+typedef CALLBACK_API( OSStatus , FMFontFamilyCallbackFilterProcPtr )(FMFontFamily iFontFamily, void *iRefCon);
+typedef CALLBACK_API( OSStatus , FMFontCallbackFilterProcPtr )(FMFont iFont, void *iRefCon);
+typedef STACK_UPP_TYPE(FMFontFamilyCallbackFilterProcPtr) FMFontFamilyCallbackFilterUPP;
+typedef STACK_UPP_TYPE(FMFontCallbackFilterProcPtr) FMFontCallbackFilterUPP;
+/*
+ * NewFMFontFamilyCallbackFilterUPP()
+ *
+ * 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( FMFontFamilyCallbackFilterUPP )
+NewFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppFMFontFamilyCallbackFilterProcInfo = 0x000003B0 }; /* pascal 4_bytes Func(2_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(FMFontFamilyCallbackFilterUPP) NewFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterProcPtr userRoutine) { return (FMFontFamilyCallbackFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFMFontFamilyCallbackFilterProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewFMFontFamilyCallbackFilterUPP(userRoutine) (FMFontFamilyCallbackFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFMFontFamilyCallbackFilterProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewFMFontCallbackFilterUPP()
+ *
+ * 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( FMFontCallbackFilterUPP )
+NewFMFontCallbackFilterUPP(FMFontCallbackFilterProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppFMFontCallbackFilterProcInfo = 0x000003F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(FMFontCallbackFilterUPP) NewFMFontCallbackFilterUPP(FMFontCallbackFilterProcPtr userRoutine) { return (FMFontCallbackFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFMFontCallbackFilterProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewFMFontCallbackFilterUPP(userRoutine) (FMFontCallbackFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFMFontCallbackFilterProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeFMFontFamilyCallbackFilterUPP()
+ *
+ * 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 )
+DisposeFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeFMFontFamilyCallbackFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeFMFontCallbackFilterUPP()
+ *
+ * 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 )
+DisposeFMFontCallbackFilterUPP(FMFontCallbackFilterUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeFMFontCallbackFilterUPP(FMFontCallbackFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeFMFontCallbackFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeFMFontFamilyCallbackFilterUPP()
+ *
+ * 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( OSStatus )
+InvokeFMFontFamilyCallbackFilterUPP(
+ FMFontFamily iFontFamily,
+ void * iRefCon,
+ FMFontFamilyCallbackFilterUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSStatus) InvokeFMFontFamilyCallbackFilterUPP(FMFontFamily iFontFamily, void * iRefCon, FMFontFamilyCallbackFilterUPP userUPP) { return (OSStatus)CALL_TWO_PARAMETER_UPP(userUPP, uppFMFontFamilyCallbackFilterProcInfo, iFontFamily, iRefCon); }
+ #else
+ #define InvokeFMFontFamilyCallbackFilterUPP(iFontFamily, iRefCon, userUPP) (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppFMFontFamilyCallbackFilterProcInfo, (iFontFamily), (iRefCon))
+ #endif
+#endif
+
+/*
+ * InvokeFMFontCallbackFilterUPP()
+ *
+ * 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( OSStatus )
+InvokeFMFontCallbackFilterUPP(
+ FMFont iFont,
+ void * iRefCon,
+ FMFontCallbackFilterUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSStatus) InvokeFMFontCallbackFilterUPP(FMFont iFont, void * iRefCon, FMFontCallbackFilterUPP userUPP) { return (OSStatus)CALL_TWO_PARAMETER_UPP(userUPP, uppFMFontCallbackFilterProcInfo, iFont, iRefCon); }
+ #else
+ #define InvokeFMFontCallbackFilterUPP(iFont, iRefCon, userUPP) (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppFMFontCallbackFilterProcInfo, (iFont), (iRefCon))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewFMFontFamilyCallbackFilterProc(userRoutine) NewFMFontFamilyCallbackFilterUPP(userRoutine)
+ #define NewFMFontCallbackFilterProc(userRoutine) NewFMFontCallbackFilterUPP(userRoutine)
+ #define CallFMFontFamilyCallbackFilterProc(userRoutine, iFontFamily, iRefCon) InvokeFMFontFamilyCallbackFilterUPP(iFontFamily, iRefCon, userRoutine)
+ #define CallFMFontCallbackFilterProc(userRoutine, iFont, iRefCon) InvokeFMFontCallbackFilterUPP(iFont, iRefCon, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+struct FMFontDirectoryFilter {
+ SInt16 fontFolderDomain;
+ UInt32 reserved[2];
+};
+typedef struct FMFontDirectoryFilter FMFontDirectoryFilter;
+struct FMFilter {
+ UInt32 format;
+ FMFilterSelector selector;
+ union {
+ FourCharCode fontTechnologyFilter;
+ FSSpec fontContainerFilter;
+ FMGeneration generationFilter;
+ FMFontFamilyCallbackFilterUPP fontFamilyCallbackFilter;
+ FMFontCallbackFilterUPP fontCallbackFilter;
+ FMFontDirectoryFilter fontDirectoryFilter;
+ } filter;
+};
+typedef struct FMFilter FMFilter;
+
+typedef OptionBits ATSOptionFlags;
+typedef UInt32 ATSGeneration;
+typedef UInt32 ATSFontContainerRef;
+typedef UInt32 ATSFontFamilyRef;
+typedef UInt32 ATSFontRef;
+typedef UInt16 ATSGlyphRef;
+typedef Float32 ATSFontSize;
+enum {
+ kATSGenerationUnspecified = 0L,
+ kATSFontContainerRefUnspecified = 0L,
+ kATSFontFamilyRefUnspecified = 0L,
+ kATSFontRefUnspecified = 0L
+};
+
+struct ATSFontMetrics {
+ UInt32 version;
+ Float32 ascent; /* Maximum height above baseline reached by the glyphs in the font */
+ /* or maximum distance to the right of the centerline reached by the glyphs in the font */
+ Float32 descent; /* Maximum depth below baseline reached by the glyphs in the font */
+ /* or maximum distance to the left of the centerline reached by the glyphs in the font */
+ Float32 leading; /* Desired spacing between lines of text */
+ Float32 avgAdvanceWidth;
+ Float32 maxAdvanceWidth; /* Maximum advance width or height of the glyphs in the font */
+ Float32 minLeftSideBearing; /* Minimum left or top side bearing */
+ Float32 minRightSideBearing; /* Minimum right or bottom side bearing */
+ Float32 stemWidth; /* Width of the dominant vertical stems of the glyphs in the font */
+ Float32 stemHeight; /* Vertical width of the dominant horizontal stems of glyphs in the font */
+ Float32 capHeight; /* Height of a capital letter from the baseline to the top of the letter */
+ Float32 xHeight; /* Height of lowercase characters in a font, specifically the letter x, excluding ascenders and descenders */
+ Float32 italicAngle; /* Angle in degrees counterclockwise from the vertical of the dominant vertical strokes of the glyphs in the font */
+ Float32 underlinePosition; /* Distance from the baseline for positioning underlining strokes */
+ Float32 underlineThickness; /* Stroke width for underlining */
+};
+typedef struct ATSFontMetrics ATSFontMetrics;
+enum {
+ kATSItalicQDSkew = (1 << 16) / 4, /* fixed value of 0.25 */
+ kATSBoldQDStretch = (1 << 16) * 3 / 2, /* fixed value of 1.50 */
+ kATSRadiansFactor = 1144 /* fixed value of approx. pi/180 (0.0174560546875) */
+};
+
+/* Glyph outline path constants used in ATSFontGetNativeCurveType. */
+typedef UInt16 ATSCurveType;
+enum {
+ kATSCubicCurveType = 0x0001,
+ kATSQuadCurveType = 0x0002,
+ kATSOtherCurveType = 0x0003
+};
+
+/*
+ This is what the ATSGlyphRef is set to when the glyph is deleted -
+ that is, when the glyph is set to no longer appear when the layout
+ is actually drawn
+*/
+enum {
+ kATSDeletedGlyphcode = 0xFFFF
+};
+
+struct ATSUCurvePath {
+ UInt32 vectors;
+ UInt32 controlBits[1];
+ Float32Point vector[1];
+};
+typedef struct ATSUCurvePath ATSUCurvePath;
+struct ATSUCurvePaths {
+ UInt32 contours;
+ ATSUCurvePath contour[1];
+};
+typedef struct ATSUCurvePaths ATSUCurvePaths;
+/* Glyph ideal metrics */
+struct ATSGlyphIdealMetrics {
+ Float32Point advance;
+ Float32Point sideBearing;
+ Float32Point otherSideBearing;
+};
+typedef struct ATSGlyphIdealMetrics ATSGlyphIdealMetrics;
+/* Glyph screen metrics */
+struct ATSGlyphScreenMetrics {
+ Float32Point deviceAdvance;
+ Float32Point topLeft;
+ UInt32 height;
+ UInt32 width;
+ Float32Point sideBearing;
+ Float32Point otherSideBearing;
+};
+typedef struct ATSGlyphScreenMetrics ATSGlyphScreenMetrics;
+/* Glyph References */
+
+typedef ATSGlyphRef GlyphID;
+
+#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 /* __ATSTYPES__ */
+