summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/ATSFont.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/ATSFont.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/ATSFont.h')
-rw-r--r--common/quicktime_win32/ATSFont.h1091
1 files changed, 1091 insertions, 0 deletions
diff --git a/common/quicktime_win32/ATSFont.h b/common/quicktime_win32/ATSFont.h
new file mode 100644
index 0000000..9de74ad
--- /dev/null
+++ b/common/quicktime_win32/ATSFont.h
@@ -0,0 +1,1091 @@
+/*
+ File: ATSFont.h
+
+ Contains: Public interface to the font access and data management functions of ATS.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (C) 2000-2002 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 __ATSFONT__
+#define __ATSFONT__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __CFSTRING__
+#include <CFString.h>
+#endif
+
+#ifndef __CFMESSAGEPORT__
+#include <CFMessagePort.h>
+#endif
+
+#ifndef __FILES__
+#include <Files.h>
+#endif
+
+#ifndef __TEXTCOMMON__
+#include <TextCommon.h>
+#endif
+
+#ifndef __ATSTYPES__
+#include <ATSTypes.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
+
+#if PRAGMA_ENUM_ALWAYSINT
+ #if defined(__fourbyteints__) && !__fourbyteints__
+ #define __ATSFONT__RESTORE_TWOBYTEINTS
+ #pragma fourbyteints on
+ #endif
+ #pragma enumsalwaysint on
+#elif PRAGMA_ENUM_OPTIONS
+ #pragma option enum=int
+#elif PRAGMA_ENUM_PACK
+ #if __option(pack_enums)
+ #define __ATSFONT__RESTORE_PACKED_ENUMS
+ #pragma options(!pack_enums)
+ #endif
+#endif
+
+enum {
+ kATSOptionFlagsDefault = kNilOptions,
+ kATSOptionFlagsComposeFontPostScriptName = 1 << 0, /* ATSFontGetPostScriptName */
+ kATSOptionFlagsUseDataForkAsResourceFork = 1 << 8, /* ATSFontActivateFromFileSpecification */
+ kATSOptionFlagsUseResourceFork = 2 << 8,
+ kATSOptionFlagsUseDataFork = 3 << 8
+};
+
+enum {
+ kATSIterationCompleted = -980L,
+ kATSInvalidFontFamilyAccess = -981L,
+ kATSInvalidFontAccess = -982L,
+ kATSIterationScopeModified = -983L,
+ kATSInvalidFontTableAccess = -984L,
+ kATSInvalidFontContainerAccess = -985L
+};
+
+/* Activation Option Flags */
+typedef UInt32 ATSFontContext;
+enum {
+ kATSFontContextUnspecified = 0,
+ kATSFontContextGlobal = 1,
+ kATSFontContextLocal = 2
+};
+
+enum {
+ kATSOptionFlagsDoNotNotify = 0x00000001 << 8, /* Do not notify after global activation/deactivation */
+ kATSOptionFlagsIterationScopeMask = 0x00000007 << 12, /* Mask option bits 12-14 for iteration scopes */
+ kATSOptionFlagsDefaultScope = 0x00000000 << 12,
+ kATSOptionFlagsUnRestrictedScope = 0x00000001 << 12,
+ kATSOptionFlagsRestrictedScope = 0x00000002 << 12,
+ kATSOptionFlagsProcessSubdirectories = 0x00000001 << 6
+};
+
+/* Iteration Option Flags */
+enum {
+ kATSOptionFlagsIterateByPrecedenceMask = 0x00000001 << 5
+};
+
+typedef UInt32 ATSFontFormat;
+enum {
+ kATSFontFormatUnspecified = 0
+};
+
+typedef CALLBACK_API_C( OSStatus , ATSFontFamilyApplierFunction )(ATSFontFamilyRef iFamily, void *iRefCon);
+typedef CALLBACK_API_C( OSStatus , ATSFontApplierFunction )(ATSFontRef iFont, void *iRefCon);
+typedef struct ATSFontFamilyIterator_* ATSFontFamilyIterator;
+typedef struct ATSFontIterator_* ATSFontIterator;
+enum {
+ kATSFontFilterCurrentVersion = 0
+};
+
+enum ATSFontFilterSelector {
+ kATSFontFilterSelectorUnspecified = 0,
+ kATSFontFilterSelectorGeneration = 3,
+ kATSFontFilterSelectorFontFamily = 7,
+ kATSFontFilterSelectorFontFamilyApplierFunction = 8,
+ kATSFontFilterSelectorFontApplierFunction = 9
+};
+typedef enum ATSFontFilterSelector ATSFontFilterSelector;
+
+struct ATSFontFilter {
+ UInt32 version;
+ ATSFontFilterSelector filterSelector;
+ union {
+ ATSGeneration generationFilter;
+ ATSFontFamilyRef fontFamilyFilter;
+ ATSFontFamilyApplierFunction fontFamilyApplierFunctionFilter;
+ ATSFontApplierFunction fontApplierFunctionFilter;
+ } filter;
+};
+typedef struct ATSFontFilter ATSFontFilter;
+/* Notification related */
+typedef struct ATSFontNotificationRef_* ATSFontNotificationRef;
+typedef struct ATSFontNotificationInfoRef_* ATSFontNotificationInfoRef;
+
+/*
+ * ATSFontNotifyOption
+ *
+ * Discussion:
+ * Options used with ATSFontNotificationSubscribe. Any of the
+ * options that follow may be used together in order to alter the
+ * default behavior of ATS notifications.
+ */
+enum ATSFontNotifyOption {
+
+ /*
+ * Default behavior of ATSFontNotificationSubscribe.
+ */
+ kATSFontNotifyOptionDefault = 0,
+
+ /*
+ * Normally applications will only receive ATS notifications while in
+ * the foreground. If suspended, the notification will be delivered
+ * when then application comes to the foreground. This is the
+ * default. You should set this option if you are a server or tool
+ * that performs font management functions and require immediate
+ * notification when something changes.
+ */
+ kATSFontNotifyOptionReceiveWhileSuspended = 1L << 0
+};
+typedef enum ATSFontNotifyOption ATSFontNotifyOption;
+
+
+
+
+/*
+ * ATSFontNotifyAction
+ *
+ * Discussion:
+ * Used with ATSFontNotify. The following is a list of actions you
+ * might wish the ATS server to perform and notify clients if
+ * appropriate.
+ */
+enum ATSFontNotifyAction {
+
+ /*
+ * Used after a batch (de)activation of fonts occurs. Typically the
+ * caller has exercised multiple global (De)Activation calls with the
+ * kATSOptionFlagsDoNotNotify set. Once all calls are completed, one
+ * may use ATSFontNotify with this action to ask ATS to notify all
+ * clients.
+ */
+ kATSFontNotifyActionFontsChanged = 1,
+
+ /*
+ * The ATS system with the help of the Finder keeps track of changes
+ * to any of the fonts directories ( System, Local, Network, User, &
+ * Classic). However, one may wish to add/remove fonts to these
+ * locations programmatically. This action is used to let ATS
+ * server to rescan these directories and post notifications if
+ * necessary.
+ */
+ kATSFontNotifyActionDirectoriesChanged = 2
+};
+typedef enum ATSFontNotifyAction ATSFontNotifyAction;
+
+
+
+/*
+ * ATSNotificationCallback
+ *
+ * Discussion:
+ * Callback delivered for ATS notifications.
+ *
+ * Parameters:
+ *
+ * info:
+ * Parameter is placed here for future improvements. Initially
+ * the contents of this parameter will be NULL.
+ *
+ * refCon:
+ * User data/state to be supplied to callback function
+ */
+typedef CALLBACK_API_C( void , ATSNotificationCallback )(ATSFontNotificationInfoRef info, void *refCon);
+/* ----------------------------------------------------------------------------------------- */
+/* Font container */
+/* ----------------------------------------------------------------------------------------- */
+/*
+ * ATSGetGeneration()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSGeneration )
+ATSGetGeneration(void);
+
+
+/*
+ * ATSFontActivateFromFileSpecification()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontActivateFromFileSpecification(
+ const FSSpec * iFile,
+ ATSFontContext iContext,
+ ATSFontFormat iFormat,
+ void * iReserved,
+ ATSOptionFlags iOptions,
+ ATSFontContainerRef * oContainer);
+
+
+/*
+ * ATSFontActivateFromMemory()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontActivateFromMemory(
+ LogicalAddress iData,
+ ByteCount iLength,
+ ATSFontContext iContext,
+ ATSFontFormat iFormat,
+ void * iReserved,
+ ATSOptionFlags iOptions,
+ ATSFontContainerRef * oContainer);
+
+
+/*
+ * ATSFontDeactivate()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontDeactivate(
+ ATSFontContainerRef iContainer,
+ void * iRefCon,
+ ATSOptionFlags iOptions);
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Font family */
+/* ----------------------------------------------------------------------------------------- */
+/*
+ * ATSFontFamilyApplyFunction()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyApplyFunction(
+ ATSFontFamilyApplierFunction iFunction,
+ void * iRefCon);
+
+
+/*
+ * ATSFontFamilyIteratorCreate()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyIteratorCreate(
+ ATSFontContext iContext,
+ const ATSFontFilter * iFilter, /* can be NULL */
+ void * iRefCon,
+ ATSOptionFlags iOptions,
+ ATSFontFamilyIterator * ioIterator);
+
+
+/*
+ * ATSFontFamilyIteratorRelease()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyIteratorRelease(ATSFontFamilyIterator * ioIterator);
+
+
+/*
+ * ATSFontFamilyIteratorReset()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyIteratorReset(
+ ATSFontContext iContext,
+ const ATSFontFilter * iFilter, /* can be NULL */
+ void * iRefCon,
+ ATSOptionFlags iOptions,
+ ATSFontFamilyIterator * ioIterator);
+
+
+/*
+ * ATSFontFamilyIteratorNext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyIteratorNext(
+ ATSFontFamilyIterator iIterator,
+ ATSFontFamilyRef * oFamily);
+
+
+/*
+ * ATSFontFamilyFindFromName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSFontFamilyRef )
+ATSFontFamilyFindFromName(
+ CFStringRef iName,
+ ATSOptionFlags iOptions);
+
+
+/*
+ * ATSFontFamilyGetGeneration()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSGeneration )
+ATSFontFamilyGetGeneration(ATSFontFamilyRef iFamily);
+
+
+/*
+ * ATSFontFamilyGetName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyGetName(
+ ATSFontFamilyRef iFamily,
+ ATSOptionFlags iOptions,
+ CFStringRef * oName);
+
+
+/*
+ * ATSFontFamilyGetEncoding()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( TextEncoding )
+ATSFontFamilyGetEncoding(ATSFontFamilyRef iFamily);
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Font */
+/* ----------------------------------------------------------------------------------------- */
+/*
+ * ATSFontApplyFunction()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontApplyFunction(
+ ATSFontApplierFunction iFunction,
+ void * iRefCon);
+
+
+/*
+ * ATSFontIteratorCreate()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontIteratorCreate(
+ ATSFontContext iContext,
+ const ATSFontFilter * iFilter, /* can be NULL */
+ void * iRefCon,
+ ATSOptionFlags iOptions,
+ ATSFontIterator * ioIterator);
+
+
+/*
+ * ATSFontIteratorRelease()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontIteratorRelease(ATSFontIterator * ioIterator);
+
+
+/*
+ * ATSFontIteratorReset()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontIteratorReset(
+ ATSFontContext iContext,
+ const ATSFontFilter * iFilter, /* can be NULL */
+ void * iRefCon,
+ ATSOptionFlags iOptions,
+ ATSFontIterator * ioIterator);
+
+
+/*
+ * ATSFontIteratorNext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontIteratorNext(
+ ATSFontIterator iIterator,
+ ATSFontRef * oFont);
+
+
+/*
+ * ATSFontFindFromName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSFontRef )
+ATSFontFindFromName(
+ CFStringRef iName,
+ ATSOptionFlags iOptions);
+
+
+/*
+ * ATSFontFindFromPostScriptName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSFontRef )
+ATSFontFindFromPostScriptName(
+ CFStringRef iName,
+ ATSOptionFlags iOptions);
+
+
+/*
+ * ATSFontFindFromContainer()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFindFromContainer(
+ ATSFontContainerRef iContainer,
+ ATSOptionFlags iOptions,
+ ItemCount iCount,
+ ATSFontRef ioArray[],
+ ItemCount * oCount);
+
+
+/*
+ * ATSFontGetGeneration()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSGeneration )
+ATSFontGetGeneration(ATSFontRef iFont);
+
+
+/*
+ * ATSFontGetName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetName(
+ ATSFontRef iFont,
+ ATSOptionFlags iOptions,
+ CFStringRef * oName);
+
+
+/*
+ * ATSFontGetPostScriptName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetPostScriptName(
+ ATSFontRef iFont,
+ ATSOptionFlags iOptions,
+ CFStringRef * oName);
+
+
+/*
+ * ATSFontGetTableDirectory()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetTableDirectory(
+ ATSFontRef iFont,
+ ByteCount iBufferSize,
+ void * ioBuffer,
+ ByteCount * oSize); /* can be NULL */
+
+
+/*
+ * ATSFontGetTable()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetTable(
+ ATSFontRef iFont,
+ FourCharCode iTag,
+ ByteOffset iOffset,
+ ByteCount iBufferSize,
+ void * ioBuffer,
+ ByteCount * oSize); /* can be NULL */
+
+
+/*
+ * ATSFontGetHorizontalMetrics()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetHorizontalMetrics(
+ ATSFontRef iFont,
+ ATSOptionFlags iOptions,
+ ATSFontMetrics * oMetrics);
+
+
+/*
+ * ATSFontGetVerticalMetrics()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetVerticalMetrics(
+ ATSFontRef iFont,
+ ATSOptionFlags iOptions,
+ ATSFontMetrics * oMetrics);
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Compatibility */
+/* ----------------------------------------------------------------------------------------- */
+/*
+ * ATSFontFamilyFindFromQuickDrawName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ATSFontFamilyRef )
+ATSFontFamilyFindFromQuickDrawName(ConstStr255Param iName);
+
+
+/*
+ * ATSFontFamilyGetQuickDrawName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontFamilyGetQuickDrawName(
+ ATSFontFamilyRef iFamily,
+ Str255 oName);
+
+
+/*
+ * ATSFontGetFileSpecification()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetFileSpecification(
+ ATSFontRef iFont,
+ FSSpec * oFile);
+
+
+/*
+ * ATSFontGetFontFamilyResource()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+ATSFontGetFontFamilyResource(
+ ATSFontRef iFont,
+ ByteCount iBufferSize,
+ void * ioBuffer,
+ ByteCount * oSize); /* can be NULL */
+
+
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Notification */
+/* ----------------------------------------------------------------------------------------- */
+/*
+ * ATSFontNotify()
+ *
+ * Summary:
+ * Used to alert ATS that an action which may require notification
+ * to clients has occurred.
+ *
+ * Parameters:
+ *
+ * action:
+ * Action that should be taken by the ATS Server
+ *
+ * info:
+ * Any required or optional information that may be required by
+ * the action taken.
+ *
+ * Result:
+ * noErr Action successfully reported paramErr Invalid action passed
+ *
+ * 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( OSStatus )
+ATSFontNotify(
+ ATSFontNotifyAction action,
+ void * info); /* can be NULL */
+
+
+
+/*
+ * ATSFontNotificationSubscribe()
+ *
+ * Summary:
+ * Ask the ATS System to notify caller when certain events have
+ * occurred. Note that your application must have a CFRunLoop in
+ * order to receive notifications. Any Appkit or Carbon event loop
+ * based application will have one by default.
+ *
+ * Parameters:
+ *
+ * callback:
+ * Function that will be called by the ATS system whenever an
+ * event of interest takes place.
+ *
+ * options:
+ * Set the wanted ATSFontNotificationOptions to modify the default
+ * behavior of ATS Notifications.
+ *
+ * iRefcon:
+ * User data/state which will be passed to the callback funtion
+ *
+ * oNotificationRef:
+ * You may use this reference to un-subscribe to this notification.
+ *
+ * Result:
+ * noErr Subscribed successfully paramErr NULL callback was passed.
+ * memFullErr Could not allocate enough memory for internal data
+ * structures.
+ *
+ * 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( OSStatus )
+ATSFontNotificationSubscribe(
+ ATSNotificationCallback callback,
+ ATSFontNotifyOption options,
+ void * iRefcon, /* can be NULL */
+ ATSFontNotificationRef * oNotificationRef); /* can be NULL */
+
+
+
+/*
+ * ATSFontNotificationUnsubscribe()
+ *
+ * Summary:
+ * Release subscription and stop receiving notifications for a given
+ * reference.
+ *
+ * Parameters:
+ *
+ * notificationRef:
+ * Notification reference for which you want to stop receiving
+ * notifications. Note, if more than one notification has been
+ * requested of ATS, you will still receive notifications on those
+ * requests.
+ *
+ * Result:
+ * noErr Unsubscribed successfully paramErr NULL/invalid
+ * notificationRef passed
+ *
+ * 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( OSStatus )
+ATSFontNotificationUnsubscribe(ATSFontNotificationRef notificationRef);
+
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Font query message hooks */
+/* ----------------------------------------------------------------------------------------- */
+
+/*
+ * ATSFontQuerySourceContext
+ *
+ * Summary:
+ * A parameter block for client information to be retained by ATS
+ * and passed back to an ATSFontQueryCallback function.
+ */
+struct ATSFontQuerySourceContext {
+
+ /*
+ * A 32-bit unsigned integer that indicates the version of this
+ * structure. This should be set to 0.
+ */
+ UInt32 version;
+
+ /*
+ * A pointer-sized client datum that should be passed back to an
+ * ATSFontQueryCallback function.
+ */
+ void * refCon;
+
+ /*
+ * The callback used to add a retain to the refCon.
+ */
+ CFAllocatorRetainCallBack retain;
+
+ /*
+ * The callback used to remove a retain to the refCon.
+ */
+ CFAllocatorReleaseCallBack release;
+};
+typedef struct ATSFontQuerySourceContext ATSFontQuerySourceContext;
+
+/*
+ * ATSFontQueryMessageID
+ *
+ * Discussion:
+ * Constants for ATS font query message types.
+ */
+enum ATSFontQueryMessageID {
+
+ /*
+ * The message ID for a font request query. The data for a message
+ * with this ID is a flattened CFDictionaryRef with keys and values
+ * as decribed below. A query dictionary may have any or all of these
+ * entries.
+ */
+ kATSQueryActivateFontMessage = FOUR_CHAR_CODE('atsa')
+};
+typedef enum ATSFontQueryMessageID ATSFontQueryMessageID;
+
+
+/*
+ * ATSFontQueryCallback
+ *
+ * Summary:
+ * Callback for receiving font-related queries from ATS.
+ *
+ * Parameters:
+ *
+ * msgid:
+ * An ATSFontQueryMessageID that identifies the message type.
+ *
+ * data:
+ * A CFPropertyListRef that represents the query. The content is
+ * message type-specific.
+ *
+ * refCon:
+ * A pointer-sized client datum that was optionally provided to
+ * ATSCreateFontQueryRunLoopSource.
+ *
+ * Result:
+ * A CFPropertyListRef that represents the message type-specific
+ * response to the query. May be NULL.
+ */
+typedef CALLBACK_API_C( CFPropertyListRef , ATSFontQueryCallback )(ATSFontQueryMessageID msgid, CFPropertyListRef data, void *refCon);
+/*
+ * ATSCreateFontQueryRunLoopSource()
+ *
+ * Summary:
+ * Creates a CFRunLoopSourceRef that will be used to convey font
+ * queries from ATS.
+ *
+ * Parameters:
+ *
+ * queryOrder:
+ * A CFIndex that specifies the priority of this query receiver
+ * relative to others. When ATS makes a font query, it will send
+ * the query to each receiver in priority order, from highest to
+ * lowest. "Normal" priority is 0.
+ *
+ * sourceOrder:
+ * The order of the created run loop source.
+ *
+ * callout:
+ * A function pointer of type ATSFontQueryCallback that will be
+ * called to process a font query.
+ *
+ * context:
+ * An ATSFontQuerySourceContext parameter block that provides a
+ * pointer-sized client datum which will be retained by ATS and
+ * passed to the callout function. May be NULL.
+ *
+ * Result:
+ * A CFRunLoopSourceRef. To stop receiving queries, invalidate this
+ * run loop source.
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( CFRunLoopSourceRef )
+ATSCreateFontQueryRunLoopSource(
+ CFIndex queryOrder,
+ CFIndex sourceOrder,
+ ATSFontQueryCallback callout,
+ const ATSFontQuerySourceContext * context); /* can be NULL */
+
+
+/* ----------------------------------------------------------------------------------------- */
+/* Font request query message content */
+/* ----------------------------------------------------------------------------------------- */
+/* Keys in a font request query dictionary. */
+/* These keys appear in the dictionary for a kATSQueryActivateFontMessage query. */
+
+/*
+ * kATSQueryClientPID
+ *
+ * Discussion:
+ * The process ID of the application making the query. The
+ * corresponding value is a CFNumberRef that contains a pid_t.
+ */
+#define kATSQueryClientPID CFSTR("ATS client pid")
+
+/*
+ * kATSQueryQDFamilyName
+ *
+ * Discussion:
+ * The Quickdraw-style family name of the font being requested, e.g.
+ * the name passed to GetFNum. The corresponding value is a
+ * CFStringRef.
+ */
+#define kATSQueryQDFamilyName CFSTR("font family name")
+
+/*
+ * kATSQueryFontName
+ *
+ * Discussion:
+ * The name of the font being requested. The corresponding value is
+ * a CFStringRef suitable as an argument to ATSFontFindFromName().
+ * This should match a candidate font's unique or full name.
+ */
+#define kATSQueryFontName CFSTR("font name")
+
+/*
+ * kATSQueryFontPostScriptName
+ *
+ * Discussion:
+ * The PostScript name of the font being requested. The
+ * corresponding value is a CFStringRef suitable as an argument to
+ * ATSFontFindFromPostScriptName(). This should match either the
+ * PostScript name derived from the font's FOND resource or its sfnt
+ * name table, with preference given to the FOND PostScript name.
+ */
+#define kATSQueryFontPostScriptName CFSTR("font PS name")
+
+/*
+ * kATSQueryFontNameTableEntries
+ *
+ * Discussion:
+ * A descriptor for sfnt name table entries that the requested font
+ * must have. The corresponding value is a CFArrayRef of
+ * CFDictionaryRefs that describe name table entries. A font must
+ * have all of the specified entries to be considered a match.
+ */
+#define kATSQueryFontNameTableEntries CFSTR("font name table entries")
+/* Keys in a font raw name descriptor dictionary. */
+
+/*
+ * kATSFontNameTableCode
+ *
+ * Discussion:
+ * The font name's name code. The corresponding value is a
+ * CFNumberRef. If missing, assume kFontNoNameCode.
+ */
+#define kATSFontNameTableCode CFSTR("font name code")
+
+/*
+ * kATSFontNameTablePlatform
+ *
+ * Discussion:
+ * The font name's platform code. The corresponding value is a
+ * CFNumberRef. If missing, assume kFontNoPlatformCode.
+ */
+#define kATSFontNameTablePlatform CFSTR("font platform code")
+
+/*
+ * kATSFontNameTableScript
+ *
+ * Discussion:
+ * The font name's script code. The corresponding value is a
+ * CFNumberRef. If missing, assume kFontNoScriptCode.
+ */
+#define kATSFontNameTableScript CFSTR("font script code")
+
+/*
+ * kATSFontNameTableLanguage
+ *
+ * Discussion:
+ * The font name's language code. The corresponding value is a
+ * CFNumberRef. If missing, assume kFontNoLanguageCode.
+ */
+#define kATSFontNameTableLanguage CFSTR("font language code")
+
+/*
+ * kATSFontNameTableBytes
+ *
+ * Discussion:
+ * The raw bytes of the font name. The corresponding value is a
+ * CFDataRef that contains the raw name bytes.
+ */
+#define kATSFontNameTableBytes CFSTR("font name table bytes")
+
+#if PRAGMA_ENUM_ALWAYSINT
+ #pragma enumsalwaysint reset
+ #ifdef __ATSFONT__RESTORE_TWOBYTEINTS
+ #pragma fourbyteints off
+ #endif
+#elif PRAGMA_ENUM_OPTIONS
+ #pragma option enum=reset
+#elif defined(__ATSFONT__RESTORE_PACKED_ENUMS)
+ #pragma options(pack_enums)
+#endif
+
+#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 /* __ATSFONT__ */
+