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)