reactos/sdk/include/psdk/usp10.h

543 lines
13 KiB
C

/*
* Copyright (C) 2005 Steven Edwards
* Copyright (C) 2005 Vijay Kiran Kamuju
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __USP10_H
#define __USP10_H
#ifndef __WINESRC__
# include <windows.h>
#endif
/* FIXME: #include <specstrings.h> */
#ifdef __cplusplus
extern "C" {
#endif
/** ScriptStringAnalyse */
#define SSA_PASSWORD 0x00000001
#define SSA_TAB 0x00000002
#define SSA_CLIP 0x00000004
#define SSA_FIT 0x00000008
#define SSA_DZWG 0x00000010
#define SSA_FALLBACK 0x00000020
#define SSA_BREAK 0x00000040
#define SSA_GLYPHS 0x00000080
#define SSA_RTL 0x00000100
#define SSA_GCP 0x00000200
#define SSA_HOTKEY 0x00000400
#define SSA_METAFILE 0x00000800
#define SSA_LINK 0x00001000
#define SSA_HIDEHOTKEY 0x00002000
#define SSA_HOTKEYONLY 0x00002400
#define SSA_FULLMEASURE 0x04000000
#define SSA_LPKANSIFALLBACK 0x08000000
#define SSA_PIDX 0x10000000
#define SSA_LAYOUTRTL 0x20000000
#define SSA_DONTGLYPH 0x40000000
#define SSA_NOKASHIDA 0x80000000
/** StringIsComplex */
#define SIC_COMPLEX 1
#define SIC_ASCIIDIGIT 2
#define SIC_NEUTRAL 4
/** ScriptGetCMap */
#define SGCM_RTL 0x00000001
/** ScriptApplyDigitSubstitution */
#define SCRIPT_DIGITSUBSTITUTE_CONTEXT 0
#define SCRIPT_DIGITSUBSTITUTE_NONE 1
#define SCRIPT_DIGITSUBSTITUTE_NATIONAL 2
#define SCRIPT_DIGITSUBSTITUTE_TRADITIONAL 3
#define SCRIPT_UNDEFINED 0
#define USP_E_SCRIPT_NOT_IN_FONT MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200)
typedef enum tag_SCRIPT_JUSTIFY {
SCRIPT_JUSTIFY_NONE = 0,
SCRIPT_JUSTIFY_ARABIC_BLANK = 1,
SCRIPT_JUSTIFY_CHARACTER = 2,
SCRIPT_JUSTIFY_RESERVED1 = 3,
SCRIPT_JUSTIFY_BLANK = 4,
SCRIPT_JUSTIFY_RESERVED2 = 5,
SCRIPT_JUSTIFY_RESERVED3 = 6,
SCRIPT_JUSTIFY_ARABIC_NORMAL = 7,
SCRIPT_JUSTIFY_ARABIC_KASHIDA = 8,
SCRIPT_JUSTIFY_ARABIC_ALEF = 9,
SCRIPT_JUSTIFY_ARABIC_HA = 10,
SCRIPT_JUSTIFY_ARABIC_RA = 11,
SCRIPT_JUSTIFY_ARABIC_BA = 12,
SCRIPT_JUSTIFY_ARABIC_BARA = 13,
SCRIPT_JUSTIFY_ARABIC_SEEN = 14,
SCRIPT_JUSTIFY_ARABIC_SEEN_M = 15,
} SCRIPT_JUSTIFY;
typedef struct tag_SCRIPT_CONTROL {
DWORD uDefaultLanguage :16;
DWORD fContextDigits :1;
DWORD fInvertPreBoundDir :1;
DWORD fInvertPostBoundDir :1;
DWORD fLinkStringBefore :1;
DWORD fLinkStringAfter :1;
DWORD fNeutralOverride :1;
DWORD fNumericOverride :1;
DWORD fLegacyBidiClass :1;
DWORD fMergeNeutralItems :1;
DWORD fReserved :7;
} SCRIPT_CONTROL;
typedef struct {
DWORD langid :16;
DWORD fNumeric :1;
DWORD fComplex :1;
DWORD fNeedsWordBreaking :1;
DWORD fNeedsCaretInfo :1;
DWORD bCharSet :8;
DWORD fControl :1;
DWORD fPrivateUseArea :1;
DWORD fNeedsCharacterJustify :1;
DWORD fInvalidGlyph :1;
DWORD fInvalidLogAttr :1;
DWORD fCDM :1;
DWORD fAmbiguousCharSet :1;
DWORD fClusterSizeVaries :1;
DWORD fRejectInvalid :1;
} SCRIPT_PROPERTIES;
typedef struct tag_SCRIPT_STATE {
WORD uBidiLevel :5;
WORD fOverrideDirection :1;
WORD fInhibitSymSwap :1;
WORD fCharShape :1;
WORD fDigitSubstitute :1;
WORD fInhibitLigate :1;
WORD fDisplayZWG :1;
WORD fArabicNumContext :1;
WORD fGcpClusters :1;
WORD fReserved :1;
WORD fEngineReserved :2;
} SCRIPT_STATE;
typedef struct tag_SCRIPT_ANALYSIS {
WORD eScript :10;
WORD fRTL :1;
WORD fLayoutRTL :1;
WORD fLinkBefore :1;
WORD fLinkAfter :1;
WORD fLogicalOrder :1;
WORD fNoGlyphIndex :1;
SCRIPT_STATE s;
} SCRIPT_ANALYSIS;
typedef struct tag_SCRIPT_ITEM {
int iCharPos;
SCRIPT_ANALYSIS a;
} SCRIPT_ITEM;
typedef struct tag_SCRIPT_DIGITSUBSTITUTE {
DWORD NationalDigitLanguage :16;
DWORD TraditionalDigitLanguage :16;
DWORD DigitSubstitute :8;
DWORD dwReserved;
} SCRIPT_DIGITSUBSTITUTE;
typedef struct tag_SCRIPT_FONTPROPERTIES {
int cBytes;
WORD wgBlank;
WORD wgDefault;
WORD wgInvalid;
WORD wgKashida;
int iKashidaWidth;
} SCRIPT_FONTPROPERTIES;
typedef struct tag_SCRIPT_TABDEF {
int cTabStops;
int iScale;
int *pTabStops;
int iTabOrigin;
} SCRIPT_TABDEF;
typedef struct tag_SCRIPT_VISATTR {
WORD uJustification :4;
WORD fClusterStart :1;
WORD fDiacritic :1;
WORD fZeroWidth :1;
WORD fReserved :1;
WORD fShapeReserved :8;
} SCRIPT_VISATTR;
typedef struct tag_SCRIPT_LOGATTR {
BYTE fSoftBreak :1;
BYTE fWhiteSpace :1;
BYTE fCharStop :1;
BYTE fWordStop :1;
BYTE fInvalid :1;
BYTE fReserved :3;
} SCRIPT_LOGATTR;
typedef void *SCRIPT_CACHE;
typedef void *SCRIPT_STRING_ANALYSIS;
#ifndef LSDEFS_DEFINED
typedef struct tagGOFFSET {
LONG du;
LONG dv;
} GOFFSET;
#endif
typedef ULONG OPENTYPE_TAG;
typedef struct tagOPENTYPE_FEATURE_RECORD
{
OPENTYPE_TAG tagFeature;
LONG lParameter;
} OPENTYPE_FEATURE_RECORD;
typedef struct tagSCRIPT_GLYPHPROP
{
SCRIPT_VISATTR sva;
WORD reserved;
} SCRIPT_GLYPHPROP;
typedef struct tagSCRIPT_CHARPROP
{
WORD fCanGlyphAlone :1;
WORD reserved :15;
} SCRIPT_CHARPROP;
typedef struct tagTEXTRANGE_PROPERTIES
{
OPENTYPE_FEATURE_RECORD *potfRecords;
INT cotfRecords;
} TEXTRANGE_PROPERTIES;
/* Function Declarations */
_Check_return_
HRESULT
WINAPI
ScriptApplyDigitSubstitution(
_In_reads_(1) const SCRIPT_DIGITSUBSTITUTE* psds,
_Out_writes_(1) SCRIPT_CONTROL* psc,
_Out_writes_(1) SCRIPT_STATE* pss);
_Check_return_
HRESULT
WINAPI
ScriptApplyLogicalWidth(
_In_reads_(cChars) const int *piDx,
_In_ int cChars,
_In_ int cGlyphs,
_In_reads_(cChars) const WORD *pwLogClust,
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_In_reads_(cGlyphs) const int *piAdvance,
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_Inout_updates_opt_(1) ABC *pABC,
_Out_writes_all_(cGlyphs) int *piJustify);
_Check_return_
HRESULT
WINAPI
ScriptRecordDigitSubstitution(
_In_ LCID Locale,
_Out_writes_(1) SCRIPT_DIGITSUBSTITUTE *psds);
_Check_return_
HRESULT
WINAPI
ScriptItemize(
_In_reads_(cInChars) const WCHAR *pwcInChars,
_In_ int cInChars,
_In_ int cMaxItems,
_In_reads_opt_(1) const SCRIPT_CONTROL *psControl,
_In_reads_opt_(1) const SCRIPT_STATE *psState,
_Out_writes_to_(cMaxItems, *pcItems) SCRIPT_ITEM *pItems,
_Out_writes_(1) int *pcItems);
_Check_return_
HRESULT
WINAPI
ScriptGetCMap(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_In_reads_(cChars) const WCHAR *pwcInChars,
_In_ int cChars,
_In_ DWORD dwFlags,
_Out_writes_(cChars) WORD *pwOutGlyphs);
_Check_return_
HRESULT
WINAPI
ScriptGetFontProperties(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_Out_writes_(1) SCRIPT_FONTPROPERTIES *sfp);
_Check_return_
HRESULT
WINAPI
ScriptGetGlyphABCWidth(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_In_ WORD wGlyph,
_Out_writes_(1) ABC *pABC);
_Check_return_
HRESULT
WINAPI
ScriptGetLogicalWidths(
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_In_ int cChars,
_In_ int cGlyphs,
_In_reads_(cGlyphs) const int *piGlyphWidth,
_In_reads_(cChars) const WORD *pwLogClust,
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_In_reads_(cChars) int *piDx);
_Check_return_
HRESULT
WINAPI
ScriptGetProperties(
_Outptr_result_buffer_(*piNumScripts) const SCRIPT_PROPERTIES ***ppSp,
_Out_ int *piNumScripts);
_Check_return_
HRESULT
WINAPI
ScriptStringAnalyse(
_In_ HDC hdc,
_In_ const void *pString,
_In_ int cString,
_In_ int cGlyphs,
_In_ int iCharset,
_In_ DWORD dwFlags,
_In_ int iReqWidth,
_In_reads_opt_(1) SCRIPT_CONTROL *psControl,
_In_reads_opt_(1) SCRIPT_STATE *psState,
_In_reads_opt_(cString) const int *piDx,
_In_reads_opt_(1) SCRIPT_TABDEF *pTabdef,
_In_ const BYTE *pbInClass,
_Outptr_result_buffer_(1) SCRIPT_STRING_ANALYSIS *pssa);
_Check_return_
HRESULT
WINAPI
ScriptStringValidate(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa);
_Check_return_
HRESULT
WINAPI
ScriptStringFree(
_Inout_updates_(1) SCRIPT_STRING_ANALYSIS *pssa);
_Check_return_
HRESULT
WINAPI
ScriptFreeCache(
_Inout_updates_(1) _At_(*psc, _Post_null_) SCRIPT_CACHE *psc);
_Check_return_
HRESULT
WINAPI
ScriptIsComplex(
_In_reads_(cInChars) const WCHAR *pwcInChars,
_In_ int cInChars,
_In_ DWORD dwFlags);
_Check_return_
HRESULT
WINAPI
ScriptJustify(
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_In_reads_(cGlyphs) const int *piAdvance,
_In_ int cGlyphs,
_In_ int iDx,
_In_ int iMinKashida,
_Out_writes_all_(cGlyphs) int *piJustify);
_Check_return_
HRESULT
WINAPI
ScriptLayout(
int cRuns,
_In_reads_(cRuns) const BYTE *pbLevel,
_Out_writes_all_opt_(cRuns) int *piVisualToLogical,
_Out_writes_all_opt_(cRuns) int *piLogicalToVisual);
_Check_return_
HRESULT
WINAPI
ScriptShape(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_In_reads_(cChars) const WCHAR *pwcChars,
_In_ int cChars,
_In_ int cMaxGlyphs,
_Inout_updates_(1) SCRIPT_ANALYSIS *psa,
_Out_writes_to_(cMaxGlyphs, *pcGlyphs) WORD *pwOutGlyphs,
_Out_writes_all_(cChars) WORD *pwLogClust,
_Out_writes_to_(cMaxGlyphs, *pcGlyphs) SCRIPT_VISATTR *psva,
_Out_writes_(1) int *pcGlyphs);
_Check_return_
HRESULT
WINAPI
ScriptPlace(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_In_reads_(cGlyphs) const WORD *pwGlyphs,
_In_ int cGlyphs,
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_Inout_updates_(1) SCRIPT_ANALYSIS *psa,
_Out_writes_all_(cGlyphs) int *piAdvance,
_Out_writes_all_opt_(cGlyphs) GOFFSET *pGoffset,
_Out_writes_(1) ABC *pABC);
_Check_return_
HRESULT
WINAPI
ScriptBreak(
_In_reads_(cChars) const WCHAR *pwcChars,
_In_ int cChars,
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_Out_writes_all_(cChars) SCRIPT_LOGATTR *psla);
_Check_return_
HRESULT
WINAPI
ScriptCacheGetHeight(
_In_ HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_Out_writes_(1) LONG *tmHeight);
_Check_return_
HRESULT
WINAPI
ScriptCPtoX(
_In_ int iCP,
_In_ BOOL fTrailing,
_In_ int cChars,
_In_ int cGlyphs,
_In_reads_(cChars) const WORD *pwLogClust,
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_In_reads_(cGlyphs) const int *piAdvance,
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_Out_ int *piX);
_Check_return_
HRESULT
WINAPI
ScriptXtoCP(
_In_ int iX,
_In_ int cChars,
_In_ int cGlyphs,
_In_reads_(cChars) const WORD *pwLogClust,
_In_reads_(cGlyphs) const SCRIPT_VISATTR *psva,
_In_reads_(cGlyphs) const int *piAdvance,
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_Out_writes_(1) int *piCP,
_Out_writes_(1) int *piTrailing);
_Check_return_
HRESULT
WINAPI
ScriptStringCPtoX(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa,
_In_ int icp,
_In_ BOOL fTrailing,
_Out_writes_(1) int *pX);
_Check_return_
HRESULT
WINAPI
ScriptStringXtoCP(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa,
_In_ int iX,
_Out_writes_(1) int *piCh,
_Out_writes_(1) int *piTrailing);
_Check_return_
HRESULT
WINAPI
ScriptStringGetLogicalWidths(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa,
_Out_ int *piDx);
_Check_return_
HRESULT
WINAPI
ScriptStringGetOrder(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa,
_Out_ UINT *puOrder);
_Check_return_
HRESULT
WINAPI
ScriptStringOut(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa,
_In_ int iX,
_In_ int iY,
_In_ UINT uOptions,
_In_reads_opt_(1) const RECT *prc,
_In_ int iMinSel,
_In_ int iMaxSel,
_In_ BOOL fDisabled);
_Check_return_
HRESULT
WINAPI
ScriptTextOut(
_In_ const HDC hdc,
_Inout_updates_(1) SCRIPT_CACHE *psc,
_In_ int x,
_In_ int y,
_In_ UINT fuOptions,
_In_reads_opt_(1) const RECT *lprc,
_In_reads_(1) const SCRIPT_ANALYSIS *psa,
_Reserved_ const WCHAR *pwcReserved,
_Reserved_ int iReserved,
_In_reads_(cGlyphs) const WORD *pwGlyphs,
_In_ int cGlyphs,
_In_reads_(cGlyphs) const int *piAdvance,
_In_reads_opt_(cGlyphs) const int *piJustify,
_In_reads_(cGlyphs) const GOFFSET *pGoffset);
const int*
WINAPI
ScriptString_pcOutChars(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa);
const SCRIPT_LOGATTR*
WINAPI
ScriptString_pLogAttr(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa);
const SIZE*
WINAPI
ScriptString_pSize(
_In_reads_(1) SCRIPT_STRING_ANALYSIS ssa);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __USP10_H */