fixed handling cloned graphics with color template
authorHolger Schemel <holger.schemel@virtion.de>
Wed, 9 Oct 2024 17:12:06 +0000 (19:12 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Wed, 9 Oct 2024 10:28:35 +0000 (12:28 +0200)
src/editor.c
src/init.c
src/init.h

index d5f38ad797c097dfc009af72192f25c89f07ecf1..dad6bebce10f476392a9e36cc758aef220fb0d37 100644 (file)
@@ -11909,7 +11909,7 @@ static void DrawEngineConfigColors(void)
 {
   int i;
 
-  if (!hasColorTemplate())
+  if (!anyImagehasColorTemplate())
   {
     int font_nr = FONT_TEXT_1;
     int font_height = getFontHeight(font_nr);
index d93486c64336ba8281871efbba3252cc8bed4e17..cf131e54fd5558f75ac8e0d0b43e9d8faa2fc629 100644 (file)
@@ -344,13 +344,22 @@ static void InitBitmapPointers(void)
       graphic_info[i].bitmap = graphic_info[i].bitmaps[IMG_BITMAP_STANDARD];
 }
 
-boolean hasColorTemplate(void)
+static boolean hasColorTemplate(int graphic)
+{
+  // if graphic was cloned, only re-color cloned graphic
+  if (graphic_info[graphic].clone_from != -1)
+    return FALSE;
+
+  return graphic_info[graphic].color_template;
+}
+
+boolean anyImagehasColorTemplate(void)
 {
   int num_images = getImageListSize();
   int i;
 
   for (i = 0; i < num_images; i++)
-    if (graphic_info[i].color_template)
+    if (hasColorTemplate(i))
       return TRUE;
 
   return FALSE;
@@ -363,12 +372,12 @@ void InitColorTemplateImages(void)
 
   // if graphic is marked as "color template", reset using colored bitmaps
   for (i = 0; i < num_images; i++)
-    if (graphic_info[i].color_template)
+    if (hasColorTemplate(i))
       ResetColorTemplateImage(i);
 
   // if graphic is marked as "color template", re-color all scaled bitmaps
   for (i = 0; i < num_images; i++)
-    if (graphic_info[i].color_template)
+    if (hasColorTemplate(i))
       CreateImgesFromColorTemplate(i, GetColoredBitmapFromTemplate_BD);
 
   InitImageTextures();
@@ -376,7 +385,7 @@ void InitColorTemplateImages(void)
 
 void InitColorTemplateImagesIfNeeded(void)
 {
-  if (hasColorTemplate())
+  if (anyImagehasColorTemplate())
     InitColorTemplateImages();
 }
 
index 65f21ddfd9d8fb24108ed0b16c60720d7298d09e..7fcbfcd6795d842612617b2c2b2456001105f617 100644 (file)
@@ -40,7 +40,7 @@ void InitGfxBuffers(void);
 void InitGadgets(void);
 void InitImageTextures(void);
 
-boolean hasColorTemplate(void);
+boolean anyImagehasColorTemplate(void);
 void InitColorTemplateImages(void);
 void InitColorTemplateImagesIfNeeded(void);