Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
new_pair(3X)			  Library calls 		    new_pair(3X)

NAME
     alloc_pair, find_pair, free_pair - dynamically allocate curses color pairs

SYNOPSIS
     #include <curses.h>

     int alloc_pair(int fg, int bg);
     int find_pair(int fg, int bg);
     int free_pair(int pair);

DESCRIPTION
     These functions are an extension to the curses library.  They permit an ap-
     plication	to  dynamically allocate a color pair using the foreground/back-
     ground colors rather than assign a fixed color pair number, and  return  an
     unused pair to the pool.

     The  number  of colors may be related to the number of possible color pairs
     for a given terminal, or it may not:

     *	 While almost all terminals allow setting the color attributes	indepen-
	 dently,  it is unlikely that your terminal allows you to modify the at-
	 tributes of a given character cell without rewriting it.  That is,  the
	 foreground and background colors are applied as a pair.

     *	 Color pairs are the curses library's way of managing a color palette on
	 a  terminal.  If the library does not keep track of the combinations of
	 colors which are displayed, it will be inefficient.

     *	 For simple terminal emulators with only a few dozen color combinations,
	 it is convenient to use the maximum number of combinations as the limit
	 on color pairs:

	     COLORS * COLORS

     *	 Terminals which support default colors distinct from "ANSI colors"  add
	 to the possible combinations, producing this total:

	     ( COLORS + 1 ) * ( COLORS + 1 )

     *	 An  application  might use up to a few dozen color pairs to implement a
	 color scheme.

	 Beyond that lies in the realm of  programs  using  the  foreground  and
	 background  colors  for "ASCII art" (or some other non-textual applica-
	 tion).

	 Also beyond those few dozen pairs, the required size  for  a  table  to
	 represent  the  combinations grows rapidly with an increasing number of
	 colors.

	 These functions allow a developer to  let  the  screen  library  manage
	 color pairs.

   alloc_pair
     The  alloc_pair  function	accepts parameters for foreground and background
     color, and checks whether that color combination is already associated with
     a color pair.

     *	 If the combination already  exists,  alloc_pair  returns  the	existing
	 pair.

     *	 If  the  combination  does  not exist, alloc_pair allocates a new color
	 pair and returns that.

     *	 If the table fills up, alloc_pair discards the least-recently allocated
	 entry using free_pair and allocates a new color pair.

     All of the color pairs are allocated from a table of possible color  pairs.
     The  size of the table is determined by the terminfo pairs capability.  The
     table is shared with init_pair; in fact alloc_pair  calls	init_pair  after
     updating the ncurses library's fast index to the colors versus color pairs.

   find_pair
     The  find_pair  function  accepts	parameters for foreground and background
     color, and checks whether that color combination is already associated with
     a color pair, returning the pair number if it has been  allocated.   Other-
     wise it returns -1.

   free_pair
     Marks the given color pair as unused, i.e., like color pair 0.

RETURN VALUE
     The  alloc_pair function returns a color pair number in the range 1 through
     COLOR_PAIRS-1, unless it encounters an error updating its fast index to the
     color pair values, preventing it from allocating a  color	pair.	In  that
     case, it returns -1.

     The  find_pair function returns a color pair number if the given color com-
     bination has been associated with a color pair, or -1 if not.

     Likewise, free_pair returns OK unless it encounters an error  updating  the
     fast index or if no such color pair is in use.

PORTABILITY
     These routines are specific to ncurses.  They were not supported on Version
     7,  BSD  or  System V implementations.  It is recommended that any code de-
     pending on them be conditioned using NCURSES_VERSION.

AUTHORS
     Thomas Dickey

SEE ALSO
     curs_color(3X)

ncurses 6.6			   2025-08-16			    new_pair(3X)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=new_pair&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help