windows-nt/Source/XPSP1/NT/windows/richedit/inci/port.h
2020-09-26 16:20:57 +08:00

135 lines
4.5 KiB
C

#ifndef PORT_DEFINED
#define PORT_DEFINED
#include "lsdefs.h"
#ifndef BIG_ENDIAN
#define fPortTntiKern 0x0001
#define fPortTntiModWidthOnRun 0x0002
#define fPortTntiModWidthSpace 0x0004
#define fPortTntiModWidthPairs 0x0008
#define fPortTntiCompressOnRun 0x0010
#define fPortTntiCompressSpace 0x0020
#define fPortTntiCompressTable 0x0040
#define fPortTntiExpandOnRun 0x0080
#define fPortTntiExpandSpace 0x0100
#define fPortTntiExpandTable 0x0200
#define fPortTntiGlyphBased 0x0400
#else
#define fPortTntiKern 0x8000
#define fPortTntiModWidthOnRun 0x4000
#define fPortTntiModWidthSpace 0x2000
#define fPortTntiModWidthPairs 0x1000
#define fPortTntiCompressOnRun 0x0800
#define fPortTntiCompressSpace 0x0400
#define fPortTntiCompressTable 0x0200
#define fPortTntiExpandOnRun 0x0100
#define fPortTntiExpandSpace 0x0080
#define fPortTntiExpandTable 0x0040
#define fPortTntiGlyphBased 0x0020
#endif
#ifndef BIG_ENDIAN
#define fPortDisplayInvisible 0x0001
#define fPortDisplayUnderline 0x0002
#define fPortDisplayStrike 0x0004
#define fPortDisplayShade 0x0008
#define fPortDisplayBorder 0x0010
#define fPortDisplayHyphen 0x0020
#define fPortDisplayCheckForReplaceChar 0x0040
#else
#define fPortDisplayInvisible 0x8000
#define fPortDisplayUnderline 0x4000
#define fPortDisplayStrike 0x2000
#define fPortDisplayShade 0x1000
#define fPortDisplayBorder 0x0800
#define fPortDisplayHyphen 0x0400
#define fPortDisplayCheckForReplaceChar 0x0200
#endif
struct lschpint /* Character properties */
{
WORD idObj; /* Object type */
BYTE dcpMaxContext;
BYTE EffectsFlags;
/* Property flags */
struct
{
WORD Flags1;
WORD Flags2;
} cast;
long dvpPos; /* for dvpPos values, */
/* pos => raised, neg => lowered, */
};
typedef struct lschpint LSCHPINT;
#define FIsTntiFlagsCastWorks(plschp) \
((UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiKern) != 0) \
== (plschp)->fApplyKern && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiModWidthOnRun) != 0) \
== (plschp)->fModWidthOnRun && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiModWidthSpace) != 0) \
== (plschp)->fModWidthSpace && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiModWidthPairs) != 0) \
== (plschp)->fModWidthPairs && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiCompressOnRun) != 0) \
== (plschp)->fCompressOnRun && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiCompressSpace) != 0) \
== (plschp)->fCompressSpace && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiCompressTable) != 0) \
== (plschp)->fCompressTable && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiExpandOnRun) != 0) \
== (plschp)->fExpandOnRun && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiExpandSpace) != 0) \
== (plschp)->fExpandSpace && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiExpandTable) != 0) \
== (plschp)->fExpandTable && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags1) & fPortTntiGlyphBased) != 0) \
== (plschp)->fGlyphBased \
)
#define AddNominalToIdealFlags(storage, plschp) \
Assert(FIsTntiFlagsCastWorks(plschp)); \
(storage) |= \
((LSCHPINT*) (plschp))->cast.Flags1 ;
#define GetNominalToIdealFlagsFromLschp(plschp) \
( Assert(FIsTntiFlagsCastWorks(plschp)), \
(((LSCHPINT*) (plschp))->cast.Flags1) \
)
#define FIsDisplayFlagsCastWorks(plschp) \
((UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayInvisible) != 0) \
== (plschp)->fInvisible && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayUnderline) != 0) \
== (plschp)->fUnderline && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayStrike) != 0) \
== (plschp)->fStrike && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayShade) != 0) \
== (plschp)->fShade && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayBorder) != 0) \
== (plschp)->fBorder && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayHyphen) != 0) \
== (plschp)->fHyphen && \
(UINT)(((((LSCHPINT*) (plschp))->cast.Flags2) & fPortDisplayCheckForReplaceChar) != 0) \
== (plschp)->fCheckForReplaceChar \
)
#define AddDisplayFlags(storage, plschp) \
Assert(FIsDisplayFlagsCastWorks((plschp))); \
(storage) |= \
((LSCHPINT*) (plschp))->cast.Flags2 ;
#endif /* CHNUTILS_DEFINED */