From 64baeca7b346fe5e792c29cff6b7d286ea2c132f Mon Sep 17 00:00:00 2001 From: tznind Date: Sun, 6 Oct 2024 19:20:53 +0100 Subject: [PATCH] Update sixel status class name and move to new file --- Terminal.Gui/Drawing/SixelSupportDetector.cs | 27 +++----------------- Terminal.Gui/Drawing/SixelSupportResult.cs | 27 ++++++++++++++++++++ UICatalog/Scenarios/Images.cs | 14 +++++----- 3 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 Terminal.Gui/Drawing/SixelSupportResult.cs diff --git a/Terminal.Gui/Drawing/SixelSupportDetector.cs b/Terminal.Gui/Drawing/SixelSupportDetector.cs index 48bc01849..54b7cd5c0 100644 --- a/Terminal.Gui/Drawing/SixelSupportDetector.cs +++ b/Terminal.Gui/Drawing/SixelSupportDetector.cs @@ -9,9 +9,9 @@ namespace Terminal.Gui; /// public class SixelSupportDetector { - public SixelSupport Detect () + public SixelSupportResult Detect () { - var result = new SixelSupport (); + var result = new SixelSupportResult (); result.IsSupported = AnsiEscapeSequenceRequest.TryExecuteAnsiRequest (EscSeqUtils.CSI_SendDeviceAttributes, out AnsiEscapeSequenceResponse darResponse) @@ -77,25 +77,4 @@ public class SixelSupportDetector return result; } -} - -public class SixelSupport -{ - /// - /// Whether the current driver supports sixel graphic format. - /// Defaults to false. - /// - public bool IsSupported { get; set; } - - /// - /// The number of pixels of sixel that corresponds to each Col () - /// and each Row (. Defaults to 10x20. - /// - public Size Resolution { get; set; } = new (10, 20); - - /// - /// The maximum number of colors that can be included in a sixel image. Defaults - /// to 256. - /// - public int MaxPaletteColors { get; set; } = 256; -} +} \ No newline at end of file diff --git a/Terminal.Gui/Drawing/SixelSupportResult.cs b/Terminal.Gui/Drawing/SixelSupportResult.cs new file mode 100644 index 000000000..d9b8eb03e --- /dev/null +++ b/Terminal.Gui/Drawing/SixelSupportResult.cs @@ -0,0 +1,27 @@ +namespace Terminal.Gui; + +/// +/// Describes the discovered state of sixel support and ancillary information +/// e.g. . You can use +/// to discover this information. +/// +public class SixelSupportResult +{ + /// + /// Whether the current driver supports sixel graphic format. + /// Defaults to false. + /// + public bool IsSupported { get; set; } + + /// + /// The number of pixels of sixel that corresponds to each Col () + /// and each Row (. Defaults to 10x20. + /// + public Size Resolution { get; set; } = new (10, 20); + + /// + /// The maximum number of colors that can be included in a sixel image. Defaults + /// to 256. + /// + public int MaxPaletteColors { get; set; } = 256; +} diff --git a/UICatalog/Scenarios/Images.cs b/UICatalog/Scenarios/Images.cs index 14bdf24dd..8d1fa1332 100644 --- a/UICatalog/Scenarios/Images.cs +++ b/UICatalog/Scenarios/Images.cs @@ -61,14 +61,14 @@ public class Images : Scenario private RadioGroup _rgDistanceAlgorithm; private NumericUpDown _popularityThreshold; private SixelToRender _sixelImage; - private SixelSupport _sixelSupport; + private SixelSupportResult _sixelSupportResult; public override void Main () { var sixelSupportDetector = new SixelSupportDetector (); - _sixelSupport = sixelSupportDetector.Detect (); + _sixelSupportResult = sixelSupportDetector.Detect (); - ConsoleDriver.SupportsSixel = _sixelSupport.IsSupported; + ConsoleDriver.SupportsSixel = _sixelSupportResult.IsSupported; Application.Init (); _win = new() { Title = $"{Application.QuitKey} to Quit - Scenario: {GetName ()}" }; @@ -166,7 +166,7 @@ public class Images : Scenario _fire = new DoomFire (_win.Frame.Width * _pxX.Value, _win.Frame.Height * _pxY.Value); _fireEncoder = new SixelEncoder (); - _fireEncoder.Quantizer.MaxColors = Math.Min (_fireEncoder.Quantizer.MaxColors, _sixelSupport.MaxPaletteColors); + _fireEncoder.Quantizer.MaxColors = Math.Min (_fireEncoder.Quantizer.MaxColors, _sixelSupportResult.MaxPaletteColors); _fireEncoder.Quantizer.PaletteBuildingAlgorithm = new ConstPalette (_fire.Palette); _fireFrameCounter = 0; @@ -344,7 +344,7 @@ public class Images : Scenario { X = Pos.Right (lblPxX), Y = Pos.Bottom (btnStartFire) + 1, - Value = _sixelSupport.Resolution.Width + Value = _sixelSupportResult.Resolution.Width }; var lblPxY = new Label @@ -358,7 +358,7 @@ public class Images : Scenario { X = Pos.Right (lblPxY), Y = Pos.Bottom (_pxX), - Value = _sixelSupport.Resolution.Height + Value = _sixelSupportResult.Resolution.Height }; var l1 = new Label () @@ -507,7 +507,7 @@ public class Images : Scenario ) { var encoder = new SixelEncoder (); - encoder.Quantizer.MaxColors = Math.Min (encoder.Quantizer.MaxColors, _sixelSupport.MaxPaletteColors); + encoder.Quantizer.MaxColors = Math.Min (encoder.Quantizer.MaxColors, _sixelSupportResult.MaxPaletteColors); encoder.Quantizer.PaletteBuildingAlgorithm = GetPaletteBuilder (); encoder.Quantizer.DistanceAlgorithm = GetDistanceAlgorithm ();