Mercurial > projects > dstep
diff dstep/coreservices/carboncore/TextCommon.d @ 11:07194b026fa4
Added bindings to a couple of frameworks, new license + some other things
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 01 Aug 2009 15:03:28 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/coreservices/carboncore/TextCommon.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,628 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Jul 21, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.coreservices.carboncore.TextCommon; + +//import dstep.AvailabilityMacros; +import dstep.coreservices.carboncore.MacTypes; + +alias uint TextEncodingBase; +alias uint TextEncodingVariant; +alias uint TextEncodingFormat; +alias uint TextEncoding; +alias uint TextEncodingNameSelector; +alias TextEncodingRun* TextEncodingRunPtr; +alias TextEncodingRun* ConstTextEncodingRunPtr; +alias ScriptCodeRun* ScriptCodeRunPtr; +alias ScriptCodeRun* ConstScriptCodeRunPtr; +alias char* TextPtr; +alias char* ConstTextPtr; +alias wchar* UniCharArrayPtr; +alias wchar* ConstUniCharArrayPtr; +alias UniCharArrayPtr* UniCharArrayHandle; +alias uint UniCharArrayOffset; +alias TECInfo*[][][][] TECInfoPtr; +alias TECInfoPtr* TECInfoHandle; +alias int UCCharPropertyType; +alias uint UCCharPropertyValue; + +enum +{ + kTextFlushDefault = 0, + kTextCenter = 1, + kTextFlushRight = -1, + kTextFlushLeft = -2 +} + +enum +{ + kTextEncodingMacRoman = 0L, + kTextEncodingMacJapanese = 1, + kTextEncodingMacChineseTrad = 2, + kTextEncodingMacKorean = 3, + kTextEncodingMacArabic = 4, + kTextEncodingMacHebrew = 5, + kTextEncodingMacGreek = 6, + kTextEncodingMacCyrillic = 7, + kTextEncodingMacDevanagari = 9, + kTextEncodingMacGurmukhi = 10, + kTextEncodingMacGujarati = 11, + kTextEncodingMacOriya = 12, + kTextEncodingMacBengali = 13, + kTextEncodingMacTamil = 14, + kTextEncodingMacTelugu = 15, + kTextEncodingMacKannada = 16, + kTextEncodingMacMalayalam = 17, + kTextEncodingMacSinhalese = 18, + kTextEncodingMacBurmese = 19, + kTextEncodingMacKhmer = 20, + kTextEncodingMacThai = 21, + kTextEncodingMacLaotian = 22, + kTextEncodingMacGeorgian = 23, + kTextEncodingMacArmenian = 24, + kTextEncodingMacChineseSimp = 25, + kTextEncodingMacTibetan = 26, + kTextEncodingMacMongolian = 27, + kTextEncodingMacEthiopic = 28, + kTextEncodingMacCentralEurRoman = 29, + kTextEncodingMacVietnamese = 30, + kTextEncodingMacExtArabic = 31, + kTextEncodingMacSymbol = 33, + kTextEncodingMacDingbats = 34, + kTextEncodingMacTurkish = 35, + kTextEncodingMacCroatian = 36, + kTextEncodingMacIcelandic = 37, + kTextEncodingMacRomanian = 38, + kTextEncodingMacCeltic = 39, + kTextEncodingMacGaelic = 40, + kTextEncodingMacKeyboardGlyphs = 41 +} + +enum +{ + kTextEncodingMacTradChinese = kTextEncodingMacChineseTrad, + kTextEncodingMacRSymbol = 8, + kTextEncodingMacSimpChinese = kTextEncodingMacChineseSimp, + kTextEncodingMacGeez = kTextEncodingMacEthiopic, + kTextEncodingMacEastEurRoman = kTextEncodingMacCentralEurRoman, + kTextEncodingMacUninterp = 32 +} + +enum +{ + kTextEncodingMacUnicode = 0x7E +} + +enum +{ + kTextEncodingMacFarsi = 0x8C, + kTextEncodingMacUkrainian = 0x98, + kTextEncodingMacInuit = 0xEC, + kTextEncodingMacVT100 = 0xFC +} + +enum +{ + kTextEncodingMacHFS = 0xFF +} + +enum +{ + kTextEncodingUnicodeDefault = 0x0100, + kTextEncodingUnicodeV1_1 = 0x0101, + kTextEncodingISO10646_1993 = 0x0101, + kTextEncodingUnicodeV2_0 = 0x0103, + kTextEncodingUnicodeV2_1 = 0x0103, + kTextEncodingUnicodeV3_0 = 0x0104, + kTextEncodingUnicodeV3_1 = 0x0105, + kTextEncodingUnicodeV3_2 = 0x0106, + kTextEncodingUnicodeV4_0 = 0x0108, + kTextEncodingUnicodeV5_0 = 0x010A +} + +enum +{ + kTextEncodingISOLatin1 = 0x0201, + kTextEncodingISOLatin2 = 0x0202, + kTextEncodingISOLatin3 = 0x0203, + kTextEncodingISOLatin4 = 0x0204, + kTextEncodingISOLatinCyrillic = 0x0205, + kTextEncodingISOLatinArabic = 0x0206, + kTextEncodingISOLatinGreek = 0x0207, + kTextEncodingISOLatinHebrew = 0x0208, + kTextEncodingISOLatin5 = 0x0209, + kTextEncodingISOLatin6 = 0x020A, + kTextEncodingISOLatin7 = 0x020D, + kTextEncodingISOLatin8 = 0x020E, + kTextEncodingISOLatin9 = 0x020F, + kTextEncodingISOLatin10 = 0x0210 +} + +enum +{ + kTextEncodingDOSLatinUS = 0x0400, + kTextEncodingDOSGreek = 0x0405, + kTextEncodingDOSBalticRim = 0x0406, + kTextEncodingDOSLatin1 = 0x0410, + kTextEncodingDOSGreek1 = 0x0411, + kTextEncodingDOSLatin2 = 0x0412, + kTextEncodingDOSCyrillic = 0x0413, + kTextEncodingDOSTurkish = 0x0414, + kTextEncodingDOSPortuguese = 0x0415, + kTextEncodingDOSIcelandic = 0x0416, + kTextEncodingDOSHebrew = 0x0417, + kTextEncodingDOSCanadianFrench = 0x0418, + kTextEncodingDOSArabic = 0x0419, + kTextEncodingDOSNordic = 0x041A, + kTextEncodingDOSRussian = 0x041B, + kTextEncodingDOSGreek2 = 0x041C, + kTextEncodingDOSThai = 0x041D, + kTextEncodingDOSJapanese = 0x0420, + kTextEncodingDOSChineseSimplif = 0x0421, + kTextEncodingDOSKorean = 0x0422, + kTextEncodingDOSChineseTrad = 0x0423, + kTextEncodingWindowsLatin1 = 0x0500, + kTextEncodingWindowsANSI = 0x0500, + kTextEncodingWindowsLatin2 = 0x0501, + kTextEncodingWindowsCyrillic = 0x0502, + kTextEncodingWindowsGreek = 0x0503, + kTextEncodingWindowsLatin5 = 0x0504, + kTextEncodingWindowsHebrew = 0x0505, + kTextEncodingWindowsArabic = 0x0506, + kTextEncodingWindowsBalticRim = 0x0507, + kTextEncodingWindowsVietnamese = 0x0508, + kTextEncodingWindowsKoreanJohab = 0x0510 +} + +enum +{ + kTextEncodingUS_ASCII = 0x0600, + kTextEncodingANSEL = 0x0601, + kTextEncodingJIS_X0201_76 = 0x0620, + kTextEncodingJIS_X0208_83 = 0x0621, + kTextEncodingJIS_X0208_90 = 0x0622, + kTextEncodingJIS_X0212_90 = 0x0623, + kTextEncodingJIS_C6226_78 = 0x0624, + kTextEncodingShiftJIS_X0213 = 0x0628, + kTextEncodingJIS_X0213_MenKuTen = 0x0629, + kTextEncodingGB_2312_80 = 0x0630, + kTextEncodingGBK_95 = 0x0631, + kTextEncodingGB_18030_2000 = 0x0632, + kTextEncodingKSC_5601_87 = 0x0640, + kTextEncodingKSC_5601_92_Johab = 0x0641, + kTextEncodingCNS_11643_92_P1 = 0x0651, + kTextEncodingCNS_11643_92_P2 = 0x0652, + kTextEncodingCNS_11643_92_P3 = 0x0653 +} + +enum +{ + kTextEncodingISO_2022_JP = 0x0820, + kTextEncodingISO_2022_JP_2 = 0x0821, + kTextEncodingISO_2022_JP_1 = 0x0822, + kTextEncodingISO_2022_JP_3 = 0x0823, + kTextEncodingISO_2022_CN = 0x0830, + kTextEncodingISO_2022_CN_EXT = 0x0831, + kTextEncodingISO_2022_KR = 0x0840 +} + +enum +{ + kTextEncodingEUC_JP = 0x0920, + kTextEncodingEUC_CN = 0x0930, + kTextEncodingEUC_TW = 0x0931, + kTextEncodingEUC_KR = 0x0940 +} + +enum +{ + kTextEncodingShiftJIS = 0x0A01, + kTextEncodingKOI8_R = 0x0A02, + kTextEncodingBig5 = 0x0A03, + kTextEncodingMacRomanLatin1 = 0x0A04, + kTextEncodingHZ_GB_2312 = 0x0A05, + kTextEncodingBig5_HKSCS_1999 = 0x0A06, + kTextEncodingVISCII = 0x0A07, + kTextEncodingKOI8_U = 0x0A08, + kTextEncodingBig5_E = 0x0A09 +} + +enum +{ + kTextEncodingNextStepLatin = 0x0B01, + kTextEncodingNextStepJapanese = 0x0B02 +} + +enum +{ + kTextEncodingEBCDIC_US = 0x0C01, + kTextEncodingEBCDIC_CP037 = 0x0C02 +} + +enum +{ + kTextEncodingMultiRun = 0x0FFF, + kTextEncodingUnknown = 0xFFFF +} + +enum +{ + kTextEncodingDefaultVariant = 0 +} + +enum +{ + kMacRomanDefaultVariant = 0, + kMacRomanCurrencySignVariant = 1, + kMacRomanEuroSignVariant = 2 +} + +enum +{ + kMacCyrillicDefaultVariant = 0, + kMacCyrillicCurrSignStdVariant = 1, + kMacCyrillicCurrSignUkrVariant = 2, + kMacCyrillicEuroSignVariant = 3 +} + +enum +{ + kMacIcelandicStdDefaultVariant = 0, + kMacIcelandicTTDefaultVariant = 1, + kMacIcelandicStdCurrSignVariant = 2, + kMacIcelandicTTCurrSignVariant = 3, + kMacIcelandicStdEuroSignVariant = 4, + kMacIcelandicTTEuroSignVariant = 5 +} + +enum +{ + kMacCroatianDefaultVariant = 0, + kMacCroatianCurrencySignVariant = 1, + kMacCroatianEuroSignVariant = 2 +} + +enum +{ + kMacRomanianDefaultVariant = 0, + kMacRomanianCurrencySignVariant = 1, + kMacRomanianEuroSignVariant = 2 +} + +enum +{ + kMacJapaneseStandardVariant = 0, + kMacJapaneseStdNoVerticalsVariant = 1, + kMacJapaneseBasicVariant = 2, + kMacJapanesePostScriptScrnVariant = 3, + kMacJapanesePostScriptPrintVariant = 4, + kMacJapaneseVertAtKuPlusTenVariant = 5 +} + +enum +{ + kMacArabicStandardVariant = 0, + kMacArabicTrueTypeVariant = 1, + kMacArabicThuluthVariant = 2, + kMacArabicAlBayanVariant = 3 +} + +enum +{ + kMacFarsiStandardVariant = 0, + kMacFarsiTrueTypeVariant = 1 +} + +enum +{ + kMacHebrewStandardVariant = 0, + kMacHebrewFigureSpaceVariant = 1 +} + +enum +{ + kMacGreekDefaultVariant = 0, + kMacGreekNoEuroSignVariant = 1, + kMacGreekEuroSignVariant = 2 +} + +enum +{ + kMacVT100DefaultVariant = 0, + kMacVT100CurrencySignVariant = 1, + kMacVT100EuroSignVariant = 2 +} + +enum +{ + kUnicodeNoSubset = 0, + kUnicodeNormalizationFormD = 5, + kUnicodeNormalizationFormC = 3, + kUnicodeHFSPlusDecompVariant = 8, + kUnicodeHFSPlusCompVariant = 9 +} + +enum +{ + kISOLatin1StandardVariant = 0, + kISOLatin1MusicCDVariant = 1 +} + +enum +{ + kISOLatinArabicImplicitOrderVariant = 0, + kISOLatinArabicVisualOrderVariant = 1, + kISOLatinArabicExplicitOrderVariant = 2 +} + +enum +{ + kISOLatinHebrewImplicitOrderVariant = 0, + kISOLatinHebrewVisualOrderVariant = 1, + kISOLatinHebrewExplicitOrderVariant = 2 +} + +enum +{ + kWindowsLatin1StandardVariant = 0, + kWindowsLatin1PalmVariant = 1 +} + +enum +{ + kDOSJapaneseStandardVariant = 0, + kDOSJapanesePalmVariant = 1 +} + +enum +{ + kEUC_CN_BasicVariant = 0, + kEUC_CN_DOSVariant = 1 +} + +enum +{ + kEUC_KR_BasicVariant = 0, + kEUC_KR_DOSVariant = 1 +} + +enum +{ + kShiftJIS_BasicVariant = 0, + kShiftJIS_DOSVariant = 1, + kShiftJIS_MusicCDVariant = 2 +} + +enum +{ + kBig5_BasicVariant = 0, + kBig5_StandardVariant = 1, + kBig5_ETenVariant = 2, + kBig5_DOSVariant = 3 +} + +enum +{ + kMacRomanLatin1DefaultVariant = 0, + kMacRomanLatin1StandardVariant = 2, + kMacRomanLatin1TurkishVariant = 6, + kMacRomanLatin1CroatianVariant = 8, + kMacRomanLatin1IcelandicVariant = 11, + kMacRomanLatin1RomanianVariant = 14 +} + +enum +{ + kUnicodeNoCompatibilityVariant = 1, + kUnicodeNoCorporateVariant = 4 +} + +enum +{ + kMacRomanStandardVariant = 0, + kMacIcelandicStandardVariant = 0, + kMacIcelandicTrueTypeVariant = 1, + kJapaneseStandardVariant = 0, + kJapaneseStdNoVerticalsVariant = 1, + kJapaneseBasicVariant = 2, + kJapanesePostScriptScrnVariant = 3, + kJapanesePostScriptPrintVariant = 4, + kJapaneseVertAtKuPlusTenVariant = 5, + kTextEncodingShiftJIS_X0213_00 = 0x0628, + kHebrewStandardVariant = 0, + kHebrewFigureSpaceVariant = 1, + kUnicodeCanonicalDecompVariant = 2, + kUnicodeMaxDecomposedVariant = 2, + kUnicodeCanonicalCompVariant = 3, + kUnicodeNoComposedVariant = 3 +} + +enum +{ + kTextEncodingDefaultFormat = 0, + kUnicodeUTF16Format = 0, + kUnicodeUTF7Format = 1, + kUnicodeUTF8Format = 2, + kUnicodeUTF32Format = 3, + kUnicodeUTF16BEFormat = 4, + kUnicodeUTF16LEFormat = 5, + kUnicodeUTF32BEFormat = 6, + kUnicodeUTF32LEFormat = 7, + kUnicodeSCSUFormat = 8, + kUnicode16BitFormat = 0, + kUnicode32BitFormat = 3 +} + +enum +{ + kTextEncodingFullName = 0, + kTextEncodingBaseName = 1, + kTextEncodingVariantName = 2, + kTextEncodingFormatName = 3 +} + +enum +{ + kTextScriptDontCare = -128, + kTextLanguageDontCare = -128, + kTextRegionDontCare = -128 +} + +enum +{ + kTECInfoCurrentFormat = 2 +} + +enum +{ + kTECKeepInfoFixBit = 0, + kTECFallbackTextLengthFixBit = 1, + kTECTextRunBitClearFixBit = 2, + kTECTextToUnicodeScanFixBit = 3, + kTECAddForceASCIIChangesBit = 4, + kTECPreferredEncodingFixBit = 5, + kTECAddTextRunHeuristicsBit = 6, + kTECAddFallbackInterruptBit = 7 +} + +enum +{ + kTECKeepInfoFixMask = 1L << kTECKeepInfoFixBit, + kTECFallbackTextLengthFixMask = 1L << kTECFallbackTextLengthFixBit, + kTECTextRunBitClearFixMask = 1L << kTECTextRunBitClearFixBit, + kTECTextToUnicodeScanFixMask = 1L << kTECTextToUnicodeScanFixBit, + kTECAddForceASCIIChangesMask = 1L << kTECAddForceASCIIChangesBit, + kTECPreferredEncodingFixMask = 1L << kTECPreferredEncodingFixBit, + kTECAddTextRunHeuristicsMask = 1L << kTECAddTextRunHeuristicsBit, + kTECAddFallbackInterruptMask = 1L << kTECAddFallbackInterruptBit +} + +enum +{ + kUnicodeByteOrderMark = 0xFEFF, + kUnicodeObjectReplacement = 0xFFFC, + kUnicodeReplacementChar = 0xFFFD, + kUnicodeSwappedByteOrderMark = 0xFFFE, + kUnicodeNotAChar = 0xFFFF +} + +enum +{ + kUCCharPropTypeGenlCategory = 1, + kUCCharPropTypeCombiningClass = 2, + kUCCharPropTypeBidiCategory = 3, + kUCCharPropTypeDecimalDigitValue = 4 +} + +enum +{ + kUCGenlCatOtherNotAssigned = 0, + kUCGenlCatOtherControl = 1, + kUCGenlCatOtherFormat = 2, + kUCGenlCatOtherSurrogate = 3, + kUCGenlCatOtherPrivateUse = 4, + kUCGenlCatMarkNonSpacing = 5, + kUCGenlCatMarkSpacingCombining = 6, + kUCGenlCatMarkEnclosing = 7, + kUCGenlCatNumberDecimalDigit = 8, + kUCGenlCatNumberLetter = 9, + kUCGenlCatNumberOther = 10, + kUCGenlCatSeparatorSpace = 11, + kUCGenlCatSeparatorLine = 12, + kUCGenlCatSeparatorParagraph = 13, + kUCGenlCatLetterUppercase = 14, + kUCGenlCatLetterLowercase = 15, + kUCGenlCatLetterTitlecase = 16, + kUCGenlCatLetterModifier = 17, + kUCGenlCatLetterOther = 18, + kUCGenlCatPunctConnector = 20, + kUCGenlCatPunctDash = 21, + kUCGenlCatPunctOpen = 22, + kUCGenlCatPunctClose = 23, + kUCGenlCatPunctInitialQuote = 24, + kUCGenlCatPunctFinalQuote = 25, + kUCGenlCatPunctOther = 26, + kUCGenlCatSymbolMath = 28, + kUCGenlCatSymbolCurrency = 29, + kUCGenlCatSymbolModifier = 30, + kUCGenlCatSymbolOther = 31 +} + +enum +{ + kUCBidiCatNotApplicable = 0, + kUCBidiCatLeftRight = 1, + kUCBidiCatRightLeft = 2, + kUCBidiCatEuroNumber = 3, + kUCBidiCatEuroNumberSeparator = 4, + kUCBidiCatEuroNumberTerminator = 5, + kUCBidiCatArabicNumber = 6, + kUCBidiCatCommonNumberSeparator = 7, + kUCBidiCatBlockSeparator = 8, + kUCBidiCatSegmentSeparator = 9, + kUCBidiCatWhitespace = 10, + kUCBidiCatOtherNeutral = 11, + kUCBidiCatRightLeftArabic = 12, + kUCBidiCatLeftRightEmbedding = 13, + kUCBidiCatRightLeftEmbedding = 14, + kUCBidiCatLeftRightOverride = 15, + kUCBidiCatRightLeftOverride = 16, + kUCBidiCatPopDirectionalFormat = 17, + kUCBidiCatNonSpacingMark = 18, + kUCBidiCatBoundaryNeutral = 19 +} + +enum +{ + kUCHighSurrogateRangeStart = 0xD800, + kUCHighSurrogateRangeEnd = 0xDBFF, + kUCLowSurrogateRangeStart = 0xDC00, + kUCLowSurrogateRangeEnd = 0xDFFF +} + +struct TextEncodingRun +{ + uint offset; + uint textEncoding; +} + + +struct ScriptCodeRun +{ + uint offset; + short script; +} + + +struct TECInfo +{ + ushort format; + ushort tecVersion; + uint tecTextConverterFeatures; + uint tecUnicodeConverterFeatures; + uint tecTextCommonFeatures; + ubyte[32] tecTextEncodingsFolderName; + ubyte[32] tecExtensionFileName; + ushort tecLowestTEFileVersion; + ushort tecHighestTEFileVersion; +} + +extern (C) +{ + uint CreateTextEncoding (uint encodingBase, uint encodingVariant, uint encodingFormat); + uint GetTextEncodingBase (uint encoding); + uint GetTextEncodingVariant (uint encoding); + uint GetTextEncodingFormat (uint encoding); + uint ResolveDefaultTextEncoding (uint encoding); + int GetTextEncodingName (uint iEncoding, uint iNamePartSelector, short iPreferredRegion, uint iPreferredEncoding, uint iOutputBufLen, ByteCount* oNameLength, RegionCode* oActualRegion, TextEncoding* oActualEncoding, char* oEncodingName); + int TECGetInfo (TECInfoHandle* tecInfo); + int UpgradeScriptInfoToTextEncoding (short iTextScriptID, short iTextLanguageID, short iRegionID, char* iTextFontname, TextEncoding* oEncoding); + int RevertTextEncodingToScriptInfo (uint iEncoding, ScriptCode* oTextScriptID, LangCode* oTextLanguageID, ubyte[256] oTextFontname); + int GetTextEncodingFromScriptInfo (short iTextScriptID, short iTextLanguageID, short iTextRegionID, TextEncoding* oEncoding); + int GetScriptInfoFromTextEncoding (uint iEncoding, ScriptCode* oTextScriptID, LangCode* oTextLanguageID); + int NearestMacTextEncodings (uint generalEncoding, TextEncoding* bestMacEncoding, TextEncoding* alternateMacEncoding); + int UCGetCharProperty (wchar* charPtr, uint textLength, int propType, UCCharPropertyValue* propValue); +} \ No newline at end of file