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 */
}