From d0a04795791a803ed58d5bbb170178af0bd9cabf Mon Sep 17 00:00:00 2001
From: biwa <6475593+biwa@users.noreply.github.com>
Date: Sat, 1 Aug 2020 12:28:23 +0200
Subject: [PATCH] Export to image: fixed a problem where exported textures were
 too bright when an increased texture and flat brightness was set in the
 preferences

---
 Source/Plugins/BuilderModes/IO/ImageExporter.cs | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Source/Plugins/BuilderModes/IO/ImageExporter.cs b/Source/Plugins/BuilderModes/IO/ImageExporter.cs
index 8d3fad273..2771ce9bd 100644
--- a/Source/Plugins/BuilderModes/IO/ImageExporter.cs
+++ b/Source/Plugins/BuilderModes/IO/ImageExporter.cs
@@ -30,6 +30,7 @@ using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using CodeImp.DoomBuilder.Data;
 using CodeImp.DoomBuilder.Geometry;
 using CodeImp.DoomBuilder.Map;
 using System.Diagnostics;
@@ -156,7 +157,12 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
 
 				if (settings.Floor)
 				{
-					brushtexture = General.Map.Data.GetFlatImage(s.FloorTexture).ExportBitmap();
+					// The image might have a color correction applied, but we need it without. So we use LocalGetBitmap, because it reloads the image,
+					// but doesn't applie the color correction if we set UseColorCorrection to false first
+					ImageData imagedata = General.Map.Data.GetFlatImage(s.FloorTexture);
+					imagedata.UseColorCorrection = false;
+					brushtexture = imagedata.LocalGetBitmap();
+					imagedata.UseColorCorrection = true;
 
 					textureoffset.x = s.Fields.GetValue("xpanningfloor", 0.0);
 					textureoffset.y = s.Fields.GetValue("ypanningfloor", 0.0);
@@ -167,7 +173,12 @@ namespace CodeImp.DoomBuilder.BuilderModes.IO
 				}
 				else
 				{
-					brushtexture = General.Map.Data.GetFlatImage(s.CeilTexture).ExportBitmap();
+					// The image might have a color correction applied, but we need it without. So we use LocalGetBitmap, because it reloads the image,
+					// but doesn't applie the color correction if we set UseColorCorrection to false first
+					ImageData imagedata = General.Map.Data.GetFlatImage(s.CeilTexture);
+					imagedata.UseColorCorrection = false;
+					brushtexture = imagedata.LocalGetBitmap();
+					imagedata.UseColorCorrection = true;
 
 					textureoffset.x = s.Fields.GetValue("xpanningceiling", 0.0);
 					textureoffset.y = s.Fields.GetValue("ypanningceiling", 0.0);
-- 
GitLab