From 832617188f78ae61f595f275a09b07a2bcb48890 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Tue, 20 Nov 2018 10:53:16 +0100 Subject: [PATCH] improve Update_pixel_renderer() +doxygen --- src/graph.c | 79 ++++++++++++++++++++++++++++------------------------ src/struct.h | 2 +- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/graph.c b/src/graph.c index 6d7c62dd..d2fd69bc 100644 --- a/src/graph.c +++ b/src/graph.c @@ -3603,58 +3603,63 @@ byte Read_pixel_from_current_layer(word x,word y) return *((y)*Main.image_width+(x)+Main.backups->Pages->Image[Main.current_layer].Pixels); } +/** + * Update the pixel functions according to the current Image_mode. + * + * Pixel_in_current_screen and Pixel_in_current_screen_with_preview are updated. + */ void Update_pixel_renderer(void) { - if (Main.backups->Pages->Image_mode == IMAGE_MODE_ANIMATION) + switch (Main.backups->Pages->Image_mode) { + case IMAGE_MODE_C64MULTI: //TODO + case IMAGE_MODE_C64FLI: //TODO + case IMAGE_MODE_GBC: // TODO + case IMAGE_MODE_ANIMATION: // direct Pixel_in_current_screen = Pixel_in_screen_direct; Pixel_in_current_screen_with_preview = Pixel_in_screen_direct_with_preview; - } - else - if (Main.backups->Pages->Image_mode == IMAGE_MODE_LAYERED) - { + break; + case IMAGE_MODE_LAYERED: // layered Pixel_in_current_screen = Pixel_in_screen_layered; Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview; - } - else - if (Main.backups->Pages->Image_mode == IMAGE_MODE_EGX - || Main.backups->Pages->Image_mode == IMAGE_MODE_EGX2) - { + break; + case IMAGE_MODE_EGX: + case IMAGE_MODE_EGX2: // special "EGX" mode Pixel_in_current_screen = Pixel_in_screen_egx; Pixel_in_current_screen_with_preview = Pixel_in_screen_egx_with_preview; - } - else - if (Main.backups->Pages->Image_mode == IMAGE_MODE_THOMSON) - { + break; + case IMAGE_MODE_THOMSON: Pixel_in_current_screen = Pixel_in_screen_thomson; Pixel_in_current_screen_with_preview = Pixel_in_screen_thomson_with_preview; - } - else - if (Main.backups->Pages->Image_mode == IMAGE_MODE_ZX) - { + break; + case IMAGE_MODE_C64HIRES: + case IMAGE_MODE_ZX: Pixel_in_current_screen = Pixel_in_screen_zx; Pixel_in_current_screen_with_preview = Pixel_in_screen_zx_with_preview; - } - // Implicit else : Image_mode must be IMAGE_MODE_MODE5 or IMAGE_MODE_RASTER - else if ( Main.current_layer == 4) - { - // overlay - Pixel_in_current_screen = Pixel_in_screen_overlay; - Pixel_in_current_screen_with_preview = Pixel_in_screen_overlay_with_preview; - } - else if (Main.current_layer<4 && (Main.layers_visible & (1<<4))) - { - // underlay - Pixel_in_current_screen = Pixel_in_screen_underlay; - Pixel_in_current_screen_with_preview = Pixel_in_screen_underlay_with_preview; - } - else - { - // layered (again, for layers > 4 in MODE5 and RASTER) - Pixel_in_current_screen = Pixel_in_screen_layered; - Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview; + break; + case IMAGE_MODE_MODE5: + case IMAGE_MODE_RASTER: + if ( Main.current_layer == 4) + { + // overlay + Pixel_in_current_screen = Pixel_in_screen_overlay; + Pixel_in_current_screen_with_preview = Pixel_in_screen_overlay_with_preview; + } + else if (Main.current_layer<4 && (Main.layers_visible & (1<<4))) + { + // underlay + Pixel_in_current_screen = Pixel_in_screen_underlay; + Pixel_in_current_screen_with_preview = Pixel_in_screen_underlay_with_preview; + } + else + { + // layered (again, for layers > 4 in MODE5 and RASTER) + Pixel_in_current_screen = Pixel_in_screen_layered; + Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview; + } + break; } } diff --git a/src/struct.h b/src/struct.h index 6efc2e88..27253f3e 100644 --- a/src/struct.h +++ b/src/struct.h @@ -406,7 +406,7 @@ typedef struct T_Page int Height; ///< Image height in pixels. T_Palette Palette; ///< Image palette. - byte Image_mode; ///< 0= layered image, 1=animation, + enum IMAGE_MODES Image_mode; ///< 0= layered image, 1=animation, char Comment[COMMENT_SIZE+1]; ///< Comment to store in the image file.