view dstep/applicationservices/ats/SFNTTypes.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.SFNTTypes;

//import dstep.AvailabilityMacros;
import dstep.coreservices.CoreServices;
import dstep.objc.bridge.TypeEncoding;

alias uint FontNameCode;
alias uint FontPlatformCode;
alias uint FontScriptCode;
alias uint FontLanguageCode;

// This is needed otherwise the enums will fail compiling with gdc
version (GNU)
{
	private
	{
		const __cmapFontTableTag = getOSType!("cmap");
		const __nameFontTableTag = getOSType!("name");
		const __variationFontTableTag = getOSType!("fvar");
		const __descriptorFontTableTag = getOSType!("fdsc");
		const __featureFontTableTag = getOSType!("feat");
		const __os2FontTableTag = getOSType!("OS/2");
	}
}

enum
{
	sizeof_sfntDirectory = 12
}

enum
{
	cmapFontTableTag = getOSType!("cmap")
}

enum
{
	kFontUnicodePlatform = 0,
	kFontMacintoshPlatform = 1,
	kFontReservedPlatform = 2,
	kFontMicrosoftPlatform = 3,
	kFontCustomPlatform = 4
}

enum
{
	kFontUnicodeDefaultSemantics = 0,
	kFontUnicodeV1_1Semantics = 1,
	kFontISO10646_1993Semantics = 2
}

enum
{
	kFontRomanScript = 0,
	kFontJapaneseScript = 1,
	kFontTraditionalChineseScript = 2,
	kFontChineseScript = kFontTraditionalChineseScript,
	kFontKoreanScript = 3,
	kFontArabicScript = 4,
	kFontHebrewScript = 5,
	kFontGreekScript = 6,
	kFontCyrillicScript = 7,
	kFontRussian = kFontCyrillicScript,
	kFontRSymbolScript = 8,
	kFontDevanagariScript = 9,
	kFontGurmukhiScript = 10,
	kFontGujaratiScript = 11,
	kFontOriyaScript = 12,
	kFontBengaliScript = 13,
	kFontTamilScript = 14,
	kFontTeluguScript = 15,
	kFontKannadaScript = 16,
	kFontMalayalamScript = 17,
	kFontSinhaleseScript = 18,
	kFontBurmeseScript = 19,
	kFontKhmerScript = 20,
	kFontThaiScript = 21,
	kFontLaotianScript = 22,
	kFontGeorgianScript = 23,
	kFontArmenianScript = 24,
	kFontSimpleChineseScript = 25,
	kFontTibetanScript = 26,
	kFontMongolianScript = 27,
	kFontGeezScript = 28,
	kFontEthiopicScript = kFontGeezScript,
	kFontAmharicScript = kFontGeezScript,
	kFontSlavicScript = 29,
	kFontEastEuropeanRomanScript = kFontSlavicScript,
	kFontVietnameseScript = 30,
	kFontExtendedArabicScript = 31,
	kFontSindhiScript = kFontExtendedArabicScript,
	kFontUninterpretedScript = 32
}

enum
{
	kFontMicrosoftSymbolScript = 0,
	kFontMicrosoftStandardScript = 1,
	kFontMicrosoftUCS4Script = 10
}

enum
{
	kFontCustom8BitScript = 0,
	kFontCustom816BitScript = 1,
	kFontCustom16BitScript = 2
}

enum
{
	kFontEnglishLanguage = 0,
	kFontFrenchLanguage = 1,
	kFontGermanLanguage = 2,
	kFontItalianLanguage = 3,
	kFontDutchLanguage = 4,
	kFontSwedishLanguage = 5,
	kFontSpanishLanguage = 6,
	kFontDanishLanguage = 7,
	kFontPortugueseLanguage = 8,
	kFontNorwegianLanguage = 9,
	kFontHebrewLanguage = 10,
	kFontJapaneseLanguage = 11,
	kFontArabicLanguage = 12,
	kFontFinnishLanguage = 13,
	kFontGreekLanguage = 14,
	kFontIcelandicLanguage = 15,
	kFontMalteseLanguage = 16,
	kFontTurkishLanguage = 17,
	kFontCroatianLanguage = 18,
	kFontTradChineseLanguage = 19,
	kFontUrduLanguage = 20,
	kFontHindiLanguage = 21,
	kFontThaiLanguage = 22,
	kFontKoreanLanguage = 23,
	kFontLithuanianLanguage = 24,
	kFontPolishLanguage = 25,
	kFontHungarianLanguage = 26,
	kFontEstonianLanguage = 27,
	kFontLettishLanguage = 28,
	kFontLatvianLanguage = kFontLettishLanguage,
	kFontSaamiskLanguage = 29,
	kFontLappishLanguage = kFontSaamiskLanguage,
	kFontFaeroeseLanguage = 30,
	kFontFarsiLanguage = 31,
	kFontPersianLanguage = kFontFarsiLanguage,
	kFontRussianLanguage = 32,
	kFontSimpChineseLanguage = 33,
	kFontFlemishLanguage = 34,
	kFontIrishLanguage = 35,
	kFontAlbanianLanguage = 36,
	kFontRomanianLanguage = 37,
	kFontCzechLanguage = 38,
	kFontSlovakLanguage = 39,
	kFontSlovenianLanguage = 40,
	kFontYiddishLanguage = 41,
	kFontSerbianLanguage = 42,
	kFontMacedonianLanguage = 43,
	kFontBulgarianLanguage = 44,
	kFontUkrainianLanguage = 45,
	kFontByelorussianLanguage = 46,
	kFontUzbekLanguage = 47,
	kFontKazakhLanguage = 48,
	kFontAzerbaijaniLanguage = 49,
	kFontAzerbaijanArLanguage = 50,
	kFontArmenianLanguage = 51,
	kFontGeorgianLanguage = 52,
	kFontMoldavianLanguage = 53,
	kFontKirghizLanguage = 54,
	kFontTajikiLanguage = 55,
	kFontTurkmenLanguage = 56,
	kFontMongolianLanguage = 57,
	kFontMongolianCyrLanguage = 58,
	kFontPashtoLanguage = 59,
	kFontKurdishLanguage = 60,
	kFontKashmiriLanguage = 61,
	kFontSindhiLanguage = 62,
	kFontTibetanLanguage = 63,
	kFontNepaliLanguage = 64,
	kFontSanskritLanguage = 65,
	kFontMarathiLanguage = 66,
	kFontBengaliLanguage = 67,
	kFontAssameseLanguage = 68,
	kFontGujaratiLanguage = 69,
	kFontPunjabiLanguage = 70,
	kFontOriyaLanguage = 71,
	kFontMalayalamLanguage = 72,
	kFontKannadaLanguage = 73,
	kFontTamilLanguage = 74,
	kFontTeluguLanguage = 75,
	kFontSinhaleseLanguage = 76,
	kFontBurmeseLanguage = 77,
	kFontKhmerLanguage = 78,
	kFontLaoLanguage = 79,
	kFontVietnameseLanguage = 80,
	kFontIndonesianLanguage = 81,
	kFontTagalogLanguage = 82,
	kFontMalayRomanLanguage = 83,
	kFontMalayArabicLanguage = 84,
	kFontAmharicLanguage = 85,
	kFontTigrinyaLanguage = 86,
	kFontGallaLanguage = 87,
	kFontOromoLanguage = kFontGallaLanguage,
	kFontSomaliLanguage = 88,
	kFontSwahiliLanguage = 89,
	kFontRuandaLanguage = 90,
	kFontRundiLanguage = 91,
	kFontChewaLanguage = 92,
	kFontMalagasyLanguage = 93,
	kFontEsperantoLanguage = 94,
	kFontWelshLanguage = 128,
	kFontBasqueLanguage = 129,
	kFontCatalanLanguage = 130,
	kFontLatinLanguage = 131,
	kFontQuechuaLanguage = 132,
	kFontGuaraniLanguage = 133,
	kFontAymaraLanguage = 134,
	kFontTatarLanguage = 135,
	kFontUighurLanguage = 136,
	kFontDzongkhaLanguage = 137,
	kFontJavaneseRomLanguage = 138,
	kFontSundaneseRomLanguage = 139
}

enum : uint
{
	kFontNoPlatformCode = (~0),
	kFontNoScriptCode = (~0),
	kFontNoLanguageCode = (~0)
}

enum
{
	sizeof_sfntCMapSubHeader = 6
}

enum
{
	sizeof_sfntCMapExtendedSubHeader = 12
}

enum
{
	sizeof_sfntCMapEncoding = 8
}

enum
{
	sizeof_sfntCMapHeader = 4
}

enum
{
	nameFontTableTag = getOSType!("name")
}

enum
{
	kFontCopyrightName = 0,
	kFontFamilyName = 1,
	kFontStyleName = 2,
	kFontUniqueName = 3,
	kFontFullName = 4,
	kFontVersionName = 5,
	kFontPostscriptName = 6,
	kFontTrademarkName = 7,
	kFontManufacturerName = 8,
	kFontDesignerName = 9,
	kFontDescriptionName = 10,
	kFontVendorURLName = 11,
	kFontDesignerURLName = 12,
	kFontLicenseDescriptionName = 13,
	kFontLicenseInfoURLName = 14,
	kFontPreferredFamilyName = 16,
	kFontPreferredSubfamilyName = 17,
	kFontMacCompatibleFullName = 18,
	kFontSampleTextName = 19,
	kFontPostScriptCIDName = 20,
	kFontLastReservedName = 255
}

enum : uint 
{
	kFontNoNameCode = (~0)
}

enum
{
	sizeof_sfntNameRecord = 12
}

enum
{
	sizeof_sfntNameHeader = 6
}

enum
{
	variationFontTableTag = getOSType!("fvar")
}

enum
{
	sizeof_sfntVariationAxis = 20
}

enum
{
	sizeof_sfntInstance = 4
}

enum
{
	sizeof_sfntVariationHeader = 16
}

enum
{
	descriptorFontTableTag = getOSType!("fdsc")
}

enum
{
	sizeof_sfntDescriptorHeader = 8
}

enum
{
	featureFontTableTag = getOSType!("feat")
}

enum
{
	os2FontTableTag = getOSType!("OS/2")
}

enum
{
	nonGlyphID = 65535L
}

enum : uint 
{
	kFontNoPlatform = (~0),
	kFontNoScript = (~0),
	kFontNoLanguage = (~0),
	kFontNoName = (~0)
}

struct sfntDirectoryEntry
{
	uint tableTag;
	uint checkSum;
	uint offset;
	uint length;
}


struct sfntDirectory
{
	uint format;
	ushort numOffsets;
	ushort searchRange;
	ushort entrySelector;
	ushort rangeShift;
	sfntDirectoryEntry* table;
}


struct sfntCMapSubHeader
{
	ushort format;
	ushort length;
	ushort languageID;
}


struct sfntCMapExtendedSubHeader
{
	ushort format;
	ushort reserved;
	uint length;
	uint language;
}


struct sfntCMapEncoding
{
	ushort platformID;
	ushort scriptID;
	uint offset;
}


struct sfntCMapHeader
{
	ushort version_;
	ushort numTables;
	sfntCMapEncoding* encoding;
}


struct sfntNameRecord
{
	ushort platformID;
	ushort scriptID;
	ushort languageID;
	ushort nameID;
	ushort length;
	ushort offset;
}


struct sfntNameHeader
{
	ushort format;
	ushort count;
	ushort stringOffset;
	sfntNameRecord* rec;
}


struct sfntVariationAxis
{
	uint axisTag;
	int minValue;
	int defaultValue;
	int maxValue;
	short flags;
	short nameID;
}


struct sfntInstance
{
	short nameID;
	short flags;
	Fixed* coord;
}


struct sfntVariationHeader
{
	int version_;
	ushort offsetToData;
	ushort countSizePairs;
	ushort axisCount;
	ushort axisSize;
	ushort instanceCount;
	ushort instanceSize;
	sfntVariationAxis* axis;
	sfntInstance* instance;
}


struct sfntFontDescriptor
{
	uint name;
	int value;
}


struct sfntDescriptorHeader
{
	int version_;
	int descriptorCount;
	sfntFontDescriptor* descriptor;
}


struct sfntFeatureName
{
	ushort featureType;
	ushort settingCount;
	int offsetToSettings;
	ushort featureFlags;
	ushort nameID;
}


struct sfntFontFeatureSetting
{
	ushort setting;
	ushort nameID;
}


struct sfntFontRunFeature
{
	ushort featureType;
	ushort setting;
}


struct sfntFeatureHeader
{
	int version_;
	ushort featureNameCount;
	ushort featureSetCount;
	int reserved;
	sfntFeatureName* names;
	sfntFontFeatureSetting* settings;
	sfntFontRunFeature* runs;
}


struct FontVariation
{
	uint name;
	int value;
}