4e2933c620 2015-04-21 kinaba: /* USP - Unicode Complex Script processor 4e2933c620 2015-04-21 kinaba: * http://msdn2.microsoft.com/library/ms776488 */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: module win32.usp10; 4e2933c620 2015-04-21 kinaba: import win32.windows; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Uniscribe Enumeration Types 4e2933c620 2015-04-21 kinaba: * http://msdn2.microsoft.com/library/ms776518 */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : WORD { 4e2933c620 2015-04-21 kinaba: SCRIPT_UNDEFINED = 0, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SGCM_RTL = 0x00000001, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SSA_PASSWORD = 0x00000001, 4e2933c620 2015-04-21 kinaba: SSA_TAB = 0x00000002, 4e2933c620 2015-04-21 kinaba: SSA_CLIP = 0x00000004, 4e2933c620 2015-04-21 kinaba: SSA_FIT = 0x00000008, 4e2933c620 2015-04-21 kinaba: SSA_DZWG = 0x00000010, 4e2933c620 2015-04-21 kinaba: SSA_FALLBACK = 0x00000020, 4e2933c620 2015-04-21 kinaba: SSA_BREAK = 0x00000040, 4e2933c620 2015-04-21 kinaba: SSA_GLYPHS = 0x00000080, 4e2933c620 2015-04-21 kinaba: SSA_RTL = 0x00000100, 4e2933c620 2015-04-21 kinaba: SSA_GCP = 0x00000200, 4e2933c620 2015-04-21 kinaba: SSA_HOTKEY = 0x00000400, 4e2933c620 2015-04-21 kinaba: SSA_METAFILE = 0x00000800, 4e2933c620 2015-04-21 kinaba: SSA_LINK = 0x00001000, 4e2933c620 2015-04-21 kinaba: SSA_HIDEHOTKEY = 0x00002000, 4e2933c620 2015-04-21 kinaba: SSA_HOTKEYONLY = 0x00002400, 4e2933c620 2015-04-21 kinaba: SSA_FULLMEASURE = 0x04000000, 4e2933c620 2015-04-21 kinaba: SSA_LPKANSIFALLBACK = 0x08000000, 4e2933c620 2015-04-21 kinaba: SSA_PIDX = 0x10000000, 4e2933c620 2015-04-21 kinaba: SSA_LAYOUTRTL = 0x20000000, 4e2933c620 2015-04-21 kinaba: SSA_DONTGLYPH = 0x40000000, 4e2933c620 2015-04-21 kinaba: SSA_NOKASHIDA = 0x80000000, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SIC_COMPLEX = 1, 4e2933c620 2015-04-21 kinaba: SIC_ASCIIDIGIT = 2, 4e2933c620 2015-04-21 kinaba: SIC_NEUTRAL = 4, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SCRIPT_DIGITSUBSTITUTE_CONTEXT, 4e2933c620 2015-04-21 kinaba: SCRIPT_DIGITSUBSTITUTE_NONE, 4e2933c620 2015-04-21 kinaba: SCRIPT_DIGITSUBSTITUTE_NATIONAL, 4e2933c620 2015-04-21 kinaba: SCRIPT_DIGITSUBSTITUTE_TRADITIONAL, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum SCRIPT_JUSTIFY : WORD { 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_NONE, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_BLANK, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_CHARACTER, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_RESERVED1, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_BLANK, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_RESERVED2, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_RESERVED3, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_NORMAL, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_KASHIDA, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_ALEF, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_HA, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_RA, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_BA, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_BARA, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_SEEN, 4e2933c620 2015-04-21 kinaba: SCRIPT_JUSTIFY_ARABIC_SEEN_M, 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Uniscribe Structures 4e2933c620 2015-04-21 kinaba: * http://msdn2.microsoft.com/library/ms776479 */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias void* SCRIPT_CACHE; 4e2933c620 2015-04-21 kinaba: alias void* SCRIPT_STRING_ANALYSIS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (C) 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: struct SCRIPT_CONTROL 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private DWORD _bitfield; 4e2933c620 2015-04-21 kinaba: DWORD uDefaultLanguage() { return (_bitfield >> 0) & 0xFFFF; } 4e2933c620 2015-04-21 kinaba: DWORD uDefaultLanguage(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fContextDigits() { return (_bitfield >> 16) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fContextDigits(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fInvertPreBoundDir() { return (_bitfield >> 17) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fInvertPreBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fInvertPostBoundDir() { return (_bitfield >> 18) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fInvertPostBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fLinkStringBefore() { return (_bitfield >> 19) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fLinkStringBefore(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fLinkStringAfter() { return (_bitfield >> 20) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fLinkStringAfter(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFEFFFFF) | (val << 20)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNeutralOverride() { return (_bitfield >> 21) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNeutralOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFDFFFFF) | (val << 21)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNumericOverride() { return (_bitfield >> 22) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNumericOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFBFFFFF) | (val << 22)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fLegacyBidiClass() { return (_bitfield >> 23) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fLegacyBidiClass(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFF7FFFFF) | (val << 23)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fReserved() { return (_bitfield >> 24) & 0xFF; } 4e2933c620 2015-04-21 kinaba: DWORD fReserved(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFF00FFFFFF) | (val << 24)); return val; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_STATE 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private WORD _bitfield; 4e2933c620 2015-04-21 kinaba: WORD uBidiLevel() { return cast(WORD)((_bitfield >> 0) & 0x1F); } 4e2933c620 2015-04-21 kinaba: WORD uBidiLevel(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFE0) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fOverrideDirection() { return cast(WORD)((_bitfield >> 5) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fOverrideDirection(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fInhibitSymSwap() { return cast(WORD)((_bitfield >> 6) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fInhibitSymSwap(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fCharShape() { return cast(WORD)((_bitfield >> 7) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fCharShape(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fDigitSubstitute() { return cast(WORD)((_bitfield >> 8) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fDigitSubstitute(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFEFF) | (val << 8)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fInhibitLigate() { return cast(WORD)((_bitfield >> 9) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fInhibitLigate(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFDFF) | (val << 9)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fDisplayZWG() { return cast(WORD)((_bitfield >> 10) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fDisplayZWG(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fArabicNumContext() { return cast(WORD)((_bitfield >> 11) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fArabicNumContext(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fGcpClusters() { return cast(WORD)((_bitfield >> 12) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fGcpClusters(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fReserved() { return cast(WORD)((_bitfield >> 13) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fEngineReserved() { return cast(WORD)((_bitfield >> 14) & 0x3); } 4e2933c620 2015-04-21 kinaba: WORD fEngineReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF3FFF) | (val << 14)); return val; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_ANALYSIS 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private WORD _bitfield; 4e2933c620 2015-04-21 kinaba: WORD eScript() { return cast(WORD)((_bitfield >> 0) & 0x3FF); } 4e2933c620 2015-04-21 kinaba: WORD eScript(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFC00) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fRTL() { return cast(WORD)((_bitfield >> 10) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fLayoutRTL() { return cast(WORD)((_bitfield >> 11) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fLayoutRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fLinkBefore() { return cast(WORD)((_bitfield >> 12) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fLinkBefore(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fLinkAfter() { return cast(WORD)((_bitfield >> 13) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fLinkAfter(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fLogicalOrder() { return cast(WORD)((_bitfield >> 14) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fLogicalOrder(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFBFFF) | (val << 14)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fNoGlyphIndex() { return cast(WORD)((_bitfield >> 15) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fNoGlyphIndex(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF7FFF) | (val << 15)); return val; } 4e2933c620 2015-04-21 kinaba: SCRIPT_STATE s; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_ITEM 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: int iCharPos; 4e2933c620 2015-04-21 kinaba: SCRIPT_ANALYSIS a; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_VISATTR 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private WORD _bitfield; 4e2933c620 2015-04-21 kinaba: WORD uJustification() { return cast(WORD)((_bitfield >> 0) & 0xF); } 4e2933c620 2015-04-21 kinaba: WORD uJustification(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFF0) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fClusterStart() { return cast(WORD)((_bitfield >> 4) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fClusterStart(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fDiacritic() { return cast(WORD)((_bitfield >> 5) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fDiacritic(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fZeroWidth() { return cast(WORD)((_bitfield >> 6) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fZeroWidth(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fReserved() { return cast(WORD)((_bitfield >> 7) & 0x1); } 4e2933c620 2015-04-21 kinaba: WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } 4e2933c620 2015-04-21 kinaba: WORD fShapeReserved() { return cast(WORD)((_bitfield >> 8) & 0xFF); } 4e2933c620 2015-04-21 kinaba: WORD fShapeReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF00FF) | (val << 8)); return val; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct GOFFSET 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: LONG du; 4e2933c620 2015-04-21 kinaba: LONG dv; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_LOGATTR 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: BYTE _bitfield; 4e2933c620 2015-04-21 kinaba: BYTE fSoftBreak() { return cast(BYTE)((_bitfield >> 0) & 0x1); } 4e2933c620 2015-04-21 kinaba: BYTE fSoftBreak(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: BYTE fWhiteSpace() { return cast(BYTE)((_bitfield >> 1) & 0x1); } 4e2933c620 2015-04-21 kinaba: BYTE fWhiteSpace(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } 4e2933c620 2015-04-21 kinaba: BYTE fCharStop() { return cast(BYTE)((_bitfield >> 2) & 0x1); } 4e2933c620 2015-04-21 kinaba: BYTE fCharStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } 4e2933c620 2015-04-21 kinaba: BYTE fWordStop() { return cast(BYTE)((_bitfield >> 3) & 0x1); } 4e2933c620 2015-04-21 kinaba: BYTE fWordStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } 4e2933c620 2015-04-21 kinaba: BYTE fInvalid() { return cast(BYTE)((_bitfield >> 4) & 0x1); } 4e2933c620 2015-04-21 kinaba: BYTE fInvalid(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } 4e2933c620 2015-04-21 kinaba: BYTE fReserved() { return cast(BYTE)((_bitfield >> 5) & 0x7); } 4e2933c620 2015-04-21 kinaba: BYTE fReserved(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFF1F) | (val << 5)); return val; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_PROPERTIES 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private DWORD _bitfield1; 4e2933c620 2015-04-21 kinaba: DWORD langid() { return (_bitfield1 >> 0) & 0xFFFF; } 4e2933c620 2015-04-21 kinaba: DWORD langid(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNumeric() { return (_bitfield1 >> 16) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNumeric(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fComplex() { return (_bitfield1 >> 17) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fComplex(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsWordBreaking() { return (_bitfield1 >> 18) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsWordBreaking(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsCaretInfo() { return (_bitfield1 >> 19) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsCaretInfo(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD bCharSet() { return (_bitfield1 >> 20) & 0xFF; } 4e2933c620 2015-04-21 kinaba: DWORD bCharSet(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFF00FFFFF) | (val << 20)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fControl() { return (_bitfield1 >> 28) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fControl(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFEFFFFFFF) | (val << 28)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fPrivateUseArea() { return (_bitfield1 >> 29) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fPrivateUseArea(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFDFFFFFFF) | (val << 29)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsCharacterJustify() { return (_bitfield1 >> 30) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fNeedsCharacterJustify(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFBFFFFFFF) | (val << 30)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fInvalidGlyph() { return (_bitfield1 >> 31) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fInvalidGlyph(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF7FFFFFFF) | (val << 31)); return val; } 4e2933c620 2015-04-21 kinaba: private DWORD _bitfield2; 4e2933c620 2015-04-21 kinaba: DWORD fInvalidLogAttr() { return (_bitfield2 >> 0) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fInvalidLogAttr(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fCDM() { return (_bitfield2 >> 1) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fCDM(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fAmbiguousCharSet() { return (_bitfield2 >> 2) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fAmbiguousCharSet(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fClusterSizeVaries() { return (_bitfield2 >> 3) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fClusterSizeVaries(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD fRejectInvalid() { return (_bitfield2 >> 4) & 0x1; } 4e2933c620 2015-04-21 kinaba: DWORD fRejectInvalid(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_FONTPROPERTIES 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: int cBytes = SCRIPT_FONTPROPERTIES.sizeof; 4e2933c620 2015-04-21 kinaba: WORD wgBlank; 4e2933c620 2015-04-21 kinaba: WORD wgDefault; 4e2933c620 2015-04-21 kinaba: WORD wgInvalid; 4e2933c620 2015-04-21 kinaba: WORD wgKashida; 4e2933c620 2015-04-21 kinaba: int iKashidaWidth; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_TABDEF 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: int cTabStops; 4e2933c620 2015-04-21 kinaba: int iScale; 4e2933c620 2015-04-21 kinaba: int* pTabStops; 4e2933c620 2015-04-21 kinaba: int iTabOrigin; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCRIPT_DIGITSUBSTITUTE 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: private DWORD _bitfield1; 4e2933c620 2015-04-21 kinaba: DWORD NationalDigitLanguage() { return (_bitfield1 >> 0) & 0xFFFF; } 4e2933c620 2015-04-21 kinaba: DWORD NationalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD TraditionalDigitLanguage() { return (_bitfield1 >> 16) & 0xFFFF; } 4e2933c620 2015-04-21 kinaba: DWORD TraditionalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF0000FFFF) | (val << 16)); return val; } 4e2933c620 2015-04-21 kinaba: private DWORD _bitfield2; 4e2933c620 2015-04-21 kinaba: DWORD DigitSubstitute() { return (_bitfield2 >> 0) & 0xFF; } 4e2933c620 2015-04-21 kinaba: DWORD DigitSubstitute(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFF00) | (val << 0)); return val; } 4e2933c620 2015-04-21 kinaba: DWORD dwReserved; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* TODO: Windows Vista fearured structs 4e2933c620 2015-04-21 kinaba: OPENTYPE_FEATURE_RECORD 4e2933c620 2015-04-21 kinaba: OPENTYPE_TAG 4e2933c620 2015-04-21 kinaba: SCRIPT_CHARPROP 4e2933c620 2015-04-21 kinaba: SCRIPT_GLYPHPROP 4e2933c620 2015-04-21 kinaba: TEXTRANGE_PROPERTIES 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Uniscribe Functions 4e2933c620 2015-04-21 kinaba: * http://msdn2.microsoft.com/library/ms776469 */ 4e2933c620 2015-04-21 kinaba: extern (Windows) 4e2933c620 2015-04-21 kinaba: { 4e2933c620 2015-04-21 kinaba: HRESULT ScriptFreeCache(SCRIPT_CACHE*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptItemize(CPtr!(WCHAR), int, int, CPtr!(SCRIPT_CONTROL), CPtr!(SCRIPT_STATE), SCRIPT_ITEM*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptLayout(int, CPtr!(BYTE), int*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptShape(HDC, SCRIPT_CACHE*, CPtr!(WCHAR), int, int, SCRIPT_ANALYSIS*, WORD*, WORD*, SCRIPT_VISATTR*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptPlace(HDC, SCRIPT_CACHE*, CPtr!(WORD), int, CPtr!(SCRIPT_VISATTR), SCRIPT_ANALYSIS*, int*, GOFFSET*, ABC*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptTextOut(HDC, SCRIPT_CACHE*, int, int, UINT, CPtr!(RECT), CPtr!(SCRIPT_ANALYSIS), CPtr!(WCHAR), int, CPtr!(WORD), int, CPtr!(int), int*, CPtr!(GOFFSET)); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptJustify(CPtr!(SCRIPT_VISATTR), CPtr!(int), int, int, int, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptBreak(CPtr!(WCHAR), int, CPtr!(SCRIPT_ANALYSIS), CPtr!(SCRIPT_LOGATTR)); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptCPtoX(int, BOOL, int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptXtoCP(int, int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), int*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptGetLogicalWidths(CPtr!(SCRIPT_ANALYSIS), int, int, CPtr!(int), CPtr!(WORD), CPtr!(SCRIPT_VISATTR), int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptApplyLogicalWidth(CPtr!(int), int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), ABC*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptGetCMap(HDC, SCRIPT_CACHE*, CPtr!(WCHAR), int, DWORD, WORD*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptGetGlyphABCWidth(HDC, SCRIPT_CACHE*, WORD, ABC*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptGetProperties(CPtr!(SCRIPT_PROPERTIES**), int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptGetFontProperties(HDC, SCRIPT_CACHE*, SCRIPT_FONTPROPERTIES*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptCacheGetHeight(HDC, SCRIPT_CACHE*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptIsComplex(CPtr!(WCHAR), int, DWORD); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptRecordDigitSubstitution(LCID, SCRIPT_DIGITSUBSTITUTE*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptApplyDigitSubstitution(CPtr!(SCRIPT_DIGITSUBSTITUTE), SCRIPT_CONTROL*, SCRIPT_STATE*); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* ScriptString Functions 4e2933c620 2015-04-21 kinaba: * http://msdn2.microsoft.com/library/ms776485 */ 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringAnalyse(HDC, CPtr!(void), int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, CPtr!(int), SCRIPT_TABDEF*, CPtr!(BYTE), SCRIPT_STRING_ANALYSIS*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringFree(SCRIPT_STRING_ANALYSIS*); 4e2933c620 2015-04-21 kinaba: CPtr!(SIZE) ScriptString_pSize(SCRIPT_STRING_ANALYSIS); 4e2933c620 2015-04-21 kinaba: CPtr!(int) ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS); 4e2933c620 2015-04-21 kinaba: CPtr!(SCRIPT_LOGATTR) ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS, UINT*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS, int, BOOL, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS, int, int*, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS, int*); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringValidate(SCRIPT_STRING_ANALYSIS); 4e2933c620 2015-04-21 kinaba: HRESULT ScriptStringOut(SCRIPT_STRING_ANALYSIS, int, int, UINT, CPtr!(RECT), int, int, BOOL); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* TODO: Windows Vista fearured functions 4e2933c620 2015-04-21 kinaba: ScriptGetFontAlternateGlyphs() 4e2933c620 2015-04-21 kinaba: ScriptGetFontFeatureTags() 4e2933c620 2015-04-21 kinaba: ScriptGetFontLanguageTags() 4e2933c620 2015-04-21 kinaba: ScriptGetFontScriptTags() 4e2933c620 2015-04-21 kinaba: ScriptItemizeOpenType() 4e2933c620 2015-04-21 kinaba: ScriptPlaceOpenType() 4e2933c620 2015-04-21 kinaba: ScriptPositionSingleGlyph() 4e2933c620 2015-04-21 kinaba: ScriptShapeOpenType() 4e2933c620 2015-04-21 kinaba: ScriptSubstituteSingleGlyph() 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: }