// 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));
}
}
}