From b5e4f4d3cacce1137588878e62cef9a023ea9da7 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 9 Sep 2018 11:28:57 +0100 Subject: [PATCH] Show media type logo in GUI's media info. --- .../.idea/contentModel.xml | 13 ++++ .../Assets/Logos/Media/CDROM.png | Bin 0 -> 4627 bytes .../Assets/Logos/Media/CDROM.svg | 20 ++++++ DiscImageChef.Gui/Controls/SvgImageView.cs | 62 ++++++++++++++++++ DiscImageChef.Gui/DiscImageChef.Gui.csproj | 9 +++ DiscImageChef.Gui/Panels/pnlScsiInfo.xeto | 8 ++- DiscImageChef.Gui/Panels/pnlScsiInfo.xeto.cs | 22 +++++++ DiscImageChef.Gui/ResourceHandler.cs | 10 +++ 8 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 DiscImageChef.Gui/Assets/Logos/Media/CDROM.png create mode 100644 DiscImageChef.Gui/Assets/Logos/Media/CDROM.svg create mode 100644 DiscImageChef.Gui/Controls/SvgImageView.cs create mode 100644 DiscImageChef.Gui/ResourceHandler.cs diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index 525c60228..a9ffc5335 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -52,6 +52,7 @@ + @@ -1303,7 +1304,18 @@ + + + + + + + + + + + @@ -1323,6 +1335,7 @@ + diff --git a/DiscImageChef.Gui/Assets/Logos/Media/CDROM.png b/DiscImageChef.Gui/Assets/Logos/Media/CDROM.png new file mode 100644 index 0000000000000000000000000000000000000000..ca29d8786ed4ead8200c0f1a8484b09e81c8e51b GIT binary patch literal 4627 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 A + + + + + + + + + + + + + + + + + + + diff --git a/DiscImageChef.Gui/Controls/SvgImageView.cs b/DiscImageChef.Gui/Controls/SvgImageView.cs new file mode 100644 index 000000000..0394f6ab4 --- /dev/null +++ b/DiscImageChef.Gui/Controls/SvgImageView.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using Eto.Drawing; +using Eto.Forms; + +namespace DiscImageChef.Gui.Controls +{ + public class SvgImageView : ImageView + { + Stream svgStream; + + public new Image Image => base.Image; + + byte[] cachedRender; + + public Stream SvgStream + { + get => svgStream; + set + { + if(svgStream == value) return; + + svgStream = value; + Redraw(); + } + } + + void Redraw() + { + if(Width == -1 || Height == -1 || svgStream== null) return; + + svgStream.Position = 0; + + // TODO: Upstream library not working property: https://github.com/mono/SkiaSharp.Extended/issues/51 + + /*SKSvg svg = new SKSvg(); + SKEncodedImageFormat skFormat = SKEncodedImageFormat.Png; + svg.Load(svgStream); + //SKRect svgSize = svg.Picture.CullRect; + float canvasMin = Math.Min(Width, Height); + float svgMax = Math.Max(svg.Picture.CullRect.Width, svg.Picture.CullRect.Height); + float scale = canvasMin / svgMax; + var matrix = SKMatrix.MakeScale(scale, scale); + SKBitmap bitmap = new SKBitmap((int)Width, (int)Height); + SKCanvas canvas = new SKCanvas(bitmap); + canvas.DrawPicture(svg.Picture, ref matrix); + canvas.Flush(); + SKImage image = SKImage.FromBitmap(bitmap); + SKData data = image.Encode(skFormat, 100); + MemoryStream outMs = new MemoryStream(); + data.SaveTo(outMs); + cachedRender = outMs.ToArray(); + base.Image = new Bitmap(cachedRender); + */ + } + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + Redraw(); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Gui/DiscImageChef.Gui.csproj b/DiscImageChef.Gui/DiscImageChef.Gui.csproj index 5b6de58f1..069825c10 100644 --- a/DiscImageChef.Gui/DiscImageChef.Gui.csproj +++ b/DiscImageChef.Gui/DiscImageChef.Gui.csproj @@ -27,4 +27,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto b/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto index 2a05de2cc..3da0708b0 100644 --- a/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto +++ b/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto @@ -31,11 +31,17 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ --> - + + + + + diff --git a/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto.cs b/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto.cs index 65591da4d..b174b22ad 100644 --- a/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto.cs +++ b/DiscImageChef.Gui/Panels/pnlScsiInfo.xeto.cs @@ -42,6 +42,8 @@ using DiscImageChef.Decoders.DVD; using DiscImageChef.Decoders.SCSI.MMC; using DiscImageChef.Decoders.SCSI.SSC; using DiscImageChef.Decoders.Xbox; +using DiscImageChef.Gui.Controls; +using Eto.Drawing; using Eto.Forms; using Eto.Serialization.Xaml; using BCA = DiscImageChef.Decoders.Bluray.BCA; @@ -62,6 +64,24 @@ namespace DiscImageChef.Gui.Panels this.scsiInfo = scsiInfo; + + Stream logo = ResourceHandler.GetResourceStream($"DiscImageChef.Gui.Assets.Logos.Media.{scsiInfo.MediaType}.svg"); +/* if(logo != null) + { + svgMediaLogo.SvgStream = logo; + svgMediaLogo.Visible = true; + } + else + {*/ + logo = + ResourceHandler.GetResourceStream($"DiscImageChef.Gui.Assets.Logos.Media.{scsiInfo.MediaType}.png"); + if(logo != null) + { + imgMediaLogo.Image = new Bitmap(logo); + imgMediaLogo.Visible = true; + } + //} + switch(this.scsiInfo.MediaType) { case MediaType.HDDVDROM: @@ -794,6 +814,8 @@ namespace DiscImageChef.Gui.Panels Button btnSaveBlurayRawDfl; Button btnSaveBlurayPac; Button btnDump; + ImageView imgMediaLogo; + SvgImageView svgMediaLogo; #pragma warning restore 169 #pragma warning restore 649 #endregion diff --git a/DiscImageChef.Gui/ResourceHandler.cs b/DiscImageChef.Gui/ResourceHandler.cs new file mode 100644 index 000000000..8996bac87 --- /dev/null +++ b/DiscImageChef.Gui/ResourceHandler.cs @@ -0,0 +1,10 @@ +using System.IO; +using System.Reflection; + +namespace DiscImageChef.Gui +{ + static class ResourceHandler + { + internal static Stream GetResourceStream(string resourcePath) => Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcePath); + } +} \ No newline at end of file