diff dstep/applicationservices/ats/ATSFont.d @ 12:9f0b49a2f64e

Added the ApplicationServices frameworks: ATS, ColorSync and CoreGraphics
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 14:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/applicationservices/ats/ATSFont.d	Mon Aug 03 14:00:21 2009 +0200
@@ -0,0 +1,204 @@
+/**
+ * Copyright: Copyright (c) 2009 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Aug 1, 2009 
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module dstep.applicationservices.ats.ATSFont;
+
+//import dstep.AvailabilityMacros;
+import dstep.applicationservices.ats.ATSTypes;
+import dstep.applicationservices.ats.SFNTTypes;
+import dstep.corefoundation.CoreFoundation;
+import dstep.coreservices.CoreServices;
+import dstep.objc.bridge.TypeEncoding;
+
+struct ATSFontFamilyIterator_;
+struct ATSFontIterator_;
+struct ATSFontNotificationRef_;
+struct ATSFontNotificationInfoRef_;
+
+alias uint ATSFontContext;
+alias ATSFontFamilyIterator_* ATSFontFamilyIterator;
+alias ATSFontIterator_* ATSFontIterator;
+alias int ATSFontFilterSelector;
+alias ATSFontNotificationRef_* ATSFontNotificationRef;
+alias ATSFontNotificationInfoRef_* ATSFontNotificationInfoRef;
+alias int ATSFontNotifyOption;
+alias int ATSFontNotifyAction;
+alias int ATSFontQueryMessageID;
+alias uint ATSFontAutoActivationSetting;
+
+extern (C)
+{
+	alias int function (uint, void*) ATSFontApplierFunction;
+	alias void function (ATSFontNotificationInfoRef, void*) ATSNotificationCallback;
+	alias CFPropertyListRef function (int, CFPropertyListRef, void*) ATSFontQueryCallback;
+	alias int function (uint, void*) ATSFontFamilyApplierFunction;
+}
+
+// This is needed otherwise the enums will fail compiling with gdc
+version (GNU)
+{
+	private
+	{
+		const __kATSQueryActivateFontMessage = getOSType!("atsa");
+	}
+}
+
+enum
+{
+	kATSOptionFlagsDefault = kNilOptions,
+	kATSOptionFlagsComposeFontPostScriptName = 1 << 0,
+	kATSOptionFlagsUseDataForkAsResourceFork = 1 << 8,
+	kATSOptionFlagsUseResourceFork = 2 << 8,
+	kATSOptionFlagsUseDataFork = 3 << 8
+}
+
+enum
+{
+	kATSIterationCompleted = -980L,
+	kATSInvalidFontFamilyAccess = -981L,
+	kATSInvalidFontAccess = -982L,
+	kATSIterationScopeModified = -983L,
+	kATSInvalidFontTableAccess = -984L,
+	kATSInvalidFontContainerAccess = -985L,
+	kATSInvalidGlyphAccess = -986L
+}
+
+enum
+{
+	kATSFontContextUnspecified = 0,
+	kATSFontContextGlobal = 1,
+	kATSFontContextLocal = 2
+}
+
+enum
+{
+	kATSOptionFlagsActivateDisabled = 0x00000001 << 5,
+	kATSOptionFlagsProcessSubdirectories = 0x00000001 << 6,
+	kATSOptionFlagsDoNotNotify = 0x00000001 << 7,
+	kATSOptionFlagsRecordPersistently = 0x00000001 << 18
+}
+
+enum
+{
+	kATSOptionFlagsIterateByPrecedenceMask = 0x00000001 << 5,
+	kATSOptionFlagsIncludeDisabledMask = 0x00000001 << 7,
+	kATSOptionFlagsIterationScopeMask = 0x00000007 << 12,
+	kATSOptionFlagsDefaultScope = 0x00000000 << 12,
+	kATSOptionFlagsUnRestrictedScope = 0x00000001 << 12,
+	kATSOptionFlagsRestrictedScope = 0x00000002 << 12
+}
+
+enum
+{
+	kATSFontFilterCurrentVersion = 0
+}
+
+enum /*ATSFontFilterSelector*/ 
+{
+	kATSFontFilterSelectorUnspecified = 0,
+	kATSFontFilterSelectorGeneration = 3,
+	kATSFontFilterSelectorFontFamily = 7,
+	kATSFontFilterSelectorFontFamilyApplierFunction = 8,
+	kATSFontFilterSelectorFontApplierFunction = 9,
+	kATSFileReferenceFilterSelector = 10
+}
+
+enum /*ATSFontNotifyOption*/ 
+{
+	kATSFontNotifyOptionDefault = 0,
+	kATSFontNotifyOptionReceiveWhileSuspended = 1L << 0
+}
+
+enum /*ATSFontNotifyAction*/ 
+{
+	kATSFontNotifyActionFontsChanged = 1,
+	kATSFontNotifyActionDirectoriesChanged = 2
+}
+
+enum /*ATSFontQueryMessageID*/ 
+{
+	kATSQueryActivateFontMessage = getOSType!("atsa")
+}
+
+enum
+{
+	kATSFontAutoActivationDefault = 0,
+	kATSFontAutoActivationDisabled = 1,
+	kATSFontAutoActivationEnabled = 2,
+	kATSFontAutoActivationAsk = 4
+}
+
+struct ATSFontFilter
+{
+	 uint version_;
+	 ATSFontFilterSelector filterSelector;
+	 
+	 union
+	 {
+		 ATSGeneration generationFilter;
+		 ATSFontFamilyRef fontFamilyFilter;
+		 ATSFontFamilyApplierFunction fontFamilyApplierFunctionFilter;
+		 ATSFontApplierFunction fontApplierFunctionFilter;
+		 /*const*/ FSRef* fontFileRefFilter;
+	 }
+}
+
+
+struct ATSFontQuerySourceContext
+{
+	UInt32 version_;
+	void* refCon;
+	CFAllocatorRetainCallBack retain;
+	CFAllocatorReleaseCallBack release;
+}
+
+extern (C)
+{
+	uint ATSGetGeneration ();
+	int ATSFontActivateFromFileReference (FSRef* iFile, uint iContext, uint iFormat, void* iRefCon, uint iOptions, ATSFontContainerRef* oContainer);
+	int ATSFontActivateFromMemory (LogicalAddress iData, uint iLength, uint iContext, uint iFormat, void* iReserved, uint iOptions, ATSFontContainerRef* oContainer);
+	int ATSFontDeactivate (uint iContainer, void* iRefCon, uint iOptions);
+	int ATSFontGetContainerFromFileReference (FSRef* iFile, uint iContext, uint iOptions, ATSFontContainerRef* oContainer);
+	int ATSFontGetContainer (uint iFont, uint iOptions, ATSFontContainerRef* oContainer);
+	int ATSFontSetEnabled (uint iFont, uint iOptions, ubyte iEnabled);
+	ubyte ATSFontIsEnabled (uint iFont);
+	int ATSFontFamilyApplyFunction (ATSFontFamilyApplierFunction iFunction, void* iRefCon);
+	int ATSFontFamilyIteratorCreate (uint iContext, ATSFontFilter* iFilter, void* iRefCon, uint iOptions, ATSFontFamilyIterator* ioIterator);
+	int ATSFontFamilyIteratorRelease (ATSFontFamilyIterator* ioIterator);
+	int ATSFontFamilyIteratorReset (uint iContext, ATSFontFilter* iFilter, void* iRefCon, uint iOptions, ATSFontFamilyIterator* ioIterator);
+	int ATSFontFamilyIteratorNext (ATSFontFamilyIterator iIterator, ATSFontFamilyRef* oFamily);
+	uint ATSFontFamilyFindFromName (CFStringRef iName, uint iOptions);
+	uint ATSFontFamilyGetGeneration (uint iFamily);
+	int ATSFontFamilyGetName (uint iFamily, uint iOptions, CFStringRef* oName);
+	uint ATSFontFamilyGetEncoding (uint iFamily);
+	int ATSFontApplyFunction (ATSFontApplierFunction iFunction, void* iRefCon);
+	int ATSFontIteratorCreate (uint iContext, ATSFontFilter* iFilter, void* iRefCon, uint iOptions, ATSFontIterator* ioIterator);
+	int ATSFontIteratorRelease (ATSFontIterator* ioIterator);
+	int ATSFontIteratorReset (uint iContext, ATSFontFilter* iFilter, void* iRefCon, uint iOptions, ATSFontIterator* ioIterator);
+	int ATSFontIteratorNext (ATSFontIterator iIterator, ATSFontRef* oFont);
+	uint ATSFontFindFromName (CFStringRef iName, uint iOptions);
+	uint ATSFontFindFromPostScriptName (CFStringRef iName, uint iOptions);
+	int ATSFontFindFromContainer (uint iContainer, uint iOptions, uint iCount, ATSFontRef* ioArray, ItemCount* oCount);
+	uint ATSFontGetGeneration (uint iFont);
+	int ATSFontGetName (uint iFont, uint iOptions, CFStringRef* oName);
+	int ATSFontGetPostScriptName (uint iFont, uint iOptions, CFStringRef* oName);
+	int ATSFontGetTableDirectory (uint iFont, uint iBufferSize, void* ioBuffer, ByteCount* oSize);
+	int ATSFontGetTable (uint iFont, uint iTag, uint iOffset, uint iBufferSize, void* ioBuffer, ByteCount* oSize);
+	int ATSFontGetHorizontalMetrics (uint iFont, uint iOptions, ATSFontMetrics* oMetrics);
+	int ATSFontGetVerticalMetrics (uint iFont, uint iOptions, ATSFontMetrics* oMetrics);
+	uint ATSFontFamilyFindFromQuickDrawName (char* iName);
+	int ATSFontFamilyGetQuickDrawName (uint iFamily, ubyte[256] oName);
+	int ATSFontGetFileReference (uint iFont, FSRef* oFile);
+	int ATSFontGetFontFamilyResource (uint iFont, uint iBufferSize, void* ioBuffer, ByteCount* oSize);
+	int ATSFontNotify (int action, void* info);
+	int ATSFontNotificationSubscribe (ATSNotificationCallback callback, int options, void* iRefcon, ATSFontNotificationRef* oNotificationRef);
+	int ATSFontNotificationUnsubscribe (ATSFontNotificationRef notificationRef);
+	CFRunLoopSourceRef ATSCreateFontQueryRunLoopSource (int queryOrder, int sourceOrder, ATSFontQueryCallback callout, ATSFontQuerySourceContext* context);
+	int ATSFontSetGlobalAutoActivationSetting (uint iSetting);
+	uint ATSFontGetGlobalAutoActivationSetting ();
+	int ATSFontSetAutoActivationSettingForApplication (uint iSetting, CFURLRef iApplicationFileURL);
+	uint ATSFontGetAutoActivationSettingForApplication (CFURLRef iApplicationFileURL);
+}
\ No newline at end of file