Add layers automatically when switching to IMAGE_MODE_MODE5/RASTER

This commit is contained in:
Thomas Bernard 2018-11-26 22:40:50 +01:00
parent c1fd90137e
commit 2e3dc0e149
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -28,6 +28,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "gfx2log.h"
#include "brush.h" #include "brush.h"
#include "buttons.h" #include "buttons.h"
#include "engine.h" #include "engine.h"
@ -190,17 +191,17 @@ void Button_Constraint_mode(void)
if (Selected_Constraint_Mode == IMAGE_MODE_MODE5 || Selected_Constraint_Mode == IMAGE_MODE_RASTER) if (Selected_Constraint_Mode == IMAGE_MODE_MODE5 || Selected_Constraint_Mode == IMAGE_MODE_RASTER)
{ {
/** @todo it would be great to auto-create extra layers */ // switch to layer mode if needed
if (Main.backups->Pages->Image_mode != IMAGE_MODE_LAYERED || if (Main.backups->Pages->Image_mode != IMAGE_MODE_LAYERED)
Main.backups->Pages->Nb_layers!=5) Switch_layer_mode(IMAGE_MODE_LAYERED);
{ // auto-create extra layers
Verbose_message("Error!", "Emulation of Amstrad CPC's rasters requires a 5-layer image."); while (Main.backups->Pages->Nb_layers < 5)
return; Button_Layer_add();
}
for (pixel=0; pixel < Main.image_width*Main.image_height; pixel++) for (pixel=0; pixel < Main.image_width*Main.image_height; pixel++)
{ {
if (Main.backups->Pages->Image[4].Pixels[pixel]>3) if (Main.backups->Pages->Image[4].Pixels[pixel]>3)
{ {
GFX2_Log(GFX2_INFO, "pixel[%u]=0x%02x\n", pixel, Main.backups->Pages->Image[4].Pixels[pixel]);
Verbose_message("Error!", "Emulation of Amstrad CPC's rasters needs all pixels of layer 5 to use colors 0-3."); Verbose_message("Error!", "Emulation of Amstrad CPC's rasters needs all pixels of layer 5 to use colors 0-3.");
return; return;
} }
@ -249,7 +250,7 @@ void Button_Constraint_menu(void)
label = "Constraints"; label = "Constraints";
summary = ""; summary = "";
for (i = 0; i < sizeof(modes)/sizeof(modes[0]) ; i++) for (i = 0; i < sizeof(modes)/sizeof(modes[0]) ; i++)
if (Main.backups->Pages->Image_mode == modes[i].mode) if (Selected_Constraint_Mode == modes[i].mode)
{ {
label = modes[i].label; label = modes[i].label;
summary = modes[i].summary; summary = modes[i].summary;
@ -328,9 +329,6 @@ void Button_Constraint_menu(void)
{ {
if (Selected_Constraint_Mode > IMAGE_MODE_ANIMATION) if (Selected_Constraint_Mode > IMAGE_MODE_ANIMATION)
{ {
if (Main.backups->Pages->Image_mode > IMAGE_MODE_ANIMATION)
Button_Constraint_mode(); // unactivate current mode
Button_Constraint_mode(); // activate selected Mode
if (set_pic_size) if (set_pic_size)
{ {
switch (Selected_Constraint_Mode) switch (Selected_Constraint_Mode)
@ -363,6 +361,9 @@ void Button_Constraint_menu(void)
break; break;
} }
} }
if (Main.backups->Pages->Image_mode > IMAGE_MODE_ANIMATION)
Button_Constraint_mode(); // unactivate current mode
Button_Constraint_mode(); // activate selected Mode
if (set_grid) if (set_grid)
{ {
switch (Selected_Constraint_Mode) switch (Selected_Constraint_Mode)