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

@@ -9,12 +9,13 @@
*
* Features:
* - Loads and plays SVGA animation files
* - Uses SVGA.js library for parsing and playback
* - Uses svga or svgaplayerweb library for parsing and playback
* - Automatically starts playback after loading
* - Handles asynchronous loading and mounting of SVGA files
*/
class SvgaViewer {
constructor() {
this.useLite = false; // Use SVGA Lite version if true
}
/**
@@ -23,15 +24,32 @@ class SvgaViewer {
*/
async play() {
const path = await chrome.webview.hostObjects.external.GetPath();
const parser = new SVGA.Parser(); // Only SVGA 2.x supported
// Because the path is a local file, we need to convert it to a URL format
parser.load('https://' + path).then(svga => {
const player = new SVGA.Player(document.getElementById('canvas'));
player.mount(svga).then(() => {
player.start();
if (this.useLite) {
const parser = new SVGA.Parser(); // Only SVGA 2.x supported
// Because the path is a local file, we need to convert it to a URL format
parser.load('https://' + path).then(svga => {
const player = new SVGA.Player(document.getElementById('canvas'));
player.mount(svga).then(() => {
player.start();
});
});
});
} else {
const size = JSON.parse(await chrome.webview.hostObjects.external.GetSize());
const parser = new SVGA.Parser('#canvas'); // Only SVGA 2.x supported
const player = new SVGA.Player('#canvas');
const canvas = document.getElementById('canvas');
canvas.width = size.width;
canvas.height = size.height;
// Because the path is a local file, we need to convert it to a URL format
parser.load('https://' + path, function (videoItem) {
player.setVideoItem(videoItem);
player.startAnimation();
});
}
}
}