Mercurial > projects > dstep
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