# new_pair 3x

    new_pair(3x)                                                      new_pair(3x)

## NAME

           alloc_pair, find_pair, free_pair - new curses color-pair functions

## 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
           foreground/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:

           o   While  almost  all  terminals  allow  setting  the color attributes
               independently, 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.

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

           o   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

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

                   ( COLORS + 1 ) * ( COLORS + 1 )

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

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

               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  if  that  color combination is already
           associated with a color pair.

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

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

           o   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 if 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.

## SEE ALSO

           curs_color(3x).

## AUTHOR

           Thomas Dickey.

                                                                      new_pair(3x)