Fix issue 516: Some changes can't be undone on animations > 32 frames
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@2033 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
20ed591264
commit
e87f9140c7
@ -1705,7 +1705,7 @@ void Copy_some_colors(void)
|
|||||||
if (confirmation)
|
if (confirmation)
|
||||||
{
|
{
|
||||||
// Make a backup with the same pixel data as previous history steps
|
// Make a backup with the same pixel data as previous history steps
|
||||||
Backup_the_spare(0);
|
Backup_the_spare(LAYER_NONE);
|
||||||
for (index=0; index<256; index++)
|
for (index=0; index<256; index++)
|
||||||
{
|
{
|
||||||
if (mask_color_to_copy[index])
|
if (mask_color_to_copy[index])
|
||||||
@ -1749,7 +1749,7 @@ void Button_Copy_page(void)
|
|||||||
switch (clicked_button)
|
switch (clicked_button)
|
||||||
{
|
{
|
||||||
case 1: // Pixels+palette
|
case 1: // Pixels+palette
|
||||||
Backup_the_spare(-1);
|
// backup is done by the following function
|
||||||
Copy_image_only();
|
Copy_image_only();
|
||||||
// copie de la palette
|
// copie de la palette
|
||||||
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
||||||
@ -1762,7 +1762,7 @@ void Button_Copy_page(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: // Pixels only
|
case 2: // Pixels only
|
||||||
Backup_the_spare(-1);
|
// backup is done by the following function
|
||||||
Copy_image_only();
|
Copy_image_only();
|
||||||
// Equivalent of 'end_of_modifications' for spare.
|
// Equivalent of 'end_of_modifications' for spare.
|
||||||
Update_spare_buffers(Spare_image_width,Spare_image_height);
|
Update_spare_buffers(Spare_image_width,Spare_image_height);
|
||||||
@ -1773,7 +1773,7 @@ void Button_Copy_page(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: // Palette only
|
case 3: // Palette only
|
||||||
Backup_the_spare(0);
|
Backup_the_spare(LAYER_NONE);
|
||||||
// Copy palette
|
// Copy palette
|
||||||
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
||||||
// Equivalent of 'end_of_modifications' for spare.
|
// Equivalent of 'end_of_modifications' for spare.
|
||||||
@ -1788,7 +1788,7 @@ void Button_Copy_page(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 5: // Palette and remap
|
case 5: // Palette and remap
|
||||||
Backup_the_spare(-1);
|
Backup_the_spare(LAYER_ALL);
|
||||||
Remap_spare();
|
Remap_spare();
|
||||||
// Copy palette
|
// Copy palette
|
||||||
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
memcpy(Spare_palette,Main_palette,sizeof(T_Palette));
|
||||||
|
|||||||
@ -1808,7 +1808,7 @@ void Run_script(const char *script_subdirectory, const char *script_filename)
|
|||||||
// The backup also allows the script to read from it to make something
|
// The backup also allows the script to read from it to make something
|
||||||
// like a feedback off effect (convolution matrix comes to mind).
|
// like a feedback off effect (convolution matrix comes to mind).
|
||||||
Backup();
|
Backup();
|
||||||
Backup_the_spare(-1);
|
Backup_the_spare(LAYER_ALL);
|
||||||
|
|
||||||
Palette_has_changed=0;
|
Palette_has_changed=0;
|
||||||
Brush_was_altered=0;
|
Brush_was_altered=0;
|
||||||
|
|||||||
@ -719,7 +719,7 @@ void Get_colors_from_brush(void)
|
|||||||
//if (Confirmation_box("Modify current palette ?"))
|
//if (Confirmation_box("Modify current palette ?"))
|
||||||
|
|
||||||
// Backup with unchanged layers, only palette is modified
|
// Backup with unchanged layers, only palette is modified
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
|
|
||||||
// Init array of new colors
|
// Init array of new colors
|
||||||
for (color=0;color<=255;color++)
|
for (color=0;color<=255;color++)
|
||||||
|
|||||||
16
src/layers.c
16
src/layers.c
@ -107,7 +107,7 @@ void Button_Layer_add(void)
|
|||||||
if (Main_backups->Pages->Nb_layers < max[Main_backups->Pages->Image_mode])
|
if (Main_backups->Pages->Nb_layers < max[Main_backups->Pages->Image_mode])
|
||||||
{
|
{
|
||||||
// Backup with unchanged layers
|
// Backup with unchanged layers
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
if (!Add_layer(Main_backups,Main_current_layer+1))
|
if (!Add_layer(Main_backups,Main_current_layer+1))
|
||||||
{
|
{
|
||||||
if (Main_backups->Pages->Image_mode == IMAGE_MODE_ANIMATION)
|
if (Main_backups->Pages->Image_mode == IMAGE_MODE_ANIMATION)
|
||||||
@ -142,7 +142,7 @@ void Button_Layer_remove(void)
|
|||||||
if (Main_backups->Pages->Nb_layers > 1)
|
if (Main_backups->Pages->Nb_layers > 1)
|
||||||
{
|
{
|
||||||
// Backup with unchanged layers
|
// Backup with unchanged layers
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
if (!Delete_layer(Main_backups,Main_current_layer))
|
if (!Delete_layer(Main_backups,Main_current_layer))
|
||||||
{
|
{
|
||||||
Update_screen_targets();
|
Update_screen_targets();
|
||||||
@ -278,7 +278,7 @@ void Button_Layer_menu(void)
|
|||||||
if (Main_backups->Pages->Transparent_color != transparent_color ||
|
if (Main_backups->Pages->Transparent_color != transparent_color ||
|
||||||
Main_backups->Pages->Background_transparent != transparent_background)
|
Main_backups->Pages->Background_transparent != transparent_background)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_NONE);
|
||||||
Main_backups->Pages->Transparent_color = transparent_color;
|
Main_backups->Pages->Transparent_color = transparent_color;
|
||||||
Main_backups->Pages->Background_transparent = transparent_background;
|
Main_backups->Pages->Background_transparent = transparent_background;
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
@ -297,7 +297,7 @@ void Button_Layer_set_transparent(void)
|
|||||||
|
|
||||||
if (Main_backups->Pages->Transparent_color != Back_color)
|
if (Main_backups->Pages->Transparent_color != Back_color)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
Main_backups->Pages->Transparent_color = Back_color;
|
Main_backups->Pages->Transparent_color = Back_color;
|
||||||
|
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
@ -329,7 +329,7 @@ void Button_Layer_merge(void)
|
|||||||
if (Main_current_layer>0)
|
if (Main_current_layer>0)
|
||||||
{
|
{
|
||||||
// Backup layer below the current
|
// Backup layer below the current
|
||||||
Backup_layers(1<<(Main_current_layer-1));
|
Backup_layers(Main_current_layer-1);
|
||||||
|
|
||||||
Merge_layer();
|
Merge_layer();
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ void Button_Layer_up(void)
|
|||||||
dword layer_flags;
|
dword layer_flags;
|
||||||
|
|
||||||
// Backup with unchanged layers
|
// Backup with unchanged layers
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
|
|
||||||
// swap
|
// swap
|
||||||
tmp = Main_backups->Pages->Image[Main_current_layer];
|
tmp = Main_backups->Pages->Image[Main_current_layer];
|
||||||
@ -394,7 +394,7 @@ void Button_Layer_down(void)
|
|||||||
dword layer_flags;
|
dword layer_flags;
|
||||||
|
|
||||||
// Backup with unchanged layers
|
// Backup with unchanged layers
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
|
|
||||||
// swap
|
// swap
|
||||||
tmp = Main_backups->Pages->Image[Main_current_layer];
|
tmp = Main_backups->Pages->Image[Main_current_layer];
|
||||||
@ -513,7 +513,7 @@ void Button_Anim_time(void)
|
|||||||
if (clicked_button==5)
|
if (clicked_button==5)
|
||||||
{
|
{
|
||||||
// Accept changes
|
// Accept changes
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
switch(mode)
|
switch(mode)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|||||||
@ -758,7 +758,7 @@ void Load_image(T_IO_Context *context)
|
|||||||
if (format->Palette_only)
|
if (format->Palette_only)
|
||||||
{
|
{
|
||||||
// Make a backup step
|
// Make a backup step
|
||||||
Backup_layers(0);
|
Backup_layers(LAYER_NONE);
|
||||||
}
|
}
|
||||||
// Copy the loaded palette
|
// Copy the loaded palette
|
||||||
memcpy(Main_palette, context->Palette, sizeof(T_Palette));
|
memcpy(Main_palette, context->Palette, sizeof(T_Palette));
|
||||||
|
|||||||
@ -363,7 +363,7 @@ byte C64_FLI_enforcer(void)
|
|||||||
if (Main_backups->Pages->Nb_layers != 4)
|
if (Main_backups->Pages->Nb_layers != 4)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
Backup_layers(1<<3);
|
Backup_layers(3);
|
||||||
|
|
||||||
memset(bitmap,0,8000);
|
memset(bitmap,0,8000);
|
||||||
memset(background,0,200);
|
memset(background,0,200);
|
||||||
|
|||||||
@ -2784,7 +2784,7 @@ void Scroll_12_0(void)
|
|||||||
Backup();
|
Backup();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Backup_layers(-1); // Main_layers_visible
|
Backup_layers(LAYER_ALL); // Main_layers_visible
|
||||||
if (Main_backups->Pages->Image_mode != IMAGE_MODE_ANIMATION)
|
if (Main_backups->Pages->Image_mode != IMAGE_MODE_ANIMATION)
|
||||||
{
|
{
|
||||||
// Ensure the backup visible image is up-to-date
|
// Ensure the backup visible image is up-to-date
|
||||||
|
|||||||
33
src/pages.c
33
src/pages.c
@ -609,8 +609,9 @@ void Free_last_page_of_list(T_List_of_pages * list)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// layer_mask tells which layers have to be fresh copies instead of references
|
// layer tells which layers have to be fresh copies instead of references :
|
||||||
int Create_new_page(T_Page * new_page, T_List_of_pages * list, dword layer_mask)
|
// it's a layer number (>=0) or LAYER_NONE or LAYER_ALL
|
||||||
|
int Create_new_page(T_Page * new_page, T_List_of_pages * list, int layer)
|
||||||
{
|
{
|
||||||
|
|
||||||
// This function fills the "Image" field of a new Page,
|
// This function fills the "Image" field of a new Page,
|
||||||
@ -632,7 +633,7 @@ int Create_new_page(T_Page * new_page, T_List_of_pages * list, dword layer_mask)
|
|||||||
int i;
|
int i;
|
||||||
for (i=0; i<new_page->Nb_layers; i++)
|
for (i=0; i<new_page->Nb_layers; i++)
|
||||||
{
|
{
|
||||||
if ((1<<i) & layer_mask)
|
if (layer == LAYER_ALL || i == layer)
|
||||||
new_page->Image[i].Pixels=New_layer(new_page->Height*new_page->Width);
|
new_page->Image[i].Pixels=New_layer(new_page->Height*new_page->Width);
|
||||||
else
|
else
|
||||||
new_page->Image[i].Pixels=Dup_layer(list->Pages->Image[i].Pixels);
|
new_page->Image[i].Pixels=Dup_layer(list->Pages->Image[i].Pixels);
|
||||||
@ -879,7 +880,7 @@ int Backup_new_image(int layers,int width,int height)
|
|||||||
new_page->Height=height;
|
new_page->Height=height;
|
||||||
new_page->Transparent_color=0;
|
new_page->Transparent_color=0;
|
||||||
new_page->Gradients=Dup_gradient(NULL);
|
new_page->Gradients=Dup_gradient(NULL);
|
||||||
if (!Create_new_page(new_page,Main_backups,0xFFFFFFFF))
|
if (!Create_new_page(new_page,Main_backups,LAYER_ALL))
|
||||||
{
|
{
|
||||||
Error(0);
|
Error(0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -912,7 +913,7 @@ int Backup_with_new_dimensions(int width,int height)
|
|||||||
new_page->Width=width;
|
new_page->Width=width;
|
||||||
new_page->Height=height;
|
new_page->Height=height;
|
||||||
new_page->Transparent_color=0;
|
new_page->Transparent_color=0;
|
||||||
if (!Create_new_page(new_page,Main_backups,0xFFFFFFFF))
|
if (!Create_new_page(new_page,Main_backups,LAYER_ALL))
|
||||||
{
|
{
|
||||||
Error(0);
|
Error(0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1062,7 +1063,7 @@ int Backup_and_resize_the_spare(int width,int height)
|
|||||||
|
|
||||||
new_page->Width=width;
|
new_page->Width=width;
|
||||||
new_page->Height=height;
|
new_page->Height=height;
|
||||||
if (Create_new_page(new_page,Spare_backups,0xFFFFFFFF))
|
if (Create_new_page(new_page,Spare_backups,LAYER_ALL))
|
||||||
{
|
{
|
||||||
byte i;
|
byte i;
|
||||||
|
|
||||||
@ -1087,10 +1088,10 @@ void Backup(void)
|
|||||||
// Sauve la page courante comme première page de backup et crée une nouvelle page
|
// Sauve la page courante comme première page de backup et crée une nouvelle page
|
||||||
// pur continuer à dessiner. Utilisé par exemple pour le fill
|
// pur continuer à dessiner. Utilisé par exemple pour le fill
|
||||||
{
|
{
|
||||||
Backup_layers(1<<Main_current_layer);
|
Backup_layers(Main_current_layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Backup_layers(dword layer_mask)
|
void Backup_layers(int layer)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
T_Page *new_page;
|
T_Page *new_page;
|
||||||
@ -1115,19 +1116,22 @@ void Backup_layers(dword layer_mask)
|
|||||||
// Fill it with a copy of the latest history
|
// Fill it with a copy of the latest history
|
||||||
Copy_S_page(new_page,Main_backups->Pages);
|
Copy_S_page(new_page,Main_backups->Pages);
|
||||||
new_page->Gradients=Dup_gradient(Main_backups->Pages);
|
new_page->Gradients=Dup_gradient(Main_backups->Pages);
|
||||||
Create_new_page(new_page,Main_backups,layer_mask);
|
Create_new_page(new_page,Main_backups,layer);
|
||||||
Download_infos_page_main(new_page);
|
Download_infos_page_main(new_page);
|
||||||
|
|
||||||
Update_FX_feedback(Config.FX_Feedback);
|
Update_FX_feedback(Config.FX_Feedback);
|
||||||
|
|
||||||
// Copy the actual pixels from the backup to the latest page
|
// Copy the actual pixels from the backup to the latest page
|
||||||
|
if (layer != LAYER_NONE)
|
||||||
|
{
|
||||||
for (i=0; i<Main_backups->Pages->Nb_layers;i++)
|
for (i=0; i<Main_backups->Pages->Nb_layers;i++)
|
||||||
{
|
{
|
||||||
if ((1<<i) & layer_mask)
|
if (layer == LAYER_ALL || i == layer)
|
||||||
memcpy(Main_backups->Pages->Image[i].Pixels,
|
memcpy(Main_backups->Pages->Image[i].Pixels,
|
||||||
Main_backups->Pages->Next->Image[i].Pixels,
|
Main_backups->Pages->Next->Image[i].Pixels,
|
||||||
Main_image_width*Main_image_height);
|
Main_image_width*Main_image_height);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Light up the 'has unsaved changes' indicator
|
// Light up the 'has unsaved changes' indicator
|
||||||
Main_image_is_modified=1;
|
Main_image_is_modified=1;
|
||||||
|
|
||||||
@ -1136,7 +1140,7 @@ void Backup_layers(dword layer_mask)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void Backup_the_spare(dword layer_mask)
|
void Backup_the_spare(int layer)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
T_Page *new_page;
|
T_Page *new_page;
|
||||||
@ -1152,16 +1156,19 @@ void Backup_the_spare(dword layer_mask)
|
|||||||
// Fill it with a copy of the latest history
|
// Fill it with a copy of the latest history
|
||||||
Copy_S_page(new_page,Spare_backups->Pages);
|
Copy_S_page(new_page,Spare_backups->Pages);
|
||||||
new_page->Gradients=Dup_gradient(Spare_backups->Pages);
|
new_page->Gradients=Dup_gradient(Spare_backups->Pages);
|
||||||
Create_new_page(new_page,Spare_backups,layer_mask);
|
Create_new_page(new_page,Spare_backups,layer);
|
||||||
|
|
||||||
// Copy the actual pixels from the backup to the latest page
|
// Copy the actual pixels from the backup to the latest page
|
||||||
|
if (layer != LAYER_NONE)
|
||||||
|
{
|
||||||
for (i=0; i<Spare_backups->Pages->Nb_layers;i++)
|
for (i=0; i<Spare_backups->Pages->Nb_layers;i++)
|
||||||
{
|
{
|
||||||
if ((1<<i) & layer_mask)
|
if (layer == LAYER_ALL || i == layer)
|
||||||
memcpy(Spare_backups->Pages->Image[i].Pixels,
|
memcpy(Spare_backups->Pages->Image[i].Pixels,
|
||||||
Spare_backups->Pages->Next->Image[i].Pixels,
|
Spare_backups->Pages->Next->Image[i].Pixels,
|
||||||
Spare_image_width*Spare_image_height);
|
Spare_image_width*Spare_image_height);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Light up the 'has unsaved changes' indicator
|
// Light up the 'has unsaved changes' indicator
|
||||||
Spare_image_is_modified=1;
|
Spare_image_is_modified=1;
|
||||||
|
|
||||||
|
|||||||
@ -81,7 +81,7 @@ int Allocate_list_of_pages(T_List_of_pages * list);
|
|||||||
void Backward_in_list_of_pages(T_List_of_pages * list);
|
void Backward_in_list_of_pages(T_List_of_pages * list);
|
||||||
void Advance_in_list_of_pages(T_List_of_pages * list);
|
void Advance_in_list_of_pages(T_List_of_pages * list);
|
||||||
void Free_last_page_of_list(T_List_of_pages * list);
|
void Free_last_page_of_list(T_List_of_pages * list);
|
||||||
int Create_new_page(T_Page * new_page,T_List_of_pages * current_list, dword layer_mask);
|
int Create_new_page(T_Page * new_page,T_List_of_pages * current_list, int layer);
|
||||||
void Change_page_number_of_list(T_List_of_pages * list,int number);
|
void Change_page_number_of_list(T_List_of_pages * list,int number);
|
||||||
void Free_page_of_a_list(T_List_of_pages * list);
|
void Free_page_of_a_list(T_List_of_pages * list);
|
||||||
|
|
||||||
@ -91,6 +91,9 @@ void Free_page_of_a_list(T_List_of_pages * list);
|
|||||||
/// BACKUP HIGH-LEVEL FUNCTIONS
|
/// BACKUP HIGH-LEVEL FUNCTIONS
|
||||||
///
|
///
|
||||||
|
|
||||||
|
static const int LAYER_NONE = -1;
|
||||||
|
static const int LAYER_ALL = -2;
|
||||||
|
|
||||||
int Init_all_backup_lists(enum IMAGE_MODES image_mode,int width,int height);
|
int Init_all_backup_lists(enum IMAGE_MODES image_mode,int width,int height);
|
||||||
void Set_number_of_backups(int nb_backups);
|
void Set_number_of_backups(int nb_backups);
|
||||||
int Backup_new_image(int layers,int width,int height);
|
int Backup_new_image(int layers,int width,int height);
|
||||||
@ -101,12 +104,12 @@ int Backup_with_new_dimensions(int width,int height);
|
|||||||
/// pixels. This function is meant to be used from within Lua scripts.
|
/// pixels. This function is meant to be used from within Lua scripts.
|
||||||
int Backup_in_place(int width,int height);
|
int Backup_in_place(int width,int height);
|
||||||
/// Backup the spare image, the one you don't see.
|
/// Backup the spare image, the one you don't see.
|
||||||
void Backup_the_spare(dword layer_mask);
|
void Backup_the_spare(int layer);
|
||||||
int Backup_and_resize_the_spare(int width,int height);
|
int Backup_and_resize_the_spare(int width,int height);
|
||||||
/// Backup with a new copy for the working layer, and references for all others.
|
/// Backup with a new copy for the working layer, and references for all others.
|
||||||
void Backup(void);
|
void Backup(void);
|
||||||
/// Backup with a new copy of some layers (the others are references).
|
/// Backup with a new copy of some layers (the others are references).
|
||||||
void Backup_layers(dword layer_mask);
|
void Backup_layers(int layer);
|
||||||
void Undo(void);
|
void Undo(void);
|
||||||
void Redo(void);
|
void Redo(void);
|
||||||
void Free_current_page(void); // 'Kill' button
|
void Free_current_page(void); // 'Kill' button
|
||||||
|
|||||||
@ -1768,7 +1768,7 @@ void Button_Palette(void)
|
|||||||
// est en mode X-SWAP.
|
// est en mode X-SWAP.
|
||||||
if (!image_is_backed_up)
|
if (!image_is_backed_up)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
image_is_backed_up=1;
|
image_is_backed_up=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1916,7 +1916,7 @@ void Button_Palette(void)
|
|||||||
{
|
{
|
||||||
if (!image_is_backed_up)
|
if (!image_is_backed_up)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
image_is_backed_up = 1;
|
image_is_backed_up = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2290,7 +2290,7 @@ void Button_Palette(void)
|
|||||||
{
|
{
|
||||||
if (!image_is_backed_up)
|
if (!image_is_backed_up)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
image_is_backed_up=1;
|
image_is_backed_up=1;
|
||||||
}
|
}
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
@ -2371,7 +2371,7 @@ void Button_Palette(void)
|
|||||||
// Make a backup because remapping is an undoable modification
|
// Make a backup because remapping is an undoable modification
|
||||||
if (!image_is_backed_up)
|
if (!image_is_backed_up)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
image_is_backed_up=1;
|
image_is_backed_up=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2614,7 +2614,7 @@ void Button_Palette(void)
|
|||||||
{
|
{
|
||||||
if (!image_is_backed_up)
|
if (!image_is_backed_up)
|
||||||
{
|
{
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_ALL);
|
||||||
image_is_backed_up=1;
|
image_is_backed_up=1;
|
||||||
}
|
}
|
||||||
if (used_colors==-1)
|
if (used_colors==-1)
|
||||||
@ -2743,7 +2743,7 @@ void Button_Palette(void)
|
|||||||
{
|
{
|
||||||
if ( (!image_is_backed_up)
|
if ( (!image_is_backed_up)
|
||||||
&& memcmp(Main_palette,working_palette,sizeof(T_Palette)) )
|
&& memcmp(Main_palette,working_palette,sizeof(T_Palette)) )
|
||||||
Backup_layers(-1);
|
Backup_layers(LAYER_NONE);
|
||||||
memcpy(Main_palette,working_palette,sizeof(T_Palette));
|
memcpy(Main_palette,working_palette,sizeof(T_Palette));
|
||||||
End_of_modification();
|
End_of_modification();
|
||||||
// Not really needed, the change was in palette entries
|
// Not really needed, the change was in palette entries
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user