Provided by: allegro4-doc_4.4.3.1-4.1build3_all bug

NAME

       gfx_mode_select_filter  -  Even more extended version of the graphics mode selection dialog. Allegro game
       programming library.

SYNOPSIS

       #include <allegro.h>

       int gfx_mode_select_filter(int *card, int *w, int *h, int  *color_depth,  int  (*filter)(int,  int,  int,
       int));

DESCRIPTION

       Even  more  extended  version  of  the  graphics  mode  selection  dialog, which allows the programmer to
       customize the contents of the dialog and the user to select the color depth as well as the resolution and
       hardware driver.  `filter' will be passed (card, w, h, color_depth) quadruplets and must return 0 to  let
       the specified quadruplet be added to the list of displayed modes.

       As  with  gfx_mode_select,  the  values  stored  at  the addresses passed to the function will be used as
       suggestions for the initial selections in the dialog, defaulting to the first entry in each list  if  the
       values  are not found. Initialize the data stored at the addresses passed to the function to the value of
       0 or -1 if you want to ensure that the initial selection for each list will be the first entry.

       If the dialog is OK'd, it stores the selections at the addresses passed to the function.

       Example usage :

          ret = gfx_mode_select_filter(&card, &w, &h, &color_depth, user_filter);
          if (ret) {/* User okayed dialog or user_filter removed all modes */
             if (card == GFX_NONE) {
                // No modes available
                *card = 0;/* Make sure not to leave *card == GFX_NONE */
                return -1;
             }
             /* Handle changing to new mode here... */

          } else {/* User cancelled dialog or there was an error (unlikely) */
             if (card == GFX_NONE) {
                /* Error, probably out of memory */
                *card = 0;/* Make sure not to leave *card == GFX_NONE */
                return -2;
             }
             /* Carry on in current graphics mode if that is acceptable */
          }

RETURN VALUE

       Returns zero if the user cancelled the dialog or an error occurred. In the case of an error then *card is
       assigned the value GFX_NONE. The functions return non-zero if the user made a selection  OR  if  all  the
       modes  were filtered out. In the case that all of the modes were filtered out, then *card is assigned the
       value GFX_NONE. This means you should NOT initialize the *card to the value  of  GFX_NONE,  as  it  could
       interfere with determining the proper return value.

SEE ALSO

       gfx_mode_select(3alleg4),  gfx_mode_select_ex(3alleg4),  set_color_depth(3alleg4), set_gfx_mode(3alleg4),
       gui_fg_color(3alleg4)

Allegro                                           version 4.4.3                  gfx_mode_select_filter(3alleg4)