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 @@ - + curs_attr 3x @@ -141,9 +150,33 @@

Legacy window attributes

-       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.
 
 
+

HISTORY

+       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.
+
+
 

EXTENSIONS

        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 @@
 
 
  • VIDEO ATTRIBUTES
  • NOTES
  • +
  • HISTORY
  • EXTENSIONS
  • PORTABILITY
  • RETURN VALUE