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
       application to dynamically  allocate  a	color  pair  using  the	 fore-
       ground/background  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 inde-
	   pendently,  it  is unlikely that your terminal allows you to	modify
	   the attributes 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  combina-
	   tions,  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	appli-
	   cation).

	   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	 back-
       ground  color, and checks whether that color combination	is already as-
       sociated	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 allo-
	   cated 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 capa-
       bility.	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.
       Otherwise 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
       combination 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 depending 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