diff --git a/Terminal.Gui/Drawing/Quant/ColorQuantizer.cs b/Terminal.Gui/Drawing/Quant/ColorQuantizer.cs index d6aa95d74..ac51399e2 100644 --- a/Terminal.Gui/Drawing/Quant/ColorQuantizer.cs +++ b/Terminal.Gui/Drawing/Quant/ColorQuantizer.cs @@ -28,7 +28,7 @@ public class ColorQuantizer /// /// Gets or sets the algorithm used to build the . /// - public IPaletteBuilder PaletteBuildingAlgorithm { get; set; } = new PopularityPaletteWithThreshold (new EuclideanColorDistance (),5) ; + public IPaletteBuilder PaletteBuildingAlgorithm { get; set; } = new PopularityPaletteWithThreshold (new EuclideanColorDistance (),8) ; private readonly ConcurrentDictionary _nearestColorCache = new (); @@ -46,6 +46,7 @@ public class ColorQuantizer } } + _nearestColorCache.Clear (); Palette = PaletteBuildingAlgorithm.BuildPalette (allColors, MaxColors); } diff --git a/UICatalog/Scenarios/Images.cs b/UICatalog/Scenarios/Images.cs index 818e1db0b..4df644b3a 100644 --- a/UICatalog/Scenarios/Images.cs +++ b/UICatalog/Scenarios/Images.cs @@ -53,10 +53,10 @@ public class Images : Scenario private View _sixelView; private DoomFire _fire; - private SixelEncoder _encoder; + private SixelEncoder _fireEncoder; + private SixelToRender _fireSixel; private int _fireFrameCounter; private bool _isDisposed; - private SixelToRender _fireSixel; public override void Main () { @@ -155,19 +155,14 @@ public class Images : Scenario } _fire = new DoomFire (_win.Frame.Width * _pxX.Value, _win.Frame.Height * _pxY.Value); - _encoder = new SixelEncoder (); - _encoder.Quantizer.PaletteBuildingAlgorithm = new ConstPalette (_fire.Palette); + _fireEncoder = new SixelEncoder (); + _fireEncoder.Quantizer.PaletteBuildingAlgorithm = new ConstPalette (_fire.Palette); _fireFrameCounter = 0; Application.AddTimeout (TimeSpan.FromMilliseconds (30), AdvanceFireTimerCallback); } - private void StopFire () - { - - } - private bool AdvanceFireTimerCallback () { _fire.AdvanceFrame (); @@ -190,7 +185,7 @@ public class Images : Scenario _fireSixel = new () { - SixelData = _encoder.EncodeSixel (bmp), + SixelData = _fireEncoder.EncodeSixel (bmp), ScreenPosition = new (0, 0) }; @@ -410,6 +405,7 @@ public class Images : Scenario ) { var encoder = new SixelEncoder (); + // Calculate the target size in pixels based on console units int targetWidthInPixels = maxSize.Width * pixelsPerCellX;