Simplified the logic in GetNearestLrc by using clearer LINQ queries and reducing redundant operations. The method now directly finds the latest timestamp not greater than the specified time, merges duplicate timestamps if necessary, and returns the appropriate LrcLine.
Changed all Plugin classes and PluginManager to be sealed, preventing further inheritance. This improves code safety and clarifies the intended usage of these classes.
Bumped bblanchon.PDFiumV8.Win32 from 145.0.7568 to 145.0.7592 in the PDF viewer project and Melanchall.DryWetMidi from 8.0.2 to 8.0.3 in the video viewer project to include latest fixes and improvements.
Replaced hardcoded icon strings with FontSymbols constants in MoreMenu and converter classes for consistency and maintainability. Removed duplicate FontSymbols class from MidiPlayer and updated usages to reference QuickLook.Common.Controls.
This commit updates various NuGet package references to newer versions across multiple QuickLook plugin and main project .csproj files. These updates include dependencies such as WixToolset.Dtf.WindowsInstaller, UTF.Unknown, FreeTypeSharp, Microsoft.Web.WebView2, Magick.NET-Q8-AnyCPU, Google.Protobuf, MsgReader, HelixToolkit, bblanchon.PDFiumV8.Win32, Melanchall.DryWetMidi, WPF-UI.Violeta, and Lib.Harmony, ensuring the projects use the latest compatible releases.
* Replace supported image extension list with image detection via MagickImageInfo.
* Change ImageViewer priority to -4.
Change VideoViewer priority to -3 and detect audio/video via MediaInfo instead of file extensions.
* Make mediaInfo a class static and initialize once.
Add some notes about MediaInfo Open and Close.
* Remove try/catch from Prepare and let it be handled in caller.
If there was an exception due to MediaInfo it would have already occurred in CanHandle.
* Upgrade ImageMagick to latest
* Only check extension for well known image and animated image types.
For other image formats, let ImageMagick try to detect by file content.
Upgrade to latest Magick.NET
Co-authored-by: Frank Becker <frank.becker@thoughtexchange.com>