diff --git a/src/main.c b/src/main.c index c5517985..3d6fe78e 100644 --- a/src/main.c +++ b/src/main.c @@ -355,9 +355,11 @@ struct { * @param argv argument values * @param filenames pointers to receive file names * @param directories pointers to receive file directories + * @param videomode_arg pointer to receive the -mode argument + * @param pixel_ratio pointer to receive the pixel ratio requested * @return the number of file to open (0, 1 or 2) */ -int Analyze_command_line(int argc, char * argv[], char * filenames[], char * directories[]) +int Analyze_command_line(int argc, char * argv[], char * filenames[], char * directories[], const char ** videomode_arg, int * pixel_ratio) { char *buffer; char *filename; @@ -421,18 +423,8 @@ int Analyze_command_line(int argc, char * argv[], char * filenames[], char * dir index++; if (index 0) @@ -969,10 +961,28 @@ int Init_program(int argc,char * argv[]) if (!Smear_brush) Error(ERROR_MEMORY); + // set videomode according to the command line + if (videomode) + { + Resolution_in_command_line = 1; + Current_resolution = Convert_videomode_arg(videomode); + if (Current_resolution == -1) + { + Error(ERROR_COMMAND_LINE); + exit(0); + } + if ((Video_mode[Current_resolution].State & 0x7F) == 3) + { + Error(ERROR_FORBIDDEN_MODE); + exit(0); + } + } starting_videomode=Current_resolution; Horizontal_line_buffer=NULL; Screen_width=Screen_height=Current_resolution=0; + if (cmdline_pixelratio >= 0 && cmdline_pixelratio < (int)PIXEL_MAX) + Pixel_ratio = cmdline_pixelratio; Init_mode_video( Video_mode[starting_videomode].Width,