mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-13 19:19:10 +00:00
Add support for svgaplayerweb in SVGA viewer
This commit is contained in:
@@ -19,7 +19,7 @@ using System;
|
||||
|
||||
namespace QuickLook.Plugin.ImageViewer.Webview;
|
||||
|
||||
internal interface IWebImagePanel : IDisposable
|
||||
public interface IWebImagePanel : IDisposable
|
||||
{
|
||||
public void Preview(string path);
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ using System.Windows;
|
||||
|
||||
namespace QuickLook.Plugin.ImageViewer.Webview;
|
||||
|
||||
internal interface IWebMetaProvider
|
||||
public interface IWebMetaProvider
|
||||
{
|
||||
public Size GetSize();
|
||||
}
|
||||
|
@@ -20,7 +20,9 @@ using QuickLook.Plugin.ImageViewer.Webview.Svg;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace QuickLook.Plugin.ImageViewer.Webview.Lottie;
|
||||
|
||||
@@ -76,3 +78,15 @@ public class LottieImagePanel : SvgImagePanel
|
||||
base.WebView_WebResourceRequested(sender, args);
|
||||
}
|
||||
}
|
||||
|
||||
[ClassInterface(ClassInterfaceType.AutoDual)]
|
||||
[ComVisible(true)]
|
||||
public sealed class ScriptHandler(string path)
|
||||
{
|
||||
public string Path { get; } = path;
|
||||
|
||||
public async Task<string> GetPath()
|
||||
{
|
||||
return await Task.FromResult(new Uri(Path).AbsolutePath);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -99,7 +99,7 @@ internal static class WebHandler
|
||||
ipWeb = ext switch
|
||||
{
|
||||
".svg" => new SvgImagePanel(),
|
||||
".svga" => new SvgaImagePanel(),
|
||||
".svga" => new SvgaImagePanel(metaWeb),
|
||||
".lottie" or ".json" => new LottieImagePanel(),
|
||||
_ => throw new NotSupportedException($"Unsupported file type: {ext}")
|
||||
};
|
||||
|
Reference in New Issue
Block a user