X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_attr.3x.html;h=fc5eee050a123ef2852fd8363885ca3ca9b0bc33;hp=f359177eafb2575cacbd3ed6209644b171b1b851;hb=17c5992a16be94247b83f2bbb9accdd9b7e7bb72;hpb=ed646e3f683083e787c6ba773364401dc9fa9d40 diff --git a/doc/html/man/curs_attr.3x.html b/doc/html/man/curs_attr.3x.html index f359177e..fc5eee05 100644 --- a/doc/html/man/curs_attr.3x.html +++ b/doc/html/man/curs_attr.3x.html @@ -1,7 +1,7 @@
- +- Most of the window attribute routines are extensions of older routines - which assume that color pairs are OR'd into the attribute parameter. - These older routines use the same name, omitting an underscore (_). + The X/Open window attribute routines which set or get, turn on or off + are extensions of older routines which assume that color pairs are OR'd + into the attribute parameter. These newer routines use similar names, + because X/Open simply added an underscore (_) for the newer names. + + The int datatype used in the legacy routines is treated as if it is the + same size as chtype (used by addch(3x)). It holds the common video at- + tributes (such as bold, reverse), as well as a few bits for color. + Those bits correspond to the A_COLOR symbol. The COLOR_PAIR macro pro- + vides a value which can be OR'd into the attribute parameter. For ex- + ample, as long as that value fits into the A_COLOR mask, then these + calls produce similar results: + + attrset(A_BOLD | COLOR_PAIR(pair)); + attr_set(A_BOLD, pair, NULL); + + However, if the value does not fit, then the COLOR_PAIR macro uses only + the bits that fit. For example, because in ncurses A_COLOR has eight + (8) bits, then COLOR_PAIR(259) is 4 (i.e., 259 is 4 more than the limit + 255). + + The PAIR_NUMBER macro extracts a pair number from an int (or chtype). + For example, the input and output values in these statements would be + the same: + + int value = A_BOLD | COLOR_PAIR(input); + int output = PAIR_NUMBER(value); The attrset routine is a legacy feature predating SVr4 curses but kept in X/Open Curses for the same reason that SVr4 curses kept it: compati- @@ -195,7 +228,7 @@ passed to addch (see curs_addch(3x)). Name Description - ----------------------------------------------------------- + ----------------------------------------------------------------- A_NORMAL Normal display (no highlight) A_STANDOUT Best highlighting mode of the terminal. A_UNDERLINE Underlining @@ -208,6 +241,7 @@ A_ALTCHARSET Alternate character set A_ITALIC Italics (non-X/Open extension) A_CHARTEXT Bit-mask to extract a character + A_COLOR Bit-mask to extract a color (legacy routines) These video attributes are supported by attr_on and related functions (which also support the attributes recognized by attron, etc.): @@ -240,6 +274,127 @@ support more than 256 color pairs. +
+ X/Open Curses is largely based on SVr4 curses, adding support for + "wide-characters" (not specific to Unicode). Some of the X/Open dif- + ferences from SVr4 curses address the way video attributes can be ap- + plied to wide-characters. But aside from that, attrset and attr_set + are similar. SVr4 curses provided the basic features for manipulating + video attributes. However, earlier versions of curses provided a part + of these features. + + As seen in 2.8BSD, curses assumed 7-bit characters, using the eighth + bit of a byte to represent the standout feature (often implemented as + bold and/or reverse video). The BSD curses library provided functions + standout and standend which were carried along into X/Open Curses due + to their pervasive use in legacy applications. + + Some terminals in the 1980s could support a variety of video at- + tributes, although the BSD curses library could do nothing with those. + System V (1983) provided an improved curses library. It defined the A_ + symbols for use by applications to manipulate the other attributes. + There are few useful references for the chronology. + + Goodheart's book UNIX Curses Explained (1991) describes SVr3 (1987), + commenting on several functions: + + o the attron, attroff, attrset functions (and most of the functions + found in SVr4 but not in BSD curses) were introduced by System V, + + o the alternate character set feature with A_ALTCHARSET was added in + SVr2 and improved in SVr3 (by adding acs_map[]), + + o start_color and related color-functions were introduced by System + V.3.2, + + o pads, soft-keys were added in SVr3, and + + Goodheart did not mention the background character or the cchar_t type. + Those are respectively SVr4 and X/Open features. He did mention the A_ + constants, but did not indicate their values. Those were not the same + in different systems, even for those marked as System V. + + Different Unix systems used different sizes for the bit-fields in + chtype for characters and colors, and took into account the different + integer sizes (32-bit versus 64-bit). + + This table showing the number of bits for A_COLOR and A_CHARTEXT was + gleaned from the curses header files for various operating systems and + architectures. The inferred architecture and notes reflect the format + and size of the defined constants as well as clues such as the alter- + nate character set implementation. A 32-bit library can be used on a + 64-bit system, but not necessarily the reverse. + + Year System Arch Color Char Notes + ---------------------------------------------------------------- + 1992 Solaris 5.2 32 6 17 SVr4 curses + 1992 HPUX 9 32 no 8 SVr2 curses + 1992 AIX 3.2 32 no 23 SVr2 curses + 1994 OSF/1 r3 32 no 23 SVr2 curses + 1995 HP-UX 10.00 32 6 16 SVr3 "curses_colr" + 1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses + 1995 Solaris 5.4 32/64 7 16 X/Open curses + 1996 AIX 4.2 32 7 16 X/Open curses + 1996 OSF/1 r4 32 6 16 X/Open curses + + 1997 HP-UX 11.00 32 6 8 X/Open curses + 2000 U/Win 32/64 7/31 16 uses chtype + + Notes: + + Regarding HP-UX, + + o HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors + in 1996. + + o HP-UX 10.30 (1997) marked "curses_colr" obsolete. That version + of curses was dropped with HP-UX 11.30 in 2006. + + Regarding OSF/1 (and Tru64), + + o These used 64-bit hardware. Like ncurses, the OSF/1 curses in- + terface is not customized for 32-bit and 64-bit versions. + + o Unlike other systems which evolved from AT&T code, OSF/1 provid- + ed a new implementation for X/Open curses. + + Regarding Solaris, + + o The initial release of Solaris was in 1992. + + o The xpg4 (X/Open) curses was developed by MKS from 1990 to 1995. + Sun's copyright began in 1996. + + o Sun updated the X/Open curses interface after 64-bit support was + introduced in 1997, but did not modify the SVr4 curses inter- + face. + + Regarding U/Win, + + o Development of the curses library began in 1991, stopped in + 2000. + + o Color support was added in 1998. + + o The library uses only chtype (no cchar_t). + + Once X/Open curses was adopted in the mid-1990s, the constraint of a + 32-bit interface with many colors and wide-characters for chtype became + a moot point. The cchar_t structure (whose size and members are not + specified in X/Open Curses) could be extended as needed. + + Other interfaces are rarely used now: + + o BSD curses was improved slightly in 1993/1994 using Keith Bostic's + modification to make the library 8-bit clean for nvi. He moved + standout attribute to a structure member. + + The resulting 4.4BSD curses was replaced by ncurses over the next + ten years. + + o U/Win is rarely used now. + +
This implementation provides the A_ITALIC attribute for terminals which have the enter_italics_mode (sitm) and exit_italics_mode (ritm) capa- @@ -305,9 +460,25 @@ WA_BOLD Extra bright or bold WA_ALTCHARSET Alternate character set - The XSI curses standard specifies that each pair of corresponding A_ - and WA_-using functions operates on the same current-highlight informa- - tion. + XSI curses does not assign values to these symbols, nor does it state + whether or not they are related to the similarly-named A_NORMAL, etc.: + + o The XSI curses standard specifies that each pair of corresponding + A_ and WA_-using functions operates on the same current-highlight + information. + + o However, in some implementations, those symbols have unrelated val- + ues. + + For example, the Solaris xpg4 (X/Open) curses declares attr_t to be + an unsigned short integer (16-bits), while chtype is a unsigned in- + teger (32-bits). The WA_ symbols in this case are different from + the A_ symbols because they are used for a smaller datatype which + does not represent A_CHARTEXT or A_COLOR. + + In this implementation (as in many others), the values happen to be + the same because it simplifies copying information between chtype + and cchar_t variables. The XSI standard extended conformance level adds new highlights A_HORI- ZONTAL, A_LEFT, A_LOW, A_RIGHT, A_TOP, A_VERTICAL (and corresponding @@ -358,6 +529,7 @@