From 03b2244f280734eabc3674adb87b15f2eba8d10a Mon Sep 17 00:00:00 2001 From: Matthieu LAURENT Date: Fri, 17 Oct 2025 00:38:30 +0100 Subject: [PATCH 1/4] Add Color Quantization effect --- Pinta.Effects/CoreEffectsExtension.cs | 2 + .../Effects/ColorQuantizationEffect.cs | 244 ++++++++++++++++++ Pinta.Resources/Icons.cs | 1 + 3 files changed, 247 insertions(+) create mode 100644 Pinta.Effects/Effects/ColorQuantizationEffect.cs diff --git a/Pinta.Effects/CoreEffectsExtension.cs b/Pinta.Effects/CoreEffectsExtension.cs index 339602f30f..cf718d711f 100644 --- a/Pinta.Effects/CoreEffectsExtension.cs +++ b/Pinta.Effects/CoreEffectsExtension.cs @@ -61,6 +61,7 @@ public void Initialize () PintaCore.Effects.RegisterEffect (new BulgeEffect (services)); PintaCore.Effects.RegisterEffect (new CellsEffect (services)); PintaCore.Effects.RegisterEffect (new CloudsEffect (services)); + PintaCore.Effects.RegisterEffect (new ColorQuantizationEffect (services)); PintaCore.Effects.RegisterEffect (new DentsEffect (services)); PintaCore.Effects.RegisterEffect (new DitheringEffect (services)); PintaCore.Effects.RegisterEffect (new EdgeDetectEffect (services)); @@ -114,6 +115,7 @@ public void Uninitialize () PintaCore.Effects.UnregisterInstanceOfEffect (); PintaCore.Effects.UnregisterInstanceOfEffect (); PintaCore.Effects.UnregisterInstanceOfEffect (); + PintaCore.Effects.UnregisterInstanceOfEffect (); PintaCore.Effects.UnregisterInstanceOfEffect (); PintaCore.Effects.UnregisterInstanceOfEffect (); PintaCore.Effects.UnregisterInstanceOfEffect (); diff --git a/Pinta.Effects/Effects/ColorQuantizationEffect.cs b/Pinta.Effects/Effects/ColorQuantizationEffect.cs new file mode 100644 index 0000000000..86526e3099 --- /dev/null +++ b/Pinta.Effects/Effects/ColorQuantizationEffect.cs @@ -0,0 +1,244 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; +using Cairo; +using Pinta.Core; + +namespace Pinta.Effects; + +public sealed class ColorQuantizationEffect : BaseEffect +{ + public override string Name + => Translations.GetString ("Color Quantization"); + + public override string EffectMenuCategory + => Translations.GetString ("Color"); + + public override string Icon + => Resources.Icons.EffectsColorQuantization; + + public override bool IsConfigurable + => true; + public override bool IsTileable + => false; + + public QuantizationData Data + => (QuantizationData) EffectData!; // NRT - Set in constructor + + + private readonly IChromeService chrome; + private readonly IWorkspaceService workspace; + + public ColorQuantizationEffect (IServiceProvider services) + { + chrome = services.GetService (); + workspace = services.GetService (); + + EffectData = new QuantizationData (); + } + + public override Task LaunchConfiguration () + => chrome.LaunchSimpleEffectDialog (this, workspace); + + private sealed record Settings ( + int ChangedPixelCount, + ImmutableArray PixelOffsets, + ImmutableArray ChangedColors + ); + + protected override void Render (ImageSurface source, ImageSurface destination, RectangleI roi) + { + var s = CreateSettings (source, roi); + var dest = destination.GetPixelData (); + for (int i = 0; i < s.ChangedPixelCount; i++) + dest[s.PixelOffsets[i].memoryOffset] = s.ChangedColors[i]; + } + + private Settings CreateSettings (ImageSurface source, RectangleI roi) + { + ReadOnlySpan src = source.GetReadOnlyPixelData (); + Size size = source.GetSize (); + + var pixelOffsets = ImmutableArray.CreateRange (Tiling.GeneratePixelOffsets (roi, size)); + + // Compute the palette using the median-cut algorithm. + const int maxSample = 20_000; // Should be large enough that the sampling is unnoticeable + var palette = BuildPaletteWithMedianCut (src, size, roi, Data.ColorCount, maxSample); + + // Map every pixel to the nearest palette entry. + ColorBgra[] mapped = new ColorBgra[pixelOffsets.Length]; + for (int i = 0; i < pixelOffsets.Length; i++) { + var px = src[pixelOffsets[i].memoryOffset]; + mapped[i] = Nearest (px, palette); + } + + return new Settings (pixelOffsets.Length, pixelOffsets, mapped.ToImmutableArray ()); + } + + // A slice into the pixel array that contains all the samples. We use slices to avoid needing to reallocate constantly + // It also has cached values for the min and max for each channel since we read them repeatedly + private sealed class Box + { + public int Start, Length; + public byte MinR, MaxR, MinG, MaxG, MinB, MaxB; + + public Box (int start, int length) { Start = start; Length = length; } + + public void RefreshMinMax (ColorBgra[] pts) + { + // figure out how wide this box is on each channel + byte minR = 255, maxR = 0, minG = 255, maxG = 0, minB = 255, maxB = 0; + int end = Start + Length; + for (int i = Start; i < end; i++) { + var p = pts[i]; + if (p.R < minR) minR = p.R; if (p.R > maxR) maxR = p.R; + if (p.G < minG) minG = p.G; if (p.G > maxG) maxG = p.G; + if (p.B < minB) minB = p.B; if (p.B > maxB) maxB = p.B; + } + MinR = minR; MaxR = maxR; + MinG = minG; MaxG = maxG; + MinB = minB; MaxB = maxB; + } + + // pick the channel that has the largest range + // 0: red, 1: green, 2: blue + public int WidestChannel () + { + int rRange = MaxR - MinR; + int gRange = MaxG - MinG; + int bRange = MaxB - MinB; + if (rRange >= gRange && rRange >= bRange) return 0; + if (gRange >= rRange && gRange >= bRange) return 1; + return 2; + } + } + + private static ColorBgra[] BuildPaletteWithMedianCut (ReadOnlySpan src, Size size, RectangleI roi, int k, int maxSample) + { + // We use sampling so that the algorithm doesn't take too long on large images + int total = roi.Width * roi.Height; + int target = Math.Min (maxSample, Math.Max (1, total)); + var sample = new ColorBgra[target]; + + int distBetweenSamples = Math.Max (1, (int) Math.Ceiling (Math.Sqrt (total / (double) target))); + int count = 0; + for (int y = roi.Top; y < roi.Bottom && count < target; y += distBetweenSamples) { + int row = y * size.Width; + for (int x = roi.Left; x < roi.Right && count < target; x += distBetweenSamples) + sample[count++] = src[row + x]; + } + // we assume later that the list has at least one element, so we need to handle the 0 case here + if (count == 0) return new[] { ColorBgra.Black, ColorBgra.White }; + if (count < target) Array.Resize (ref sample, count); + + // Start with one big box covering every color + var boxes = new List (k) { new Box (0, sample.Length) }; + boxes[0].RefreshMinMax (sample); + + // Then keep splitting boxes until we have enough colors + // We pick the box with the widest color range, then split it in half along that channel + while (boxes.Count < k) { + int pick = PickBoxToSplit (boxes); + var box = boxes[pick]; + + // If there's nothing left to split, we can stop early + if (box.Length <= 1 || (box.MaxR == box.MinR && box.MaxG == box.MinG && box.MaxB == box.MinB)) { + break; + } + + int channel = box.WidestChannel (); + + // We sort the box's slice by that channel + // Since the box should be the only one with a view of that specific slice, we can just sort in-place + switch (channel) { + case 0: // red + Array.Sort (sample, box.Start, box.Length, Comparer.Create ((a, b) => a.R.CompareTo (b.R))); + break; + case 1: // green + Array.Sort (sample, box.Start, box.Length, Comparer.Create ((a, b) => a.G.CompareTo (b.G))); + break; + default: // blue + Array.Sort (sample, box.Start, box.Length, Comparer.Create ((a, b) => a.B.CompareTo (b.B))); + break; + } + + // Split at the median + int leftLen = box.Length / 2; + if (leftLen == 0) break; + var left = new Box (box.Start, leftLen); + var right = new Box (box.Start + leftLen, box.Length - leftLen); + + left.RefreshMinMax (sample); + right.RefreshMinMax (sample); + + // We replace the old box since it's no longer relevant + boxes[pick] = left; + boxes.Add (right); + } + + // Once we have all our boxes, we just compute the average color in each final box + var palette = new ColorBgra[boxes.Count]; + for (int i = 0; i < boxes.Count; i++) { + var b = boxes[i]; + long r = 0, g = 0, bl = 0; + int end = b.Start + b.Length; + for (int j = b.Start; j < end; j++) { + r += sample[j].R; + g += sample[j].G; + bl += sample[j].B; + } + int n = Math.Max (1, b.Length); + palette[i] = ColorBgra.FromBgra ((byte) (bl / n), (byte) (g / n), (byte) (r / n), 255); + } + + return palette; + } + + private static int PickBoxToSplit (List boxes) + { + // We just find the box with the largest range for a single channel. + // Maybe using euclidian distance could also be a good heuristic, but this works well + // and there doesn't seem to be a commonly agreed-on prefered way to do it anyway. + int best = 0; + int bestRange = MaxChannelRange (boxes[0]); + for (int i = 1; i < boxes.Count; i++) { + int r = MaxChannelRange (boxes[i]); + if (r > bestRange) { best = i; bestRange = r; } + } + return best; + + static int MaxChannelRange (Box b) + => Math.Max (b.MaxR - b.MinR, Math.Max (b.MaxG - b.MinG, b.MaxB - b.MinB)); + } + + // Maps a pixels to the nearest palette color + // This is just brute-force, but performance is fine enough since the max palette size is 256 + private static ColorBgra Nearest (ColorBgra p, ColorBgra[] palette) + { + int best = 0; + int bd = ColorDist (p, palette[0]); + for (int i = 1; i < palette.Length; i++) { + int d = ColorDist (p, palette[i]); + if (d < bd) { bd = d; best = i; } + } + return palette[best]; + } + + // Simple euclidian distance between 2 colors + private static int ColorDist (ColorBgra a, ColorBgra b) + { + int dr = a.R - b.R; + int dg = a.G - b.G; + int db = a.B - b.B; + return dr * dr + dg * dg + db * db; + } + + public sealed class QuantizationData : EffectData + { + [Caption ("Colors (N)")] + [MinimumValue (2), MaximumValue (256)] + public int ColorCount { get; set; } = 16; + } +} diff --git a/Pinta.Resources/Icons.cs b/Pinta.Resources/Icons.cs index 2e991944c4..d052418a63 100644 --- a/Pinta.Resources/Icons.cs +++ b/Pinta.Resources/Icons.cs @@ -127,6 +127,7 @@ public static class Icons public const string EffectsBlursUnfocus = "effects-blurs-unfocus"; public const string EffectsBlursZoomBlur = "effects-blurs-zoomblur"; public const string EffectsColorDithering = "effects-color-dithering"; + public const string EffectsColorQuantization = "effects-color-dithering"; // TODO public const string EffectsDefault = "effects-default-symbolic"; public const string EffectsDistortBulge = "effects-distort-bulge"; public const string EffectsDistortDents = "effects-distort-dents"; From 23e2abc74cc0f8acf92e0e8f9026c1a701675af0 Mon Sep 17 00:00:00 2001 From: Matthieu LAURENT Date: Fri, 17 Oct 2025 11:11:31 +0100 Subject: [PATCH 2/4] add icon for color quantization effect --- Pinta.Resources/Icons.cs | 2 +- .../16x16/actions/effects-color-quantization.png | Bin 0 -> 177 bytes Pinta.Resources/icons/pinta-icons.md | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 Pinta.Resources/icons/hicolor/16x16/actions/effects-color-quantization.png diff --git a/Pinta.Resources/Icons.cs b/Pinta.Resources/Icons.cs index d052418a63..f2fc1fd79c 100644 --- a/Pinta.Resources/Icons.cs +++ b/Pinta.Resources/Icons.cs @@ -127,7 +127,7 @@ public static class Icons public const string EffectsBlursUnfocus = "effects-blurs-unfocus"; public const string EffectsBlursZoomBlur = "effects-blurs-zoomblur"; public const string EffectsColorDithering = "effects-color-dithering"; - public const string EffectsColorQuantization = "effects-color-dithering"; // TODO + public const string EffectsColorQuantization = "effects-color-quantization"; public const string EffectsDefault = "effects-default-symbolic"; public const string EffectsDistortBulge = "effects-distort-bulge"; public const string EffectsDistortDents = "effects-distort-dents"; diff --git a/Pinta.Resources/icons/hicolor/16x16/actions/effects-color-quantization.png b/Pinta.Resources/icons/hicolor/16x16/actions/effects-color-quantization.png new file mode 100644 index 0000000000000000000000000000000000000000..da3101d601ce9ffdea754fa08f56cd01c745da6b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6`n4RAr*6$20QXKDDd3ossCuY z?;5*Opy83N$=tpc0^7D_M+i3EGPt*u@#@O!6?@Jv5AoXM$y6VH>|pE#*BsrFKov%l zCRK$~JO<2n=O^#ft Date: Fri, 17 Oct 2025 11:32:40 +0100 Subject: [PATCH 3/4] Add tests for color quantization effect --- .../Assets/colorquantization1.png | Bin 0 -> 9623 bytes .../Assets/colorquantization2.png | Bin 0 -> 90253 bytes tests/Pinta.Effects.Tests/EffectsTest.Color.cs | 16 ++++++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 tests/Pinta.Effects.Tests/Assets/colorquantization1.png create mode 100644 tests/Pinta.Effects.Tests/Assets/colorquantization2.png diff --git a/tests/Pinta.Effects.Tests/Assets/colorquantization1.png b/tests/Pinta.Effects.Tests/Assets/colorquantization1.png new file mode 100644 index 0000000000000000000000000000000000000000..378bf99bd06815d0cd9e8dd4e7f2281b4e72d0b8 GIT binary patch literal 9623 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 N17@9|^-b;-~ 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 QN&o-=07*qoM6N<$f-2$S2LJ#7 literal 0 HcmV?d00001 diff --git a/tests/Pinta.Effects.Tests/EffectsTest.Color.cs b/tests/Pinta.Effects.Tests/EffectsTest.Color.cs index f859faa4fd..06770bc77f 100644 --- a/tests/Pinta.Effects.Tests/EffectsTest.Color.cs +++ b/tests/Pinta.Effects.Tests/EffectsTest.Color.cs @@ -40,4 +40,20 @@ public void Dithering4 () effect.Data.ErrorDiffusionMethod = PredefinedDiffusionMatrices.Atkinson; Utilities.TestEffect (effect, "dithering4.png"); } + + [Test] + public void ColorQuantization1 () + { + ColorQuantizationEffect effect = new (Utilities.CreateMockServices ()); + effect.Data.ColorCount = 3; + Utilities.TestEffect (effect, "colorquantization1.png"); + } + + [Test] + public void ColorQuantization2 () + { + ColorQuantizationEffect effect = new (Utilities.CreateMockServices ()); + effect.Data.ColorCount = 64; + Utilities.TestEffect (effect, "colorquantization2.png"); + } } From 05a945556a4d81ac1aabe08fe07fc0fb02238df6 Mon Sep 17 00:00:00 2001 From: Matthieu LAURENT Date: Fri, 17 Oct 2025 11:39:22 +0100 Subject: [PATCH 4/4] Fix spelling errors --- Pinta.Effects/Effects/ColorQuantizationEffect.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Pinta.Effects/Effects/ColorQuantizationEffect.cs b/Pinta.Effects/Effects/ColorQuantizationEffect.cs index 86526e3099..20a9493805 100644 --- a/Pinta.Effects/Effects/ColorQuantizationEffect.cs +++ b/Pinta.Effects/Effects/ColorQuantizationEffect.cs @@ -199,8 +199,8 @@ private static ColorBgra[] BuildPaletteWithMedianCut (ReadOnlySpan sr private static int PickBoxToSplit (List boxes) { // We just find the box with the largest range for a single channel. - // Maybe using euclidian distance could also be a good heuristic, but this works well - // and there doesn't seem to be a commonly agreed-on prefered way to do it anyway. + // Maybe using euclidean distance could also be a good heuristic, but this works well + // and there doesn't seem to be a commonly agreed-on preferred way to do it anyway. int best = 0; int bestRange = MaxChannelRange (boxes[0]); for (int i = 1; i < boxes.Count; i++) { @@ -226,7 +226,7 @@ private static ColorBgra Nearest (ColorBgra p, ColorBgra[] palette) return palette[best]; } - // Simple euclidian distance between 2 colors + // Simple euclidean distance between 2 colors private static int ColorDist (ColorBgra a, ColorBgra b) { int dr = a.R - b.R;