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,43 +3603,46 @@ 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)
break;
case IMAGE_MODE_MODE5:
case IMAGE_MODE_RASTER:
if ( Main.current_layer == 4)
{
// overlay
Pixel_in_current_screen = Pixel_in_screen_overlay;
@ -3657,4 +3660,6 @@ void Update_pixel_renderer(void)
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.
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.