Add support for svgaplayerweb in SVGA viewer

This commit is contained in:
ema
2025-07-05 11:24:02 +08:00
parent efba55b8d5
commit f6ca3a62e2
9 changed files with 77 additions and 14 deletions

View File

@@ -15,21 +15,48 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using Google.Protobuf.Compiler;
using QuickLook.Plugin.ImageViewer.Webview.Svg;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows;
namespace QuickLook.Plugin.ImageViewer.Webview.Svga;
public class SvgaImagePanel : SvgImagePanel
public class SvgaImagePanel(IWebMetaProvider metaWeb) : SvgImagePanel()
{
private readonly IWebMetaProvider _metaWeb = metaWeb;
public override void Preview(string path)
{
FallbackPath = Path.GetDirectoryName(path);
ObjectForScripting ??= new ScriptHandler(path);
ObjectForScripting ??= new ScriptHandler(path, _metaWeb);
_homePage = _resources["/svga2html.html"];
NavigateToUri(new Uri("file://quicklook/"));
}
}
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public sealed class ScriptHandler(string path, IWebMetaProvider metaWeb)
{
public string Path { get; } = path;
public IWebMetaProvider MetaWeb { get; } = metaWeb;
public async Task<string> GetPath()
{
return await Task.FromResult(new Uri(Path).AbsolutePath);
}
public async Task<string> GetSize()
{
var size = MetaWeb.GetSize();
string jsonString = JsonSerializer.Serialize(new { width = size.Width, height = size.Height });
return await Task.FromResult(jsonString);
}
}