// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Drawing; using System.IO; namespace Microsoft.PowerToys.FilePreviewCommon { /// /// Represents a gcode thumbnail. /// public class GcodeThumbnail { /// /// Gets the gcode thumbnail image format. /// public GcodeThumbnailFormat Format { get; } /// /// Gets the gcode thumbnail image data in base64. /// public string Data { get; } /// /// Initializes a new instance of the class. /// /// The gcode thumbnail image format. /// The gcode thumbnail image data in base64. public GcodeThumbnail(GcodeThumbnailFormat format, string data) { Format = format; Data = data; } /// /// Gets a representing this thumbnail. /// /// A representing this thumbnail. public Bitmap? GetBitmap() { switch (Format) { case GcodeThumbnailFormat.JPG: case GcodeThumbnailFormat.PNG: return BitmapFromBase64String(); case GcodeThumbnailFormat.QOI: return BitmapFromQoiBase64String(); default: return null; } } private Bitmap BitmapFromBase64String() { var bitmapBytes = Convert.FromBase64String(Data); return new Bitmap(new MemoryStream(bitmapBytes)); } private Bitmap BitmapFromQoiBase64String() { var bitmapBytes = Convert.FromBase64String(Data); return QoiImage.FromStream(new MemoryStream(bitmapBytes)); } } }