view 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 source

/**
 * 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);
}