135 lines
4.6 KiB
C
135 lines
4.6 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 */
|