130042Sminshall /* 230042Sminshall * @(#)screen.h 3.1 10/29/86 330042Sminshall */ 430042Sminshall 530042Sminshall #define INCLUDED_TERMINAL 630042Sminshall 730042Sminshall #if defined(SLOWSCREEN) 830042Sminshall 930042Sminshall /* 1030042Sminshall * In the situation where we have a copy of the terminal screen in front 1130042Sminshall * of us, here are some macros to deal with them. 1230042Sminshall */ 1330042Sminshall 14*31148Sminshall #define TermAttributes(x) (TermIsStartField(x)? GetTerminal(x)&0xff : \ 15*31148Sminshall GetTerminal(WhereTermAttrByte(x))&0xff) 16*31148Sminshall #define TermIsStartField(x) (GetTerminal(x)&ATTR_MASK) 17*31148Sminshall #define TermNewField(p,a) SetTerminal(p, (a)|ATTR_MASK) 18*31148Sminshall #define TermDeleteField(p) SetTerminal(p, 0) 1930042Sminshall #define TermIsNonDisplay(x) \ 2030042Sminshall ((TermAttributes(x)&ATTR_DSPD_MASK) == ATTR_DSPD_NONDISPLAY) 2130042Sminshall #define TermIsHighlighted(x) \ 2230042Sminshall (((TermAttributes(x)&ATTR_DSPD_MASK) == ATTR_DSPD_HIGH) \ 2330042Sminshall && !TermIsStartField(x)) 2430042Sminshall 2530042Sminshall #define TerminalCharacterAttr(c,p,a) (IsNonDisplayAttr(a) ? ' ':c) 2630042Sminshall #define TerminalCharacter(c,p) TerminalCharacterAttr(c,p,FieldAttributes(p)) 2730042Sminshall 2830042Sminshall #define NeedToRedisplayFields(p) ((TermIsNonDisplay(p) != IsNonDisplay(p)) || \ 2930042Sminshall (TermIsHighlighted(p) != IsHighlighted(p))) 3030042Sminshall #define NeedToRedisplayFieldsAttr(p,c) ( \ 3130042Sminshall (TermIsNonDisplay(p) != IsNonDisplayAttr(c)) || \ 3230042Sminshall (TermIsHighlighted(p) != IsHighlightedAttr(c))) 3330042Sminshall 3430042Sminshall #define NotVisuallyCompatibleAttributes(p,c,d) ( \ 3530042Sminshall (IsNonDisplayAttr(c) != IsNonDisplayAttr(d)) || \ 3630042Sminshall (IsHighlightedAttr(c) != IsHighlightedAttr(d))) 3730042Sminshall 3830042Sminshall #define NeedToRedisplayAttr(c,p,a) \ 3930042Sminshall ((c != GetTerminal(p)) || NeedToRedisplayFieldsAttr(p,a)) 4030042Sminshall #define NeedToRedisplay(c,p) NeedToRedisplayAttr(c,p,FieldAttributes(p)) 4130042Sminshall 42*31148Sminshall #endif /* defined(SLOWSCREEN) */ 4330042Sminshall 44*31148Sminshall #define GetTerminal(i) GetGeneric(i, Terminal) 45*31148Sminshall #define GetTerminalPointer(p) GetGenericPointer(p) 46*31148Sminshall #define SetTerminal(i,c) SetGeneric(i,c,Terminal) 47