Update File selector to load/save palettes
Also "constify" the format array
This commit is contained in:
parent
48ae5bf0d8
commit
4ffa389a90
@ -1174,6 +1174,8 @@ void Button_Settings(void)
|
|||||||
Spare.selector.Offset=0;
|
Spare.selector.Offset=0;
|
||||||
Brush_selector.Position=0;
|
Brush_selector.Position=0;
|
||||||
Brush_selector.Offset=0;
|
Brush_selector.Offset=0;
|
||||||
|
Palette_selector.Position=0;
|
||||||
|
Palette_selector.Offset=0;
|
||||||
}
|
}
|
||||||
if(Config.Allow_multi_shortcuts && !selected_config.Allow_multi_shortcuts)
|
if(Config.Allow_multi_shortcuts && !selected_config.Allow_multi_shortcuts)
|
||||||
{
|
{
|
||||||
@ -3135,7 +3137,7 @@ void Load_picture(enum CONTEXT_TYPE type)
|
|||||||
Init_context_layered_image(&context, filename, directory);
|
Init_context_layered_image(&context, filename, directory);
|
||||||
context.Type = CONTEXT_PALETTE;
|
context.Type = CONTEXT_PALETTE;
|
||||||
context.Format = FORMAT_PAL;
|
context.Format = FORMAT_PAL;
|
||||||
selector = &Main.selector;
|
selector = &Palette_selector;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return; // DO NOTHING
|
return; // DO NOTHING
|
||||||
@ -3418,6 +3420,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
|||||||
T_IO_Context save_context;
|
T_IO_Context save_context;
|
||||||
static char filename [MAX_PATH_CHARACTERS];
|
static char filename [MAX_PATH_CHARACTERS];
|
||||||
static char directory[MAX_PATH_CHARACTERS];
|
static char directory[MAX_PATH_CHARACTERS];
|
||||||
|
T_Selector_settings * selector;
|
||||||
|
|
||||||
if (type == CONTEXT_MAIN_IMAGE)
|
if (type == CONTEXT_MAIN_IMAGE)
|
||||||
{
|
{
|
||||||
@ -3425,6 +3428,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
|||||||
strcpy(directory, Main.backups->Pages->File_directory);
|
strcpy(directory, Main.backups->Pages->File_directory);
|
||||||
Init_context_layered_image(&save_context, filename, directory);
|
Init_context_layered_image(&save_context, filename, directory);
|
||||||
save_context.Format = Main.fileformat;
|
save_context.Format = Main.fileformat;
|
||||||
|
selector = &Main.selector;
|
||||||
}
|
}
|
||||||
else if (type == CONTEXT_BRUSH)
|
else if (type == CONTEXT_BRUSH)
|
||||||
{
|
{
|
||||||
@ -3432,6 +3436,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
|||||||
strcpy(directory, Brush_file_directory);
|
strcpy(directory, Brush_file_directory);
|
||||||
Init_context_brush(&save_context, filename, directory);
|
Init_context_brush(&save_context, filename, directory);
|
||||||
save_context.Format = Brush_fileformat;
|
save_context.Format = Brush_fileformat;
|
||||||
|
selector = &Brush_selector;
|
||||||
}
|
}
|
||||||
else if (type == CONTEXT_PALETTE)
|
else if (type == CONTEXT_PALETTE)
|
||||||
{
|
{
|
||||||
@ -3450,11 +3455,12 @@ void Save_picture(enum CONTEXT_TYPE type)
|
|||||||
|
|
||||||
// Set format to PAL
|
// Set format to PAL
|
||||||
save_context.Format = FORMAT_PAL;
|
save_context.Format = FORMAT_PAL;
|
||||||
|
selector = &Palette_selector;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
confirm=Button_Load_or_Save((type==CONTEXT_MAIN_IMAGE)?&Main.selector:&Brush_selector,0, &save_context);
|
confirm=Button_Load_or_Save(selector, 0, &save_context);
|
||||||
|
|
||||||
if (confirm && File_exists(save_context.File_name))
|
if (confirm && File_exists(save_context.File_name))
|
||||||
{
|
{
|
||||||
@ -3472,7 +3478,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
|||||||
|
|
||||||
if (confirm)
|
if (confirm)
|
||||||
{
|
{
|
||||||
T_Format * format;
|
const T_Format * format;
|
||||||
|
|
||||||
old_cursor_shape=Cursor_shape;
|
old_cursor_shape=Cursor_shape;
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
|
|||||||
@ -1495,8 +1495,15 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
|
|
||||||
for (format=0; format < Nb_known_formats(); format++)
|
for (format=0; format < Nb_known_formats(); format++)
|
||||||
{
|
{
|
||||||
if (((context->Type == CONTEXT_PALETTE) == File_formats[format].Palette_only) &&
|
if (File_formats[format].Identifier > FORMAT_ALL_FILES)
|
||||||
((load && (File_formats[format].Load || File_formats[format].Identifier <= FORMAT_ALL_FILES)) || (!load && File_formats[format].Save)))
|
{
|
||||||
|
if (load && !File_formats[format].Load) //filter out formats without Load function
|
||||||
|
continue;
|
||||||
|
if (!load && !File_formats[format].Save) // filter out formats without Save function
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!load && ((context->Type == CONTEXT_PALETTE) != File_formats[format].Palette_only))
|
||||||
|
continue; // Only Palette only format when SAVING palette and not Palette only when saving image
|
||||||
Window_dropdown_add_item(formats_dropdown,File_formats[format].Identifier,File_formats[format].Label);
|
Window_dropdown_add_item(formats_dropdown,File_formats[format].Identifier,File_formats[format].Label);
|
||||||
}
|
}
|
||||||
Print_in_window(70,18,"Format",MC_Dark,MC_Light);
|
Print_in_window(70,18,"Format",MC_Dark,MC_Light);
|
||||||
|
|||||||
@ -303,6 +303,11 @@ GFX2_GLOBAL T_Document Spare;
|
|||||||
/// Backup of the current screen, used during drawing when FX feedback is OFF.
|
/// Backup of the current screen, used during drawing when FX feedback is OFF.
|
||||||
GFX2_GLOBAL byte * Screen_backup;
|
GFX2_GLOBAL byte * Screen_backup;
|
||||||
|
|
||||||
|
// -- Palette load/Save selector
|
||||||
|
|
||||||
|
/// Fileselector settings
|
||||||
|
GFX2_GLOBAL T_Selector_settings Palette_selector;
|
||||||
|
|
||||||
// -- Brush data
|
// -- Brush data
|
||||||
|
|
||||||
/// Pixel data of the current brush (remapped).
|
/// Pixel data of the current brush (remapped).
|
||||||
|
|||||||
@ -162,9 +162,9 @@ void Save_PNG(T_IO_Context *);
|
|||||||
void Load_SDL_Image(T_IO_Context *);
|
void Load_SDL_Image(T_IO_Context *);
|
||||||
|
|
||||||
// ENUM Name TestFunc LoadFunc SaveFunc PalOnly Comment Layers Ext Exts
|
// ENUM Name TestFunc LoadFunc SaveFunc PalOnly Comment Layers Ext Exts
|
||||||
T_Format File_formats[] = {
|
const T_Format File_formats[] = {
|
||||||
{FORMAT_ALL_IMAGES, "(all)", NULL, NULL, NULL, 0, 0, 0, "", "gif;png;bmp;2bp;pcx;pkm;iff;lbm;ilbm;img;sci;scq;scf;scn;sco;pi1;pc1;cel;neo;c64;koa;koala;fli;bml;cdu;prg;tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico;ic2;cur;cm5;pph"},
|
{FORMAT_ALL_IMAGES, "(all)", NULL, NULL, NULL, 0, 0, 0, "", "gif;png;bmp;2bp;pcx;pkm;iff;lbm;ilbm;img;sci;scq;scf;scn;sco;pi1;pc1;cel;neo;c64;koa;koala;fli;bml;cdu;prg;tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico;ic2;cur;cm5;pph"},
|
||||||
{FORMAT_ALL_PALETTES, "(all)", NULL, NULL, NULL, 1, 0, 0, "", "kcf;pal;gpl"},
|
{FORMAT_ALL_PALETTES, "(pal)", NULL, NULL, NULL, 1, 0, 0, "", "kcf;pal;gpl"},
|
||||||
{FORMAT_ALL_FILES, "(*.*)", NULL, NULL, NULL, 0, 0, 0, "", "*"},
|
{FORMAT_ALL_FILES, "(*.*)", NULL, NULL, NULL, 0, 0, 0, "", "*"},
|
||||||
{FORMAT_GIF, " gif", Test_GIF, Load_GIF, Save_GIF, 0, 1, 1, "gif", "gif"},
|
{FORMAT_GIF, " gif", Test_GIF, Load_GIF, Save_GIF, 0, 1, 1, "gif", "gif"},
|
||||||
#ifndef __no_pnglib__
|
#ifndef __no_pnglib__
|
||||||
@ -602,7 +602,7 @@ void Set_file_error(int value)
|
|||||||
void Load_image(T_IO_Context *context)
|
void Load_image(T_IO_Context *context)
|
||||||
{
|
{
|
||||||
unsigned int index; // index de balayage des formats
|
unsigned int index; // index de balayage des formats
|
||||||
T_Format *format = &(File_formats[FORMAT_ALL_FILES+1]); // Format du fichier à charger
|
const T_Format *format = &(File_formats[FORMAT_ALL_FILES+1]); // Format du fichier à charger
|
||||||
int i;
|
int i;
|
||||||
byte old_cursor_shape;
|
byte old_cursor_shape;
|
||||||
|
|
||||||
@ -996,7 +996,7 @@ void Load_image(T_IO_Context *context)
|
|||||||
// -- Sauver n'importe quel type connu de fichier d'image (ou palette) ------
|
// -- Sauver n'importe quel type connu de fichier d'image (ou palette) ------
|
||||||
void Save_image(T_IO_Context *context)
|
void Save_image(T_IO_Context *context)
|
||||||
{
|
{
|
||||||
T_Format *format;
|
const T_Format *format;
|
||||||
|
|
||||||
// On place par défaut File_error à vrai au cas où on ne sache pas
|
// On place par défaut File_error à vrai au cas où on ne sache pas
|
||||||
// sauver le format du fichier: (Est-ce vraiment utile??? Je ne crois pas!)
|
// sauver le format du fichier: (Est-ce vraiment utile??? Je ne crois pas!)
|
||||||
@ -1258,10 +1258,10 @@ void Image_emergency_backup()
|
|||||||
Emergency_backup(SAFETYBACKUP_PREFIX_B "999999" BACKUP_FILE_EXTENSION,Spare.visible_image.Image, Spare.image_width, Spare.image_height, &Spare.palette);
|
Emergency_backup(SAFETYBACKUP_PREFIX_B "999999" BACKUP_FILE_EXTENSION,Spare.visible_image.Image, Spare.image_width, Spare.image_height, &Spare.palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
T_Format * Get_fileformat(byte format)
|
const T_Format * Get_fileformat(byte format)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
T_Format * safe_default = File_formats;
|
const T_Format * safe_default = File_formats;
|
||||||
|
|
||||||
for (i=0; i < Nb_known_formats(); i++)
|
for (i=0; i < Nb_known_formats(); i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -173,7 +173,7 @@ typedef struct {
|
|||||||
} T_Format;
|
} T_Format;
|
||||||
|
|
||||||
/// Array of the known file formats
|
/// Array of the known file formats
|
||||||
extern T_Format File_formats[];
|
extern const T_Format File_formats[];
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Function which attempts to save backups of the images (main and spare),
|
/// Function which attempts to save backups of the images (main and spare),
|
||||||
@ -194,7 +194,7 @@ SDL_Surface * Load_surface(char *full_name, T_Gradient_array *gradients);
|
|||||||
extern enum PIXEL_RATIO Ratio_of_loaded_image;
|
extern enum PIXEL_RATIO Ratio_of_loaded_image;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
T_Format * Get_fileformat(byte format);
|
const T_Format * Get_fileformat(byte format);
|
||||||
|
|
||||||
// -- File formats
|
// -- File formats
|
||||||
|
|
||||||
|
|||||||
@ -517,6 +517,8 @@ int Init_program(int argc,char * argv[])
|
|||||||
strcpy(Brush_filename ,"NO_NAME.GIF");
|
strcpy(Brush_filename ,"NO_NAME.GIF");
|
||||||
Brush_fileformat =DEFAULT_FILEFORMAT;
|
Brush_fileformat =DEFAULT_FILEFORMAT;
|
||||||
|
|
||||||
|
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
|
||||||
@ -537,6 +539,10 @@ int Init_program(int argc,char * argv[])
|
|||||||
Brush_selector.Offset=0;
|
Brush_selector.Offset=0;
|
||||||
Brush_selector.Format_filter=FORMAT_ALL_IMAGES;
|
Brush_selector.Format_filter=FORMAT_ALL_IMAGES;
|
||||||
|
|
||||||
|
Palette_selector.Position=0;
|
||||||
|
Palette_selector.Offset=0;
|
||||||
|
Palette_selector.Format_filter=FORMAT_ALL_PALETTES;
|
||||||
|
|
||||||
// On initialise d'ot' trucs
|
// On initialise d'ot' trucs
|
||||||
Main.offset_X=0;
|
Main.offset_X=0;
|
||||||
Main.offset_Y=0;
|
Main.offset_Y=0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user