blob: 6c7b42bcd30fc688c0a7412dba6b0c5a6065dafb [file] [log] [blame] [edit]
// Copyright © 2015, Jordan Miner
// Licensed under the MIT License <LICENSE.md>
//! Uniscribe structure declarations and constant definitions
pub const SCRIPT_UNDEFINED: ::WORD = 0;
pub const USP_E_SCRIPT_NOT_IN_FONT: ::HRESULT = MAKE_HRESULT!(
::SEVERITY_ERROR, ::FACILITY_ITF, 0x200
);
DECLARE_HANDLE!(SCRIPT_CACHE, SCRIPT_CACHE__);
STRUCT!{struct SCRIPT_CONTROL {
bit_fields: ::DWORD,
}}
BITFIELD!(SCRIPT_CONTROL bit_fields: ::DWORD [
uDefaultLanguage set_uDefaultLanguage[0..16],
fContextDigits set_fContextDigits[16..17],
fInvertPreBoundDir set_fInvertPreBoundDir[17..18],
fInvertPostBoundDir set_fInvertPostBoundDir[18..19],
fLinkStringBefore set_fLinkStringBefore[19..20],
fLinkStringAfter set_fLinkStringAfter[20..21],
fNeutralOverride set_fNeutralOverride[21..22],
fNumericOverride set_fNumericOverride[22..23],
fLegacyBidiClass set_fLegacyBidiClass[23..24],
fMergeNeutralItems set_fMergeNeutralItems[24..25],
fReserved set_fReserved[25..32],
]);
STRUCT!{struct SCRIPT_STATE {
bit_fields: ::WORD,
}}
BITFIELD!(SCRIPT_STATE bit_fields: ::WORD [
uBidiLevel set_uBidiLevel[0..5],
fOverrideDirection set_fOverrideDirection[5..6],
fInhibitSymSwap set_fInhibitSymSwap[6..7],
fCharShape set_fCharShape[7..8],
fDigitSubstitute set_fDigitSubstitute[8..9],
fInhibitLigate set_fInhibitLigate[9..10],
fDisplayZWG set_fDisplayZWG[10..11],
fArabicNumContext set_fArabicNumContext[11..12],
fGcpClusters set_fGcpClusters[12..13],
fReserved set_fReserved[13..14],
fEngineReserved set_fEngineReserved[14..16],
]);
STRUCT!{struct SCRIPT_ANALYSIS {
bit_fields: ::WORD,
s: SCRIPT_STATE,
}}
BITFIELD!(SCRIPT_ANALYSIS bit_fields: ::WORD [
eScript set_eScript[0..10],
fRTL set_fRTL[10..11],
fLayoutRTL set_fLayoutRTL[11..12],
fLinkBefore set_fLinkBefore[12..13],
fLinkAfter set_fLinkAfter[13..14],
fLogicalOrder set_fLogicalOrder[14..15],
fNoGlyphIndex set_fNoGlyphIndex[15..16],
]);
STRUCT!{struct SCRIPT_ITEM {
iCharPos: ::c_int,
a: SCRIPT_ANALYSIS,
}}
//490
pub const SCRIPT_JUSTIFY_NONE: ::WORD = 0;
pub const SCRIPT_JUSTIFY_ARABIC_BLANK: ::WORD = 1;
pub const SCRIPT_JUSTIFY_CHARACTER: ::WORD = 2;
pub const SCRIPT_JUSTIFY_RESERVED1: ::WORD = 3;
pub const SCRIPT_JUSTIFY_BLANK: ::WORD = 4;
pub const SCRIPT_JUSTIFY_RESERVED2: ::WORD = 5;
pub const SCRIPT_JUSTIFY_RESERVED3: ::WORD = 6;
pub const SCRIPT_JUSTIFY_ARABIC_NORMAL: ::WORD = 7;
pub const SCRIPT_JUSTIFY_ARABIC_KASHIDA: ::WORD = 8;
pub const SCRIPT_JUSTIFY_ARABIC_ALEF: ::WORD = 9;
pub const SCRIPT_JUSTIFY_ARABIC_HA: ::WORD = 10;
pub const SCRIPT_JUSTIFY_ARABIC_RA: ::WORD = 11;
pub const SCRIPT_JUSTIFY_ARABIC_BA: ::WORD = 12;
pub const SCRIPT_JUSTIFY_ARABIC_BARA: ::WORD = 13;
pub const SCRIPT_JUSTIFY_ARABIC_SEEN: ::WORD = 14;
pub const SCRIPT_JUSTIFY_ARABIC_SEEN_M: ::WORD = 15;
STRUCT!{struct SCRIPT_VISATTR {
bit_fields: ::WORD,
}}
BITFIELD!(SCRIPT_VISATTR bit_fields: ::WORD [
uJustification set_uJustification[0..4],
fClusterStart set_fClusterStart[4..5],
fDiacritic set_fDiacritic[5..6],
fZeroWidth set_fZeroWidth[6..7],
fReserved set_fReserved[7..8],
fShapeReserved set_fShapeReserved[8..16],
]);
STRUCT!{struct GOFFSET {
du: ::LONG,
dv: ::LONG,
}}
STRUCT!{struct SCRIPT_LOGATTR {
bit_fields: ::BYTE,
}}
BITFIELD!(SCRIPT_LOGATTR bit_fields: ::BYTE [
fSoftBreak set_fSoftBreak[0..1],
fWhiteSpace set_fWhiteSpace[1..2],
fCharStop set_fCharStop[2..3],
fWordStop set_fWordStop[3..4],
fInvalid set_fInvalid[4..5],
fReserved set_fReserved[5..8],
]);
pub const SGCM_RTL: ::DWORD = 0x00000001;
STRUCT!{struct SCRIPT_PROPERTIES {
bit_fields1: ::DWORD,
bit_fields2: ::DWORD,
}}
BITFIELD!(SCRIPT_PROPERTIES bit_fields1: ::DWORD [
langid set_langid[0..16],
fNumeric set_fNumeric[16..17],
fComplex set_fComplex[17..18],
fNeedsWordBreaking set_fNeedsWordBreaking[18..19],
fNeedsCaretInfo set_fNeedsCaretInfo[19..20],
bCharSet set_bCharSet[20..28],
fControl set_fControl[28..29],
fPrivateUseArea set_fPrivateUseArea[29..30],
fNeedsCharacterJustify set_fNeedsCharacterJustify[30..31],
fInvalidGlyph set_fInvalidGlyph[31..32],
]);
BITFIELD!(SCRIPT_PROPERTIES bit_fields2: ::DWORD [
fInvalidLogAttr set_fInvalidLogAttr[0..1],
fCDM set_fCDM[1..2],
fAmbiguousCharSet set_fAmbiguousCharSet[2..3],
fClusterSizeVaries set_fClusterSizeVaries[3..4],
fRejectInvalid set_fRejectInvalid[4..5],
]);
STRUCT!{struct SCRIPT_FONTPROPERTIES {
cBytes: ::c_int,
wgBlank: ::WORD,
wgDefault: ::WORD,
wgInvalid: ::WORD,
wgKashida: ::WORD,
iKashidaWidth: ::c_int,
}}
//1440
pub const SSA_PASSWORD: ::DWORD = 0x00000001;
pub const SSA_TAB: ::DWORD = 0x00000002;
pub const SSA_CLIP: ::DWORD = 0x00000004;
pub const SSA_FIT: ::DWORD = 0x00000008;
pub const SSA_DZWG: ::DWORD = 0x00000010;
pub const SSA_FALLBACK: ::DWORD = 0x00000020;
pub const SSA_BREAK: ::DWORD = 0x00000040;
pub const SSA_GLYPHS: ::DWORD = 0x00000080;
pub const SSA_RTL: ::DWORD = 0x00000100;
pub const SSA_GCP: ::DWORD = 0x00000200;
pub const SSA_HOTKEY: ::DWORD = 0x00000400;
pub const SSA_METAFILE: ::DWORD = 0x00000800;
pub const SSA_LINK: ::DWORD = 0x00001000;
pub const SSA_HIDEHOTKEY: ::DWORD = 0x00002000;
pub const SSA_HOTKEYONLY: ::DWORD = 0x00002400;
pub const SSA_FULLMEASURE: ::DWORD = 0x04000000;
pub const SSA_LPKANSIFALLBACK: ::DWORD = 0x08000000;
pub const SSA_PIDX: ::DWORD = 0x10000000;
pub const SSA_LAYOUTRTL: ::DWORD = 0x20000000;
pub const SSA_DONTGLYPH: ::DWORD = 0x40000000;
pub const SSA_NOKASHIDA: ::DWORD = 0x80000000;
STRUCT!{struct SCRIPT_TABDEF {
cTabStops: ::c_int,
iScale: ::c_int,
pTabStops: *mut ::c_int,
iTabOrigin: ::c_int,
}}
DECLARE_HANDLE!(SCRIPT_STRING_ANALYSIS, SCRIPT_STRING_ANALYSIS__);
pub const SIC_COMPLEX: ::DWORD = 1;
pub const SIC_ASCIIDIGIT: ::DWORD = 2;
pub const SIC_NEUTRAL: ::DWORD = 4;
STRUCT!{struct SCRIPT_DIGITSUBSTITUTE {
bit_fields1: ::DWORD,
bit_fields2: ::DWORD,
dwReserved: ::DWORD,
}}
BITFIELD!(SCRIPT_DIGITSUBSTITUTE bit_fields1: ::DWORD [
NationalDigitLanguage set_NationalDigitLanguage[0..16],
TraditionalDigitLanguage set_TraditionalDigitLanguage[16..32],
]);
BITFIELD!(SCRIPT_DIGITSUBSTITUTE bit_fields2: ::DWORD [
DigitSubstitute set_DigitSubstitute[0..8],
]);
pub const SCRIPT_DIGITSUBSTITUTE_CONTEXT: ::BYTE = 0;
pub const SCRIPT_DIGITSUBSTITUTE_NONE: ::BYTE = 1;
pub const SCRIPT_DIGITSUBSTITUTE_NATIONAL: ::BYTE = 2;
pub const SCRIPT_DIGITSUBSTITUTE_TRADITIONAL: ::BYTE = 3;
pub type OPENTYPE_TAG = ::ULONG;
pub const SCRIPT_TAG_UNKNOWN: OPENTYPE_TAG = 0x00000000;
STRUCT!{struct OPENTYPE_FEATURE_RECORD {
tagFeature: OPENTYPE_TAG,
lParameter: ::LONG,
}}
STRUCT!{struct TEXTRANGE_PROPERTIES {
potfRecords: *mut OPENTYPE_FEATURE_RECORD,
cotfRecords: ::c_int,
}}
STRUCT!{struct SCRIPT_CHARPROP {
bit_fields: ::WORD,
}}
BITFIELD!(SCRIPT_CHARPROP bit_fields: ::WORD [
fCanGlyphAlone set_fCanGlyphAlone[0..1],
reserved set_reserved[1..16],
]);
STRUCT!{struct SCRIPT_GLYPHPROP {
sva: SCRIPT_VISATTR,
reserved: ::WORD,
}}