From c81ffb0d6e1bf704f6605e38ec66a6a547a26a07 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Mon, 10 Dec 2018 22:47:49 +0100 Subject: [PATCH] Automatically set Drawing mode when loading Thomson, C64 and Apple 2 files --- src/loadsave.c | 5 +++++ src/main.c | 5 ++++- src/miscfileformats.c | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/loadsave.c b/src/loadsave.c index 7596e0f2..fd8bfeb1 100644 --- a/src/loadsave.c +++ b/src/loadsave.c @@ -317,7 +317,12 @@ void Set_image_mode(T_IO_Context *context, enum IMAGE_MODES mode) if (context->Type == CONTEXT_MAIN_IMAGE) { Main.backups->Pages->Image_mode = mode; + //Switch_layer_mode(mode); Update_screen_targets(); + if (mode > IMAGE_MODE_ANIMATION) + Selected_Constraint_Mode = mode; + // update the "FX" button state + Draw_menu_button(BUTTON_EFFECTS,Any_effect_active()); } } diff --git a/src/main.c b/src/main.c index 8982b6ae..1bc08202 100644 --- a/src/main.c +++ b/src/main.c @@ -1186,7 +1186,10 @@ int Init_program(int argc,char * argv[]) // If only one image was loaded, assume the spare has same image type if (file_in_command_line==1) - Spare.backups->Pages->Image_mode = Main.backups->Pages->Image_mode; + { + if (Main.backups->Pages->Image_mode <= IMAGE_MODE_ANIMATION) + Spare.backups->Pages->Image_mode = Main.backups->Pages->Image_mode; + } Hide_cursor(); Compute_optimal_menu_colors(Main.palette); diff --git a/src/miscfileformats.c b/src/miscfileformats.c index f229cda4..a7a2df4b 100644 --- a/src/miscfileformats.c +++ b/src/miscfileformats.c @@ -3093,13 +3093,17 @@ void Load_C64(T_IO_Context * context) { case F_fli: Load_C64_fli(context,bitmap,screen_ram,color_ram,background); + Set_image_mode(context, IMAGE_MODE_C64FLI); break; case F_multi: Load_C64_multi(context,bitmap,screen_ram,color_ram, (background==NULL) ? 0 : *background); + Set_image_mode(context, IMAGE_MODE_C64MULTI); break; default: Load_C64_hires(context,bitmap,screen_ram); + if (loadFormat == F_hires) + Set_image_mode(context, IMAGE_MODE_C64HIRES); } free(file_buffer); @@ -5652,6 +5656,8 @@ void Load_MOTO(T_IO_Context * context) } } Pre_load(context, width, height, file_size, FORMAT_MOTO, ratio, bpp); + if (mode == MOTO_MODE_40col) + Set_image_mode(context, IMAGE_MODE_THOMSON); File_error = 0; i = 0; for (y = 0; y < height; y++) @@ -6685,6 +6691,8 @@ void Load_HGR(T_IO_Context * context) free(vram[0]); free(vram[1]); File_error = 0; + + Set_image_mode(context, is_dhgr ? IMAGE_MODE_DHGR : IMAGE_MODE_HGR); } /**