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;
|
||||
Brush_selector.Position=0;
|
||||
Brush_selector.Offset=0;
|
||||
Palette_selector.Position=0;
|
||||
Palette_selector.Offset=0;
|
||||
}
|
||||
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);
|
||||
context.Type = CONTEXT_PALETTE;
|
||||
context.Format = FORMAT_PAL;
|
||||
selector = &Main.selector;
|
||||
selector = &Palette_selector;
|
||||
break;
|
||||
default:
|
||||
return; // DO NOTHING
|
||||
@ -3418,6 +3420,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
||||
T_IO_Context save_context;
|
||||
static char filename [MAX_PATH_CHARACTERS];
|
||||
static char directory[MAX_PATH_CHARACTERS];
|
||||
T_Selector_settings * selector;
|
||||
|
||||
if (type == CONTEXT_MAIN_IMAGE)
|
||||
{
|
||||
@ -3425,6 +3428,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
||||
strcpy(directory, Main.backups->Pages->File_directory);
|
||||
Init_context_layered_image(&save_context, filename, directory);
|
||||
save_context.Format = Main.fileformat;
|
||||
selector = &Main.selector;
|
||||
}
|
||||
else if (type == CONTEXT_BRUSH)
|
||||
{
|
||||
@ -3432,6 +3436,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
||||
strcpy(directory, Brush_file_directory);
|
||||
Init_context_brush(&save_context, filename, directory);
|
||||
save_context.Format = Brush_fileformat;
|
||||
selector = &Brush_selector;
|
||||
}
|
||||
else if (type == CONTEXT_PALETTE)
|
||||
{
|
||||
@ -3450,11 +3455,12 @@ void Save_picture(enum CONTEXT_TYPE type)
|
||||
|
||||
// Set format to PAL
|
||||
save_context.Format = FORMAT_PAL;
|
||||
selector = &Palette_selector;
|
||||
}
|
||||
else
|
||||
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))
|
||||
{
|
||||
@ -3472,7 +3478,7 @@ void Save_picture(enum CONTEXT_TYPE type)
|
||||
|
||||
if (confirm)
|
||||
{
|
||||
T_Format * format;
|
||||
const T_Format * format;
|
||||
|
||||
old_cursor_shape=Cursor_shape;
|
||||
Hide_cursor();
|
||||
|
||||
@ -1495,9 +1495,16 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
|
||||
for (format=0; format < Nb_known_formats(); format++)
|
||||
{
|
||||
if (((context->Type == CONTEXT_PALETTE) == File_formats[format].Palette_only) &&
|
||||
((load && (File_formats[format].Load || File_formats[format].Identifier <= FORMAT_ALL_FILES)) || (!load && File_formats[format].Save)))
|
||||
Window_dropdown_add_item(formats_dropdown,File_formats[format].Identifier,File_formats[format].Label);
|
||||
if (File_formats[format].Identifier > FORMAT_ALL_FILES)
|
||||
{
|
||||
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);
|
||||
}
|
||||
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.
|
||||
GFX2_GLOBAL byte * Screen_backup;
|
||||
|
||||
// -- Palette load/Save selector
|
||||
|
||||
/// Fileselector settings
|
||||
GFX2_GLOBAL T_Selector_settings Palette_selector;
|
||||
|
||||
// -- Brush data
|
||||
|
||||
/// Pixel data of the current brush (remapped).
|
||||
|
||||
@ -162,9 +162,9 @@ void Save_PNG(T_IO_Context *);
|
||||
void Load_SDL_Image(T_IO_Context *);
|
||||
|
||||
// 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_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_GIF, " gif", Test_GIF, Load_GIF, Save_GIF, 0, 1, 1, "gif", "gif"},
|
||||
#ifndef __no_pnglib__
|
||||
@ -602,7 +602,7 @@ void Set_file_error(int value)
|
||||
void Load_image(T_IO_Context *context)
|
||||
{
|
||||
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;
|
||||
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) ------
|
||||
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
|
||||
// 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);
|
||||
}
|
||||
|
||||
T_Format * Get_fileformat(byte format)
|
||||
const T_Format * Get_fileformat(byte format)
|
||||
{
|
||||
unsigned int i;
|
||||
T_Format * safe_default = File_formats;
|
||||
const T_Format * safe_default = File_formats;
|
||||
|
||||
for (i=0; i < Nb_known_formats(); i++)
|
||||
{
|
||||
|
||||
@ -173,7 +173,7 @@ typedef struct {
|
||||
} T_Format;
|
||||
|
||||
/// 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),
|
||||
@ -194,7 +194,7 @@ SDL_Surface * Load_surface(char *full_name, T_Gradient_array *gradients);
|
||||
extern enum PIXEL_RATIO Ratio_of_loaded_image;
|
||||
*/
|
||||
|
||||
T_Format * Get_fileformat(byte format);
|
||||
const T_Format * Get_fileformat(byte format);
|
||||
|
||||
// -- File formats
|
||||
|
||||
|
||||
@ -517,6 +517,8 @@ int Init_program(int argc,char * argv[])
|
||||
strcpy(Brush_filename ,"NO_NAME.GIF");
|
||||
Brush_fileformat =DEFAULT_FILEFORMAT;
|
||||
|
||||
strcpy(Palette_selector.Directory,Main.selector.Directory);
|
||||
|
||||
// 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
|
||||
@ -537,6 +539,10 @@ int Init_program(int argc,char * argv[])
|
||||
Brush_selector.Offset=0;
|
||||
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
|
||||
Main.offset_X=0;
|
||||
Main.offset_Y=0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user