Implement "save palette" button

* Actually a shortcut to "save picture" with preset PAL format and different window title.


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@2110 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2015-03-04 10:08:34 +00:00
parent d9f2cd2d40
commit fa80a10093
6 changed files with 49 additions and 15 deletions

View File

@ -3433,9 +3433,7 @@ void Backup_existing_file(void)
} }
void Save_picture(byte image) void Save_picture(enum CONTEXT_TYPE type)
// image=1 => On charge/sauve une image
// image=0 => On charge/sauve une brosse
{ {
byte confirm; byte confirm;
byte old_cursor_shape; byte old_cursor_shape;
@ -3443,22 +3441,44 @@ void Save_picture(byte image)
static char filename [MAX_PATH_CHARACTERS]; static char filename [MAX_PATH_CHARACTERS];
static char directory[MAX_PATH_CHARACTERS]; static char directory[MAX_PATH_CHARACTERS];
if (image) if (type == CONTEXT_MAIN_IMAGE)
{ {
strcpy(filename, Main_backups->Pages->Filename); strcpy(filename, Main_backups->Pages->Filename);
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;
} }
else else if (type == CONTEXT_BRUSH)
{ {
strcpy(filename, Brush_filename); strcpy(filename, Brush_filename);
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;
} }
else if (type == CONTEXT_PALETTE)
{
char* dotpos;
strcpy(filename, Main_backups->Pages->Filename);
confirm=Button_Load_or_Save(image?&Main_selector:&Brush_selector,0, &save_context); // Replace extension with PAL
dotpos = strrchr(filename, '.');
if (dotpos == NULL)
dotpos = filename + strlen(filename);
strcpy(dotpos, ".pal");
printf("FILEN %s\n", filename);
strcpy(directory, Main_backups->Pages->File_directory);
Init_context_layered_image(&save_context, filename, directory);
save_context.Type = CONTEXT_PALETTE;
// Set format to PAL
save_context.Format = FORMAT_PAL;
}
else
return;
confirm=Button_Load_or_Save((type==CONTEXT_MAIN_IMAGE)?&Main_selector:&Brush_selector,0, &save_context);
if (confirm && File_exists(save_context.File_name)) if (confirm && File_exists(save_context.File_name))
{ {
@ -3486,14 +3506,14 @@ void Save_picture(byte image)
Save_image(&save_context); Save_image(&save_context);
format=Get_fileformat(save_context.Format); format=Get_fileformat(save_context.Format);
if (!File_error && image && !format->Palette_only && (Main_backups->Pages->Nb_layers==1 || format->Supports_layers)) if (!File_error && type == CONTEXT_MAIN_IMAGE && !format->Palette_only && (Main_backups->Pages->Nb_layers==1 || format->Supports_layers))
{ {
Main_image_is_modified=0; Main_image_is_modified=0;
Main_fileformat=save_context.Format; Main_fileformat=save_context.Format;
strcpy(Main_backups->Pages->Filename, save_context.File_name); strcpy(Main_backups->Pages->Filename, save_context.File_name);
strcpy(Main_backups->Pages->File_directory, save_context.File_directory); strcpy(Main_backups->Pages->File_directory, save_context.File_directory);
} }
if (!image) if (type == CONTEXT_BRUSH)
{ {
Brush_fileformat=save_context.Format; Brush_fileformat=save_context.Format;
strcpy(Brush_filename, save_context.File_name); strcpy(Brush_filename, save_context.File_name);
@ -3512,7 +3532,7 @@ void Save_picture(byte image)
void Button_Save(void) void Button_Save(void)
{ {
Save_picture(1); Save_picture(CONTEXT_MAIN_IMAGE);
} }
/// Save main image over existing file (no fileselector) /// Save main image over existing file (no fileselector)
@ -4037,7 +4057,7 @@ void Button_Brush_FX(void)
break; break;
case 19 : // Save case 19 : // Save
Display_cursor(); Display_cursor();
Save_picture(0); Save_picture(CONTEXT_BRUSH);
Hide_cursor(); Hide_cursor();
break; break;
} }

View File

@ -28,6 +28,7 @@
#define __BOUTONS_H_ #define __BOUTONS_H_
#include "struct.h" #include "struct.h"
#include "loadsave.h"
void Stencil_update_color(byte color); void Stencil_update_color(byte color);
void Stencil_tag_color(byte color, byte tag_color); void Stencil_tag_color(byte color, byte tag_color);
@ -654,7 +655,7 @@ void Load_picture(byte image);
/*! /*!
Save picture to file. Save picture to file.
*/ */
void Save_picture(byte image); void Save_picture(enum CONTEXT_TYPE type);
/*! /*!

View File

@ -1027,7 +1027,7 @@ void Main_handler(void)
action++; action++;
break; break;
case SPECIAL_SAVE_BRUSH : case SPECIAL_SAVE_BRUSH :
Save_picture(0); Save_picture(CONTEXT_BRUSH);
action++; action++;
break; break;
case SPECIAL_ZOOM_IN : // Zoom in case SPECIAL_ZOOM_IN : // Zoom in

View File

@ -41,6 +41,7 @@
#include <dirent.h> #include <dirent.h>
#endif #endif
#include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
@ -1397,12 +1398,16 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
{ {
if (context->Type == CONTEXT_MAIN_IMAGE) if (context->Type == CONTEXT_MAIN_IMAGE)
Open_window(310,200,"Save picture"); Open_window(310,200,"Save picture");
else else if (context->Type == CONTEXT_BRUSH)
Open_window(310,200,"Save brush"); Open_window(310,200,"Save brush");
else if (context->Type == CONTEXT_PALETTE)
Open_window(310,200,"Save palette");
else
assert(false);
Window_set_normal_button(198,180,51,14,"Save",0,1,SDLK_RETURN); // 1 Window_set_normal_button(198,180,51,14,"Save",0,1,SDLK_RETURN); // 1
if (Selector->Format_filter<=FORMAT_ALL_FILES) // Correction du *.* if (Selector->Format_filter<=FORMAT_ALL_FILES) // Correction du *.*
{ {
Selector->Format_filter=Main_fileformat; Selector->Format_filter=context->Format;
Selector->Position=0; Selector->Position=0;
Selector->Offset=0; Selector->Offset=0;
} }

View File

@ -35,6 +35,7 @@ enum CONTEXT_TYPE {
CONTEXT_BRUSH, CONTEXT_BRUSH,
CONTEXT_PREVIEW, CONTEXT_PREVIEW,
CONTEXT_SURFACE, CONTEXT_SURFACE,
CONTEXT_PALETTE
}; };
/// Data for a cycling color series. Heavily cloned from T_Gradient_array. /// Data for a cycling color series. Heavily cloned from T_Gradient_array.

View File

@ -2576,6 +2576,13 @@ void Button_Palette(void)
Wait_end_of_click(); Wait_end_of_click();
break; break;
} }
case 26: // Load palette (TODO)
break;
case 27: // Save palette
Save_picture(CONTEXT_PALETTE);
break;
} }