File Annotation

Not logged in
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: }