Process Win32 commandline
This commit is contained in:
parent
e4b3ca7109
commit
d809adb540
225
src/main.c
225
src/main.c
@ -37,6 +37,10 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#else
|
||||||
|
#if _MSC_VER < 1900
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_SDL) || defined(USE_SDL2)
|
#if defined(USE_SDL) || defined(USE_SDL2)
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
@ -104,35 +108,45 @@ static int setsize_height;
|
|||||||
//--- Affichage de la syntaxe, et de la liste des modes vidéos disponibles ---
|
//--- Affichage de la syntaxe, et de la liste des modes vidéos disponibles ---
|
||||||
void Display_syntax(void)
|
void Display_syntax(void)
|
||||||
{
|
{
|
||||||
int mode_index;
|
int mode_index, i;
|
||||||
printf("Syntax: grafx2 [<arguments>] [<picture1>] [<picture2>]\n\n");
|
char modes[1024*2];
|
||||||
printf("<arguments> can be:]\n");
|
const char * syntax =
|
||||||
printf("\t-? -h -H -help for this help screen\n");
|
"Syntax: grafx2 [<arguments>] [<picture1>] [<picture2>]\n\n"
|
||||||
printf("\t-wide to emulate a video mode with wide pixels (2x1)\n");
|
"<arguments> can be:\n"
|
||||||
printf("\t-tall to emulate a video mode with tall pixels (1x2)\n");
|
"\t-? -h -H -help for this help screen\n"
|
||||||
printf("\t-double to emulate a video mode with double pixels (2x2)\n");
|
"\t-wide to emulate a video mode with wide pixels (2x1)\n"
|
||||||
printf("\t-wide2 to emulate a video mode with double wide pixels (4x2)\n");
|
"\t-tall to emulate a video mode with tall pixels (1x2)\n"
|
||||||
printf("\t-tall2 to emulate a video mode with double tall pixels (2x4)\n");
|
"\t-double to emulate a video mode with double pixels (2x2)\n"
|
||||||
printf("\t-triple to emulate a video mode with triple pixels (3x3)\n");
|
"\t-wide2 to emulate a video mode with double wide pixels (4x2)\n"
|
||||||
printf("\t-quadruple to emulate a video mode with quadruple pixels (4x4)\n");
|
"\t-tall2 to emulate a video mode with double tall pixels (2x4)\n"
|
||||||
printf("\t-rgb n to reduce RGB precision (2 to 256, 256=max precision)\n");
|
"\t-triple to emulate a video mode with triple pixels (3x3)\n"
|
||||||
printf("\t-gamma n to adjust Gamma correction (1 to 30, 10=no correction)\n");
|
"\t-quadruple to emulate a video mode with quadruple pixels (4x4)\n"
|
||||||
printf("\t-skin <filename> to use an alternate file with the menu graphics\n");
|
"\t-rgb n to reduce RGB precision (2 to 256, 256=max precision)\n"
|
||||||
printf("\t-mode <videomode> to set a video mode\n");
|
"\t-gamma n to adjust Gamma correction (1 to 30, 10=no correction)\n"
|
||||||
printf("\t-size <resolution> to set the image size\n");
|
"\t-skin <filename> to use an alternate file with the menu graphics\n"
|
||||||
printf("Arguments can be prefixed either by / - or --\n");
|
"\t-mode <videomode> to set a video mode\n"
|
||||||
printf("They can also be abbreviated.\n\n");
|
"\t-size <resolution> to set the image size\n"
|
||||||
printf("Available video modes:\n\n");
|
"Arguments can be prefixed either by / - or --\n"
|
||||||
|
"They can also be abbreviated.\n\n";
|
||||||
|
fputs(syntax, stdout);
|
||||||
|
|
||||||
|
i = snprintf(modes, sizeof(modes), "Available video modes:\n\n");
|
||||||
for (mode_index = 0; mode_index < Nb_video_modes; mode_index += 12)
|
for (mode_index = 0; mode_index < Nb_video_modes; mode_index += 12)
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
for (k = 0; k < 6; k++)
|
for (k = 0; k < 6; k++)
|
||||||
{
|
{
|
||||||
if (mode_index + k >= Nb_video_modes) break;
|
if (mode_index + k >= Nb_video_modes) break;
|
||||||
printf("%12s",Mode_label(mode_index + k));
|
i += snprintf(modes + i, sizeof(modes) - i, "%12s", Mode_label(mode_index + k));
|
||||||
}
|
}
|
||||||
puts("");
|
i += snprintf(modes + i, sizeof(modes) - i, "\n");
|
||||||
}
|
}
|
||||||
|
fputs(modes, stdout);
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
MessageBoxA(NULL, syntax, "GrafX2", MB_OK);
|
||||||
|
MessageBoxA(NULL, modes, "GrafX2", MB_OK);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------- Sortie impromptue ----------------------------
|
// ---------------------------- Sortie impromptue ----------------------------
|
||||||
@ -267,9 +281,9 @@ int Analyze_command_line(int argc, char * argv[], char *main_filename, char *mai
|
|||||||
|
|
||||||
file_in_command_line = 0;
|
file_in_command_line = 0;
|
||||||
Resolution_in_command_line = 0;
|
Resolution_in_command_line = 0;
|
||||||
|
|
||||||
Current_resolution = Config.Default_resolution;
|
Current_resolution = Config.Default_resolution;
|
||||||
|
|
||||||
for (index = 1; index<argc; index++)
|
for (index = 1; index<argc; index++)
|
||||||
{
|
{
|
||||||
char *s = argv[index];
|
char *s = argv[index];
|
||||||
@ -289,7 +303,7 @@ int Analyze_command_line(int argc, char * argv[], char *main_filename, char *mai
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
for (tmpi = 0; tmpi < ARRAY_SIZE(cmdparams); tmpi++)
|
for (tmpi = 0; tmpi < ARRAY_SIZE(cmdparams); tmpi++)
|
||||||
{
|
{
|
||||||
if (!strcmp(s, cmdparams[tmpi].param))
|
if (!strcmp(s, cmdparams[tmpi].param))
|
||||||
@ -462,7 +476,7 @@ int Analyze_command_line(int argc, char * argv[], char *main_filename, char *mai
|
|||||||
{
|
{
|
||||||
file_in_command_line ++;
|
file_in_command_line ++;
|
||||||
buffer = Realpath(argv[index], NULL);
|
buffer = Realpath(argv[index], NULL);
|
||||||
|
|
||||||
if (file_in_command_line == 1)
|
if (file_in_command_line == 1)
|
||||||
{
|
{
|
||||||
// Separate path from filename
|
// Separate path from filename
|
||||||
@ -504,7 +518,7 @@ CT_ASSERT(sizeof(T_Palette)==768);
|
|||||||
// ------------------------ Initialiser le programme -------------------------
|
// ------------------------ Initialiser le programme -------------------------
|
||||||
// Returns 0 on fail
|
// Returns 0 on fail
|
||||||
int Init_program(int argc,char * argv[])
|
int Init_program(int argc,char * argv[])
|
||||||
{
|
{
|
||||||
int temp;
|
int temp;
|
||||||
int starting_videomode;
|
int starting_videomode;
|
||||||
enum IMAGE_MODES starting_image_mode;
|
enum IMAGE_MODES starting_image_mode;
|
||||||
@ -519,14 +533,14 @@ int Init_program(int argc,char * argv[])
|
|||||||
static char main_directory[MAX_PATH_CHARACTERS];
|
static char main_directory[MAX_PATH_CHARACTERS];
|
||||||
static char spare_filename [MAX_PATH_CHARACTERS];
|
static char spare_filename [MAX_PATH_CHARACTERS];
|
||||||
static char spare_directory[MAX_PATH_CHARACTERS];
|
static char spare_directory[MAX_PATH_CHARACTERS];
|
||||||
|
|
||||||
#if defined(__MINT__)
|
#if defined(__MINT__)
|
||||||
printf("===============================\n");
|
printf("===============================\n");
|
||||||
printf(" /|\\ GrafX2 %.19s\n", Program_version);
|
printf(" /|\\ GrafX2 %.19s\n", Program_version);
|
||||||
printf(" compilation date: %.16s\n", __DATE__);
|
printf(" compilation date: %.16s\n", __DATE__);
|
||||||
printf("===============================\n");
|
printf("===============================\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FILENAMES_ICONV
|
#ifdef ENABLE_FILENAMES_ICONV
|
||||||
// iconv is used to convert filenames
|
// iconv is used to convert filenames
|
||||||
cd = iconv_open(TOCODE, FROMCODE); // From UTF8 to ANSI
|
cd = iconv_open(TOCODE, FROMCODE); // From UTF8 to ANSI
|
||||||
@ -563,10 +577,10 @@ int Init_program(int argc,char * argv[])
|
|||||||
|
|
||||||
// On initialise les données sur le nom de fichier de l'image de brouillon:
|
// On initialise les données sur le nom de fichier de l'image de brouillon:
|
||||||
strcpy(Spare.selector.Directory,Main.selector.Directory);
|
strcpy(Spare.selector.Directory,Main.selector.Directory);
|
||||||
|
|
||||||
Main.fileformat=DEFAULT_FILEFORMAT;
|
Main.fileformat=DEFAULT_FILEFORMAT;
|
||||||
Spare.fileformat =DEFAULT_FILEFORMAT;
|
Spare.fileformat =DEFAULT_FILEFORMAT;
|
||||||
|
|
||||||
strcpy(Brush_selector.Directory,Main.selector.Directory);
|
strcpy(Brush_selector.Directory,Main.selector.Directory);
|
||||||
strcpy(Brush_file_directory,Main.selector.Directory);
|
strcpy(Brush_file_directory,Main.selector.Directory);
|
||||||
strcpy(Brush_filename ,"NO_NAME.GIF");
|
strcpy(Brush_filename ,"NO_NAME.GIF");
|
||||||
@ -575,18 +589,18 @@ int Init_program(int argc,char * argv[])
|
|||||||
strcpy(Palette_selector.Directory,Main.selector.Directory);
|
strcpy(Palette_selector.Directory,Main.selector.Directory);
|
||||||
|
|
||||||
// On initialise ce qu'il faut pour que les fileselects ne plantent pas:
|
// On initialise ce qu'il faut pour que les fileselects ne plantent pas:
|
||||||
|
|
||||||
Main.selector.Position=0; // Au début, le fileselect est en haut de la liste des fichiers
|
Main.selector.Position=0; // Au début, le fileselect est en haut de la liste des fichiers
|
||||||
Main.selector.Offset=0; // Au début, le fileselect est en haut de la liste des fichiers
|
Main.selector.Offset=0; // Au début, le fileselect est en haut de la liste des fichiers
|
||||||
Main.selector.Format_filter=FORMAT_ALL_IMAGES;
|
Main.selector.Format_filter=FORMAT_ALL_IMAGES;
|
||||||
|
|
||||||
Main.current_layer=0;
|
Main.current_layer=0;
|
||||||
Main.layers_visible=0xFFFFFFFF;
|
Main.layers_visible=0xFFFFFFFF;
|
||||||
Main.layers_visible_backup=0xFFFFFFFF;
|
Main.layers_visible_backup=0xFFFFFFFF;
|
||||||
Spare.current_layer=0;
|
Spare.current_layer=0;
|
||||||
Spare.layers_visible=0xFFFFFFFF;
|
Spare.layers_visible=0xFFFFFFFF;
|
||||||
Spare.layers_visible_backup=0xFFFFFFFF;
|
Spare.layers_visible_backup=0xFFFFFFFF;
|
||||||
|
|
||||||
Spare.selector.Position=0;
|
Spare.selector.Position=0;
|
||||||
Spare.selector.Offset=0;
|
Spare.selector.Offset=0;
|
||||||
Spare.selector.Format_filter=FORMAT_ALL_IMAGES;
|
Spare.selector.Format_filter=FORMAT_ALL_IMAGES;
|
||||||
@ -622,12 +636,12 @@ int Init_program(int argc,char * argv[])
|
|||||||
Spare.magnifier_offset_X=0;
|
Spare.magnifier_offset_X=0;
|
||||||
Spare.magnifier_offset_Y=0;
|
Spare.magnifier_offset_Y=0;
|
||||||
Keyboard_click_allowed = 1;
|
Keyboard_click_allowed = 1;
|
||||||
|
|
||||||
Main.safety_backup_prefix = SAFETYBACKUP_PREFIX_A[0];
|
Main.safety_backup_prefix = SAFETYBACKUP_PREFIX_A[0];
|
||||||
Spare.safety_backup_prefix = SAFETYBACKUP_PREFIX_B[0];
|
Spare.safety_backup_prefix = SAFETYBACKUP_PREFIX_B[0];
|
||||||
Main.time_of_safety_backup = 0;
|
Main.time_of_safety_backup = 0;
|
||||||
Spare.time_of_safety_backup = 0;
|
Spare.time_of_safety_backup = 0;
|
||||||
|
|
||||||
|
|
||||||
#if defined(USE_SDL) || defined(USE_SDL2)
|
#if defined(USE_SDL) || defined(USE_SDL2)
|
||||||
// SDL
|
// SDL
|
||||||
@ -638,7 +652,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Joystick = SDL_JoystickOpen(0);
|
//Joystick = SDL_JoystickOpen(0);
|
||||||
#if defined(USE_SDL)
|
#if defined(USE_SDL)
|
||||||
SDL_EnableKeyRepeat(250, 32);
|
SDL_EnableKeyRepeat(250, 32);
|
||||||
@ -646,7 +660,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
SDL_WM_SetCaption("GrafX2","GrafX2");
|
SDL_WM_SetCaption("GrafX2","GrafX2");
|
||||||
#endif
|
#endif
|
||||||
Define_icon();
|
Define_icon();
|
||||||
|
|
||||||
// Texte
|
// Texte
|
||||||
Init_text();
|
Init_text();
|
||||||
|
|
||||||
@ -725,13 +739,13 @@ int Init_program(int argc,char * argv[])
|
|||||||
Init_brush_container();
|
Init_brush_container();
|
||||||
|
|
||||||
Windows_open=0;
|
Windows_open=0;
|
||||||
|
|
||||||
// Paintbrush
|
// Paintbrush
|
||||||
if (!(Paintbrush_sprite=(byte *)malloc(MAX_PAINTBRUSH_SIZE*MAX_PAINTBRUSH_SIZE))) Error(ERROR_MEMORY);
|
if (!(Paintbrush_sprite=(byte *)malloc(MAX_PAINTBRUSH_SIZE*MAX_PAINTBRUSH_SIZE))) Error(ERROR_MEMORY);
|
||||||
|
|
||||||
// Load preset paintbrushes (uses Paintbrush_ variables)
|
// Load preset paintbrushes (uses Paintbrush_ variables)
|
||||||
Init_paintbrushes();
|
Init_paintbrushes();
|
||||||
|
|
||||||
// Set a valid paintbrush afterwards
|
// Set a valid paintbrush afterwards
|
||||||
*Paintbrush_sprite=1;
|
*Paintbrush_sprite=1;
|
||||||
Paintbrush_width=1;
|
Paintbrush_width=1;
|
||||||
@ -739,7 +753,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
Paintbrush_offset_X=0;
|
Paintbrush_offset_X=0;
|
||||||
Paintbrush_offset_Y=0;
|
Paintbrush_offset_Y=0;
|
||||||
Paintbrush_shape=PAINTBRUSH_SHAPE_ROUND;
|
Paintbrush_shape=PAINTBRUSH_SHAPE_ROUND;
|
||||||
|
|
||||||
#if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__)
|
#if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__)
|
||||||
// Prefer cycling active by default
|
// Prefer cycling active by default
|
||||||
Cycling_mode=1;
|
Cycling_mode=1;
|
||||||
@ -764,7 +778,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
temp=Load_INI(&Config);
|
temp=Load_INI(&Config);
|
||||||
if (temp)
|
if (temp)
|
||||||
Error(temp);
|
Error(temp);
|
||||||
|
|
||||||
if(!Config.Allow_multi_shortcuts)
|
if(!Config.Allow_multi_shortcuts)
|
||||||
{
|
{
|
||||||
Remove_duplicate_shortcuts();
|
Remove_duplicate_shortcuts();
|
||||||
@ -794,11 +808,11 @@ int Init_program(int argc,char * argv[])
|
|||||||
// Gfx->Default_palette[MC_Dark] =Config.Fav_menu_colors[1];
|
// Gfx->Default_palette[MC_Dark] =Config.Fav_menu_colors[1];
|
||||||
// Gfx->Default_palette[MC_Light]=Config.Fav_menu_colors[2];
|
// Gfx->Default_palette[MC_Light]=Config.Fav_menu_colors[2];
|
||||||
// Gfx->Default_palette[MC_White]=Config.Fav_menu_colors[3];
|
// Gfx->Default_palette[MC_White]=Config.Fav_menu_colors[3];
|
||||||
|
|
||||||
// Even when using the skin's palette, if RGB range is small
|
// Even when using the skin's palette, if RGB range is small
|
||||||
// the colors will be unusable.
|
// the colors will be unusable.
|
||||||
Compute_optimal_menu_colors(Gfx->Default_palette);
|
Compute_optimal_menu_colors(Gfx->Default_palette);
|
||||||
|
|
||||||
// Infos sur les trames (Sieve)
|
// Infos sur les trames (Sieve)
|
||||||
Sieve_mode=0;
|
Sieve_mode=0;
|
||||||
Copy_preset_sieve(0);
|
Copy_preset_sieve(0);
|
||||||
@ -852,20 +866,20 @@ int Init_program(int argc,char * argv[])
|
|||||||
// Open a console for debugging...
|
// Open a console for debugging...
|
||||||
//ActivateConsole();
|
//ActivateConsole();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Main.image_width=Screen_width/Pixel_width;
|
Main.image_width=Screen_width/Pixel_width;
|
||||||
Main.image_height=Screen_height/Pixel_height;
|
Main.image_height=Screen_height/Pixel_height;
|
||||||
Spare.image_width=Screen_width/Pixel_width;
|
Spare.image_width=Screen_width/Pixel_width;
|
||||||
Spare.image_height=Screen_height/Pixel_height;
|
Spare.image_height=Screen_height/Pixel_height;
|
||||||
|
|
||||||
starting_image_mode = Config.Default_mode_layers ?
|
starting_image_mode = Config.Default_mode_layers ?
|
||||||
IMAGE_MODE_LAYERED : IMAGE_MODE_ANIMATION;
|
IMAGE_MODE_LAYERED : IMAGE_MODE_ANIMATION;
|
||||||
// Allocation de mémoire pour les différents écrans virtuels (et brosse)
|
// Allocation de mémoire pour les différents écrans virtuels (et brosse)
|
||||||
if (Init_all_backup_lists(starting_image_mode , Screen_width, Screen_height)==0)
|
if (Init_all_backup_lists(starting_image_mode , Screen_width, Screen_height)==0)
|
||||||
Error(ERROR_MEMORY);
|
Error(ERROR_MEMORY);
|
||||||
// Update toolbars' visibility, now that the current image has a mode
|
// Update toolbars' visibility, now that the current image has a mode
|
||||||
Check_menu_mode();
|
Check_menu_mode();
|
||||||
|
|
||||||
// Nettoyage de l'écran virtuel (les autres recevront celui-ci par copie)
|
// Nettoyage de l'écran virtuel (les autres recevront celui-ci par copie)
|
||||||
memset(Main_screen,0,Main.image_width*Main.image_height);
|
memset(Main_screen,0,Main.image_width*Main.image_height);
|
||||||
|
|
||||||
@ -930,13 +944,13 @@ int Init_program(int argc,char * argv[])
|
|||||||
{
|
{
|
||||||
strcpy(Main.selector.Directory, main_directory);
|
strcpy(Main.selector.Directory, main_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test de recuperation de fichiers sauvés
|
// Test de recuperation de fichiers sauvés
|
||||||
switch (Check_recovery())
|
switch (Check_recovery())
|
||||||
{
|
{
|
||||||
T_IO_Context context;
|
T_IO_Context context;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Some files were loaded from last crash-exit.
|
// Some files were loaded from last crash-exit.
|
||||||
// Do not load files from command-line, nor show splash screen.
|
// Do not load files from command-line, nor show splash screen.
|
||||||
Compute_optimal_menu_colors(Main.palette);
|
Compute_optimal_menu_colors(Main.palette);
|
||||||
@ -955,9 +969,9 @@ int Init_program(int argc,char * argv[])
|
|||||||
"Some backups can be present in\n"
|
"Some backups can be present in\n"
|
||||||
"the spare page too.\n");
|
"the spare page too.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case -1: // Unable to write lock file
|
case -1: // Unable to write lock file
|
||||||
Verbose_message("Warning",
|
Verbose_message("Warning",
|
||||||
"Safety backups (every minute) are\n"
|
"Safety backups (every minute) are\n"
|
||||||
"disabled because Grafx2 is running\n"
|
"disabled because Grafx2 is running\n"
|
||||||
"from a read-only device, or other\n"
|
"from a read-only device, or other\n"
|
||||||
@ -965,14 +979,14 @@ int Init_program(int argc,char * argv[])
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
|
|
||||||
switch (file_in_command_line)
|
switch (file_in_command_line)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (Config.Opening_message)
|
if (Config.Opening_message)
|
||||||
Button_Message_initial();
|
Button_Message_initial();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
// Load this file
|
// Load this file
|
||||||
Init_context_layered_image(&context, spare_filename, spare_directory);
|
Init_context_layered_image(&context, spare_filename, spare_directory);
|
||||||
@ -980,7 +994,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
Destroy_context(&context);
|
Destroy_context(&context);
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
End_of_modification();
|
End_of_modification();
|
||||||
|
|
||||||
Button_Page(BUTTON_PAGE);
|
Button_Page(BUTTON_PAGE);
|
||||||
// no break ! proceed with the other file now
|
// no break ! proceed with the other file now
|
||||||
case 1:
|
case 1:
|
||||||
@ -1011,7 +1025,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
// If only one image was loaded, assume the spare has same image type
|
// If only one image was loaded, assume the spare has same image type
|
||||||
if (file_in_command_line==1)
|
if (file_in_command_line==1)
|
||||||
Spare.backups->Pages->Image_mode = Main.backups->Pages->Image_mode;
|
Spare.backups->Pages->Image_mode = Main.backups->Pages->Image_mode;
|
||||||
|
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
Compute_optimal_menu_colors(Main.palette);
|
Compute_optimal_menu_colors(Main.palette);
|
||||||
Back_color=Main.backups->Pages->Background_transparent ?
|
Back_color=Main.backups->Pages->Background_transparent ?
|
||||||
@ -1019,14 +1033,14 @@ int Init_program(int argc,char * argv[])
|
|||||||
Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y);
|
Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y);
|
||||||
Fore_color=Main.palette[Back_color].R+Main.palette[Back_color].G+Main.palette[Back_color].B < 3*127 ?
|
Fore_color=Main.palette[Back_color].R+Main.palette[Back_color].G+Main.palette[Back_color].B < 3*127 ?
|
||||||
Best_color_range(255,255,255,Config.Palette_cells_X*Config.Palette_cells_Y) :
|
Best_color_range(255,255,255,Config.Palette_cells_X*Config.Palette_cells_Y) :
|
||||||
Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y);
|
Best_color_range(0,0,0,Config.Palette_cells_X*Config.Palette_cells_Y);
|
||||||
Check_menu_mode();
|
Check_menu_mode();
|
||||||
Display_all_screen();
|
Display_all_screen();
|
||||||
Display_menu();
|
Display_menu();
|
||||||
Display_cursor();
|
Display_cursor();
|
||||||
Resolution_in_command_line = 0;
|
Resolution_in_command_line = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1053,7 +1067,7 @@ void Program_shutdown(void)
|
|||||||
{
|
{
|
||||||
RECT r;
|
RECT r;
|
||||||
static SDL_SysWMinfo pInfo;
|
static SDL_SysWMinfo pInfo;
|
||||||
|
|
||||||
SDL_GetWMInfo(&pInfo);
|
SDL_GetWMInfo(&pInfo);
|
||||||
GetWindowRect(pInfo.window, &r);
|
GetWindowRect(pInfo.window, &r);
|
||||||
|
|
||||||
@ -1151,12 +1165,12 @@ void Program_shutdown(void)
|
|||||||
#if defined(USE_SDL) || defined(USE_SDL2)
|
#if defined(USE_SDL) || defined(USE_SDL2)
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__)
|
#if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__)
|
||||||
chdir("/usr/gp2x");
|
chdir("/usr/gp2x");
|
||||||
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
|
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1169,28 +1183,91 @@ int main(int argc,char * argv[])
|
|||||||
{
|
{
|
||||||
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2)
|
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2)
|
||||||
TCHAR ModuleFileName[MAX_PATH];
|
TCHAR ModuleFileName[MAX_PATH];
|
||||||
TCHAR ModuleShortFileName[MAX_PATH];
|
TCHAR TmpArg[MAX_PATH];
|
||||||
int i;
|
TCHAR ShortFileName[MAX_PATH];
|
||||||
|
int i, j, k;
|
||||||
|
int inquote = 0;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
char arg_buffer[4096];
|
char arg_buffer[4096];
|
||||||
char * argv[16] = {NULL};
|
char * argv[64] = {NULL};
|
||||||
|
|
||||||
Init_Win32(hInstance, hPrevInstance);
|
Init_Win32(hInstance, hPrevInstance);
|
||||||
GetModuleFileName(NULL, ModuleFileName, MAX_PATH);
|
if (GetModuleFileName(NULL, ModuleFileName, MAX_PATH) == 0)
|
||||||
GetShortPathName(ModuleFileName, ModuleShortFileName, MAX_PATH);
|
{
|
||||||
argv[argc++] = arg_buffer;
|
MessageBoxA(NULL, "Error initializing program", NULL, MB_OK | MB_ICONERROR);
|
||||||
for (i = 0; i < (int)sizeof(arg_buffer); i++) {
|
return 1;
|
||||||
arg_buffer[i] = (char)ModuleShortFileName[i];
|
|
||||||
if (arg_buffer[i] == 0) break;
|
|
||||||
}
|
}
|
||||||
// TODO : parse command line
|
GetShortPathName(ModuleFileName, ShortFileName, MAX_PATH);
|
||||||
|
argv[argc++] = arg_buffer;
|
||||||
|
for (i = 0; i < (int)sizeof(arg_buffer); )
|
||||||
|
{
|
||||||
|
arg_buffer[i] = (char)ShortFileName[i];
|
||||||
|
if (arg_buffer[i++] == 0) break;
|
||||||
|
}
|
||||||
|
k = 0;
|
||||||
|
for (j = 0; pCmdLine[j] != 0 && k < MAX_PATH - 1; j++)
|
||||||
|
{
|
||||||
|
if (inquote)
|
||||||
|
{
|
||||||
|
if (pCmdLine[j] == '"')
|
||||||
|
{
|
||||||
|
inquote = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pCmdLine[j] == '"')
|
||||||
|
{
|
||||||
|
inquote = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (pCmdLine[j] == ' ' || pCmdLine[j] == '\t')
|
||||||
|
{ // next argument
|
||||||
|
TmpArg[k++] = '\0';
|
||||||
|
argv[argc++] = arg_buffer + i;
|
||||||
|
if (GetShortPathName(TmpArg, ShortFileName, MAX_PATH) > 0)
|
||||||
|
{
|
||||||
|
for (k = 0; ShortFileName[k] != 0; k++)
|
||||||
|
arg_buffer[i++] = ShortFileName[k];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (k = 0; TmpArg[k] != 0; k++)
|
||||||
|
arg_buffer[i++] = TmpArg[k];
|
||||||
|
}
|
||||||
|
arg_buffer[i++] = 0;
|
||||||
|
k = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TmpArg[k++] = pCmdLine[j];
|
||||||
|
}
|
||||||
|
TmpArg[k] = '\0';
|
||||||
|
if (k > 0)
|
||||||
|
{
|
||||||
|
argv[argc++] = arg_buffer + i;
|
||||||
|
if (GetShortPathName(TmpArg, ShortFileName, MAX_PATH) > 0)
|
||||||
|
{
|
||||||
|
for (k = 0; ShortFileName[k] != 0; k++)
|
||||||
|
arg_buffer[i++] = ShortFileName[k];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (k = 0; TmpArg[k] != 0; k++)
|
||||||
|
arg_buffer[i++] = TmpArg[k];
|
||||||
|
}
|
||||||
|
arg_buffer[i++] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO : nCmdShow indicates if the window must be maximized, etc.
|
||||||
#endif
|
#endif
|
||||||
if(!Init_program(argc,argv))
|
if(!Init_program(argc,argv))
|
||||||
{
|
{
|
||||||
Program_shutdown();
|
Program_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Main_handler();
|
Main_handler();
|
||||||
|
|
||||||
Program_shutdown();
|
Program_shutdown();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user