improve Update_pixel_renderer()

+doxygen
This commit is contained in:
Thomas Bernard 2018-11-20 10:53:16 +01:00
parent 1e6f0175da
commit 832617188f
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C
2 changed files with 43 additions and 38 deletions

View File

@ -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); 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) 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 // direct
Pixel_in_current_screen = Pixel_in_screen_direct; Pixel_in_current_screen = Pixel_in_screen_direct;
Pixel_in_current_screen_with_preview = Pixel_in_screen_direct_with_preview; Pixel_in_current_screen_with_preview = Pixel_in_screen_direct_with_preview;
} break;
else case IMAGE_MODE_LAYERED:
if (Main.backups->Pages->Image_mode == IMAGE_MODE_LAYERED)
{
// layered // layered
Pixel_in_current_screen = Pixel_in_screen_layered; Pixel_in_current_screen = Pixel_in_screen_layered;
Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview; Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview;
} break;
else case IMAGE_MODE_EGX:
if (Main.backups->Pages->Image_mode == IMAGE_MODE_EGX case IMAGE_MODE_EGX2:
|| Main.backups->Pages->Image_mode == IMAGE_MODE_EGX2)
{
// special "EGX" mode // special "EGX" mode
Pixel_in_current_screen = Pixel_in_screen_egx; Pixel_in_current_screen = Pixel_in_screen_egx;
Pixel_in_current_screen_with_preview = Pixel_in_screen_egx_with_preview; Pixel_in_current_screen_with_preview = Pixel_in_screen_egx_with_preview;
} break;
else case IMAGE_MODE_THOMSON:
if (Main.backups->Pages->Image_mode == IMAGE_MODE_THOMSON)
{
Pixel_in_current_screen = Pixel_in_screen_thomson; Pixel_in_current_screen = Pixel_in_screen_thomson;
Pixel_in_current_screen_with_preview = Pixel_in_screen_thomson_with_preview; Pixel_in_current_screen_with_preview = Pixel_in_screen_thomson_with_preview;
} break;
else case IMAGE_MODE_C64HIRES:
if (Main.backups->Pages->Image_mode == IMAGE_MODE_ZX) case IMAGE_MODE_ZX:
{
Pixel_in_current_screen = Pixel_in_screen_zx; Pixel_in_current_screen = Pixel_in_screen_zx;
Pixel_in_current_screen_with_preview = Pixel_in_screen_zx_with_preview; Pixel_in_current_screen_with_preview = Pixel_in_screen_zx_with_preview;
} break;
// Implicit else : Image_mode must be IMAGE_MODE_MODE5 or IMAGE_MODE_RASTER case IMAGE_MODE_MODE5:
else if ( Main.current_layer == 4) case IMAGE_MODE_RASTER:
{ if ( Main.current_layer == 4)
// overlay {
Pixel_in_current_screen = Pixel_in_screen_overlay; // overlay
Pixel_in_current_screen_with_preview = Pixel_in_screen_overlay_with_preview; 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))) }
{ else if (Main.current_layer<4 && (Main.layers_visible & (1<<4)))
// underlay {
Pixel_in_current_screen = Pixel_in_screen_underlay; // underlay
Pixel_in_current_screen_with_preview = Pixel_in_screen_underlay_with_preview; Pixel_in_current_screen = Pixel_in_screen_underlay;
} Pixel_in_current_screen_with_preview = Pixel_in_screen_underlay_with_preview;
else }
{ else
// layered (again, for layers > 4 in MODE5 and RASTER) {
Pixel_in_current_screen = Pixel_in_screen_layered; // layered (again, for layers > 4 in MODE5 and RASTER)
Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview; Pixel_in_current_screen = Pixel_in_screen_layered;
Pixel_in_current_screen_with_preview = Pixel_in_screen_layered_with_preview;
}
break;
} }
} }

View File

@ -406,7 +406,7 @@ typedef struct T_Page
int Height; ///< Image height in pixels. int Height; ///< Image height in pixels.
T_Palette Palette; ///< Image palette. 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. char Comment[COMMENT_SIZE+1]; ///< Comment to store in the image file.