SDL_ListModes -- Returns a pointer to an array of available screen dimensions for the given format and video flags
module "/pliant/SDL/SDL.pli" function SDL_ListModes format flags -> rect_array arg Address format # (SDL_PixelFormat) arg uInt flags arg Address rect_array #(Pointer:Pointer:SDL_Rect or SDL_Rect **) external sdl_library "SDL_ListModes"
Return a pointer to an array of available screen dimensions for the given format and video flags, sorted largest to smallest. Returns NULL if there are no dimensions available for a particular format, or -1 if any dimension is okay for the given format.
If format is NULL, the mode list will be for the format returned by SDL_GetVideoInfo()->vfmt. The flag parameter is an OR'd combination of surface flags. The flags are the same as those used SDL_SetVideoMode and they play a strong role in deciding what modes are valid. For instance, if you pass SDL_HWSURFACE as a flag only modes that support hardware video surfaces will be returned.
var Address modes var Int i . . . #Get available FULLSCREEN/hardware modes: modes := SDL_ListModes null SDL_FULLSCREEN .or. SDL_HWSURFACE if modes = null console "No modes available" eol return -1 if modes = (cast -1 Address) console "All resolutions available" else console "Available Modes:" eol var SDL_Rect r while modes <> null r := (modes map SDL_Rect) console r:w "x" r:h modes := (modes translate SDL_Rect 1)