From 65bb318ccc4f2363d2dfa69de910ca6d8ab0dcee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com>
Date: Tue, 8 Aug 2023 08:51:17 +0800
Subject: [PATCH] fix: allowed svg rendering.
---
RotationSolver.Basic/Data/IconSet.cs | 20 +++++++++++++++++++
.../RotationSolver.Basic.csproj | 1 +
RotationSolver/RotationSolverPlugin.cs | 1 +
3 files changed, 22 insertions(+)
diff --git a/RotationSolver.Basic/Data/IconSet.cs b/RotationSolver.Basic/Data/IconSet.cs
index ef7055da5..03853dbfc 100644
--- a/RotationSolver.Basic/Data/IconSet.cs
+++ b/RotationSolver.Basic/Data/IconSet.cs
@@ -1,5 +1,7 @@
using ECommons.ImGuiMethods;
using ImGuiScene;
+using Svg;
+using System.Drawing.Imaging;
namespace RotationSolver.Basic.Data;
@@ -74,6 +76,24 @@ public enum IconType : byte
///
public static class IconSet
{
+ ///
+ /// Init for svg rendering.
+ ///
+ public static void InIt()
+ {
+ ThreadLoadImageHandler.AddConversionToBitmap(SvgToPng);
+ }
+
+ private static byte[] SvgToPng(byte[] data)
+ {
+ using var stream = new MemoryStream(data);
+ using var outStream = new MemoryStream();
+ var svgDocument = SvgDocument.Open(stream);
+ using var bitmap = svgDocument.Draw();
+ bitmap.Save(outStream, ImageFormat.Png);
+ return outStream.ToArray();
+ }
+
///
/// Get Texture form texture.
///
diff --git a/RotationSolver.Basic/RotationSolver.Basic.csproj b/RotationSolver.Basic/RotationSolver.Basic.csproj
index bad116ae5..ccc7a0216 100644
--- a/RotationSolver.Basic/RotationSolver.Basic.csproj
+++ b/RotationSolver.Basic/RotationSolver.Basic.csproj
@@ -41,6 +41,7 @@
True
\
+
True
\
diff --git a/RotationSolver/RotationSolverPlugin.cs b/RotationSolver/RotationSolverPlugin.cs
index 68ceb3d80..4e651dace 100644
--- a/RotationSolver/RotationSolverPlugin.cs
+++ b/RotationSolver/RotationSolverPlugin.cs
@@ -36,6 +36,7 @@ public RotationSolverPlugin(DalamudPluginInterface pluginInterface)
{
ECommonsMain.Init(pluginInterface, this, Module.DalamudReflector, Module.ObjectFunctions);
ThreadLoadImageHandler.TryGetIconTextureWrap(0, false, out _);
+ IconSet.InIt();
//Init!
Clipper.InflatePaths(new PathsD(new PathD[] { Clipper.MakePath(new double[] {0, 0, 1, 1 }) }), 0, JoinType.Round, EndType.Joined);