diff --git a/QuickLook.Native/QuickLook.Native32/QuickLook.Native32.vcxproj b/QuickLook.Native/QuickLook.Native32/QuickLook.Native32.vcxproj index 7a38d108b..06cd3304b 100644 --- a/QuickLook.Native/QuickLook.Native32/QuickLook.Native32.vcxproj +++ b/QuickLook.Native/QuickLook.Native32/QuickLook.Native32.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -25,7 +41,33 @@ v145 Unicode + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + true + v143 + Unicode + + DynamicLibrary + false + v145 + true + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + DynamicLibrary false v143 @@ -40,18 +82,50 @@ + + + + + + + + + + + + true $(SolutionDir)Build\$(Configuration)\ + + true + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + + + true + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + false $(SolutionDir)Build\$(Configuration)\ + + false + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + + + false + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + Use @@ -64,6 +138,30 @@ Windows + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebug + + + Windows + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDebug + + + Windows + + Level3 @@ -81,6 +179,40 @@ true + + + Level3 + Use + Full + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions) + Speed + MultiThreaded + + + Windows + true + true + + + + + Level3 + Use + Full + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions) + Speed + MultiThreaded + + + Windows + true + true + + @@ -97,11 +229,23 @@ false + false + false + + + + false + false + false + + + + @@ -111,7 +255,11 @@ Create + Create + Create Create + Create + Create diff --git a/QuickLook.Native/QuickLook.Native64/QuickLook.Native64.vcxproj b/QuickLook.Native/QuickLook.Native64/QuickLook.Native64.vcxproj index 468ef75d6..bf07b22bd 100644 --- a/QuickLook.Native/QuickLook.Native64/QuickLook.Native64.vcxproj +++ b/QuickLook.Native/QuickLook.Native64/QuickLook.Native64.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release x64 @@ -15,11 +31,23 @@ false + false + false false + false + false + + + + + + + + @@ -28,7 +56,11 @@ Create + Create + Create Create + Create + Create @@ -46,7 +78,33 @@ v145 Unicode + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + true + v143 + Unicode + + DynamicLibrary + false + v145 + true + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + DynamicLibrary false v143 @@ -61,17 +119,47 @@ + + + + + + + + + + + + $(SolutionDir)Build\$(Configuration)\ .dll + + .dll + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + + + .dll + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)Build\$(Configuration)\ + + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + Level3 @@ -81,6 +169,24 @@ WIN64;%(PreprocessorDefinitions) + + + Level3 + Disabled + true + MultiThreadedDebug + WIN64;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + MultiThreadedDebug + WIN64;%(PreprocessorDefinitions) + + Level3 @@ -96,6 +202,36 @@ true + + + Level3 + MaxSpeed + true + true + true + MultiThreaded + WIN64;%(PreprocessorDefinitions) + + + true + true + + + + + Level3 + MaxSpeed + true + true + true + MultiThreaded + WIN64;%(PreprocessorDefinitions) + + + true + true + + diff --git a/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj b/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj new file mode 100644 index 000000000..926c93ed5 --- /dev/null +++ b/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj @@ -0,0 +1,172 @@ + + + + + Debug + ARM64 + + + Debug + x64 + + + Release + ARM64 + + + Release + x64 + + + + + + + false + false + false + false + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + 15.0 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8} + QuickLookNative64 + 10.0 + QuickLook.NativeArm64 + + + + DynamicLibrary + true + v145 + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v145 + true + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)Build\$(Configuration)\ + .dll + + + .dll + $(SolutionDir)Build\$(Configuration)\ + + + $(Configuration)\ + + + $(SolutionDir)Build\$(Configuration)\ + + + $(SolutionDir)Build\$(Configuration)\ + $(Configuration)\ + + + + Level3 + Disabled + true + MultiThreadedDebug + WIN64;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + MultiThreadedDebug + WIN64;%(PreprocessorDefinitions) + + + + + Level3 + MaxSpeed + true + true + true + MultiThreaded + WIN64;%(PreprocessorDefinitions) + + + true + true + + + + + Level3 + MaxSpeed + true + true + true + MultiThreaded + WIN64;%(PreprocessorDefinitions) + + + true + true + + + + + + \ No newline at end of file diff --git a/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj.filters b/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj.filters new file mode 100644 index 000000000..273829842 --- /dev/null +++ b/QuickLook.Native/QuickLook.NativeArm64/QuickLook.NativeArm64.vcxproj.filters @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/QuickLook.Plugin.AppViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/QuickLook.Plugin.AppViewer.csproj index 17abd0057..ad0bc621f 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/QuickLook.Plugin.AppViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/QuickLook.Plugin.AppViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.AppViewer QuickLook.Plugin.AppViewer 512 @@ -14,6 +14,8 @@ false MinimumRecommendedRules.ruleset {00D8F3B1-5BE9-4AB8-AE68-16374001887A} + AnyCPU;ARM64 + AnyCPU @@ -25,6 +27,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.AppViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +44,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.AppViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/QuickLook.Plugin.ArchiveViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/QuickLook.Plugin.ArchiveViewer.csproj index 78f0041ba..32e8e1c0d 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/QuickLook.Plugin.ArchiveViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/QuickLook.Plugin.ArchiveViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.ArchiveViewer QuickLook.Plugin.ArchiveViewer 512 @@ -17,6 +17,7 @@ false MinimumRecommendedRules.ruleset {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C} + AnyCPU;ARM64 @@ -43,6 +44,14 @@ AnyCPU + + true + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.ArchiveViewer\ + DEBUG;TRACE + full + AnyCPU + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ArchiveViewer\ TRACE @@ -51,6 +60,14 @@ AnyCPU + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ArchiveViewer\ + TRACE + true + pdbonly + AnyCPU + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.CLSIDViewer/QuickLook.Plugin.CLSIDViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.CLSIDViewer/QuickLook.Plugin.CLSIDViewer.csproj index 679617a4f..22eae21bb 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.CLSIDViewer/QuickLook.Plugin.CLSIDViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.CLSIDViewer/QuickLook.Plugin.CLSIDViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.CLSIDViewer QuickLook.Plugin.CLSIDViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.CLSIDViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.CLSIDViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.CertViewer/QuickLook.Plugin.CertViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.CertViewer/QuickLook.Plugin.CertViewer.csproj index c1f57ecaf..f79529663 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.CertViewer/QuickLook.Plugin.CertViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.CertViewer/QuickLook.Plugin.CertViewer.csproj @@ -1,8 +1,8 @@ - + Library - net462 + net481 QuickLook.Plugin.CertViewer QuickLook.Plugin.CertViewer 512 diff --git a/QuickLook.Plugin/QuickLook.Plugin.CsvViewer/QuickLook.Plugin.CsvViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.CsvViewer/QuickLook.Plugin.CsvViewer.csproj index 13f7e4032..8ccb27609 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.CsvViewer/QuickLook.Plugin.CsvViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.CsvViewer/QuickLook.Plugin.CsvViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.CsvViewer QuickLook.Plugin.CsvViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {863ECAAC-18D9-4256-A27D-0F308089FB47} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.CsvViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.CsvViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.ELFViewer/QuickLook.Plugin.ELFViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.ELFViewer/QuickLook.Plugin.ELFViewer.csproj index 2c7783d62..0c3e4a4b6 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ELFViewer/QuickLook.Plugin.ELFViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.ELFViewer/QuickLook.Plugin.ELFViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.ELFViewer QuickLook.Plugin.ELFViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {63C00175-0FF3-42C7-8621-2F1959F26064} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.ELFViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ELFViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.FontViewer/QuickLook.Plugin.FontViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.FontViewer/QuickLook.Plugin.FontViewer.csproj index 216bed291..4d5c2e562 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.FontViewer/QuickLook.Plugin.FontViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.FontViewer/QuickLook.Plugin.FontViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.FontViewer QuickLook.Plugin.FontViewer 512 @@ -15,6 +15,7 @@ MinimumRecommendedRules.ruleset {CE40160D-5E3C-4A41-9BDA-C4F414C174EB} true + AnyCPU;ARM64 @@ -26,6 +27,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.FontViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -34,6 +44,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.FontViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.HelixViewer/QuickLook.Plugin.HelixViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.HelixViewer/QuickLook.Plugin.HelixViewer.csproj index cd5c85ff8..78cd88649 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.HelixViewer/QuickLook.Plugin.HelixViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.HelixViewer/QuickLook.Plugin.HelixViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.HelixViewer QuickLook.Plugin.HelixViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {311E6E78-3A5B-4E51-802A-5755BD5F9F97} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.HelixViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.HelixViewer\ + TRACE + prompt + + true full @@ -52,8 +70,8 @@ - - + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/QuickLook.Plugin.HtmlViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/QuickLook.Plugin.HtmlViewer.csproj index d31476e7b..61f2747f7 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/QuickLook.Plugin.HtmlViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/QuickLook.Plugin.HtmlViewer.csproj @@ -2,7 +2,7 @@ library - net462 + net481 QuickLook.Plugin.HtmlViewer QuickLook.Plugin.HtmlViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC} + AnyCPU;ARM64 @@ -43,6 +44,15 @@ prompt + + true + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.HtmlViewer\ + DEBUG;TRACE + full + AnyCPU + prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.HtmlViewer\ TRACE @@ -52,6 +62,15 @@ prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.HtmlViewer\ + TRACE + true + pdbonly + AnyCPU + prompt + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj index 2f6dc3f25..db999a57a 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.ImageViewer QuickLook.Plugin.ImageViewer 512 @@ -16,6 +16,8 @@ false MinimumRecommendedRules.ruleset {FE5A5111-9607-4721-A7BE-422754002ED8} + AnyCPU;ARM64 + ARM64 @@ -45,6 +47,15 @@ prompt + + true + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.ImageViewer\ + DEBUG;TRACE + full + AnyCPU + prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ImageViewer\ TRACE @@ -54,9 +65,18 @@ prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ImageViewer\ + TRACE + true + pdbonly + AnyCPU + prompt + + - - + + all @@ -110,13 +130,8 @@ - - - - - diff --git a/QuickLook.Plugin/QuickLook.Plugin.MailViewer/QuickLook.Plugin.MailViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.MailViewer/QuickLook.Plugin.MailViewer.csproj index e2bac743d..6aad9cd12 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.MailViewer/QuickLook.Plugin.MailViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.MailViewer/QuickLook.Plugin.MailViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.MailViewer QuickLook.Plugin.MailViewer 512 @@ -15,6 +15,7 @@ false MinimumRecommendedRules.ruleset {45E94893-3076-4A8E-8969-6955B6340739} + AnyCPU;ARM64 @@ -26,6 +27,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.MailViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -34,6 +44,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.MailViewer\ + TRACE + prompt + + true ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.MailViewer\ diff --git a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/QuickLook.Plugin.MarkdownViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/QuickLook.Plugin.MarkdownViewer.csproj index ce6e0a792..f4e6c10f5 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/QuickLook.Plugin.MarkdownViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/QuickLook.Plugin.MarkdownViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.MarkdownViewer QuickLook.Plugin.MarkdownViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0} + AnyCPU;ARM64 @@ -48,6 +49,17 @@ MinimumRecommendedRules.ruleset + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.MarkdownViewer\ + DEBUG;TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + pdbonly true @@ -58,6 +70,16 @@ MinimumRecommendedRules.ruleset + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.MarkdownViewer\ + TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.MediaInfoViewer/QuickLook.Plugin.MediaInfoViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.MediaInfoViewer/QuickLook.Plugin.MediaInfoViewer.csproj index 0bd094d2d..ca1d95eb2 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.MediaInfoViewer/QuickLook.Plugin.MediaInfoViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.MediaInfoViewer/QuickLook.Plugin.MediaInfoViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.MediaInfoViewer QuickLook.Plugin.MediaInfoViewer 512 @@ -14,6 +14,8 @@ false MinimumRecommendedRules.ruleset {B0054A16-472E-44AC-BA40-349303E524FF} + AnyCPU;ARM64 + ARM64 @@ -25,6 +27,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.MediaInfoViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +44,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.MediaInfoViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.OfficeViewer/QuickLook.Plugin.OfficeViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.OfficeViewer/QuickLook.Plugin.OfficeViewer.csproj index 2450202f6..45b337fc2 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.OfficeViewer/QuickLook.Plugin.OfficeViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.OfficeViewer/QuickLook.Plugin.OfficeViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.OfficeViewer QuickLook.Plugin.OfficeViewer 512 @@ -16,6 +16,7 @@ MinimumRecommendedRules.ruleset {9DD27AB3-C99B-4103-8BC8-B220EC399635} {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + AnyCPU;ARM64 @@ -27,6 +28,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.OfficeViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -35,6 +45,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.OfficeViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/QuickLook.Plugin.PdfViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/QuickLook.Plugin.PdfViewer.csproj index a4184349a..65cc0c071 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/QuickLook.Plugin.PdfViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.PDFViewer/QuickLook.Plugin.PdfViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.PDFViewer QuickLook.Plugin.PDFViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D} + AnyCPU;ARM64 @@ -51,6 +52,18 @@ true + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.PDFViewer\ + DEBUG;TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + + pdbonly true @@ -62,6 +75,17 @@ true + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.PDFViewer\ + TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + + @@ -83,9 +107,11 @@ - - + + + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.PEViewer/QuickLook.Plugin.PEViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.PEViewer/QuickLook.Plugin.PEViewer.csproj index 7baee5653..018e1e3ac 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.PEViewer/QuickLook.Plugin.PEViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.PEViewer/QuickLook.Plugin.PEViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.PEViewer QuickLook.Plugin.PEViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.PEViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.PEViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.PluginInstaller/QuickLook.Plugin.PluginInstaller.csproj b/QuickLook.Plugin/QuickLook.Plugin.PluginInstaller/QuickLook.Plugin.PluginInstaller.csproj index 4023d262b..0b58d8c4d 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.PluginInstaller/QuickLook.Plugin.PluginInstaller.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.PluginInstaller/QuickLook.Plugin.PluginInstaller.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.PluginInstaller QuickLook.Plugin.PluginInstaller 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA} + AnyCPU;ARM64 @@ -48,6 +49,17 @@ MinimumRecommendedRules.ruleset + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.PluginInstaller\ + DEBUG;TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + pdbonly true @@ -58,6 +70,16 @@ MinimumRecommendedRules.ruleset + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.PluginInstaller\ + TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.MoreMenu.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.MoreMenu.cs index 7c04b3866..358349fde 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.MoreMenu.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.MoreMenu.cs @@ -30,7 +30,14 @@ public sealed partial class Plugin public IEnumerable GetMenuItems() { string translationFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Translations.config"); - string extension = Path.GetExtension(_currentPath).ToLower(); + string extension = ""; + try + { + extension = Path.GetExtension(_currentPath).ToLower(); + } catch (System.Exception) + { + } + var reopen = extension switch { diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/QuickLook.Plugin.TextViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/QuickLook.Plugin.TextViewer.csproj index c6f44daab..29ac99380 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/QuickLook.Plugin.TextViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/QuickLook.Plugin.TextViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.TextViewer QuickLook.Plugin.TextViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {AE041682-E3A1-44F6-8BB4-916A98D89FBE} + AnyCPU;ARM64 @@ -48,6 +49,17 @@ MinimumRecommendedRules.ruleset + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.TextViewer\ + DEBUG;TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + pdbonly true @@ -58,6 +70,16 @@ MinimumRecommendedRules.ruleset + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.TextViewer\ + TRACE + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.ThumbnailViewer/QuickLook.Plugin.ThumbnailViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.ThumbnailViewer/QuickLook.Plugin.ThumbnailViewer.csproj index 37eb90242..714ecfc1f 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ThumbnailViewer/QuickLook.Plugin.ThumbnailViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.ThumbnailViewer/QuickLook.Plugin.ThumbnailViewer.csproj @@ -2,7 +2,7 @@ Library - net462 + net481 QuickLook.Plugin.ThumbnailViewer QuickLook.Plugin.ThumbnailViewer 512 @@ -14,6 +14,7 @@ false MinimumRecommendedRules.ruleset {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F} + AnyCPU;ARM64 @@ -25,6 +26,15 @@ prompt + + true + full + false + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.ThumbnailViewer\ + DEBUG;TRACE + prompt + + pdbonly true @@ -33,6 +43,14 @@ prompt + + pdbonly + true + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.ThumbnailViewer\ + TRACE + prompt + + true full diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs index 62f4f4461..0269071b0 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs @@ -88,3 +88,47 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu throw new NotImplementedException(); } } + +public sealed class TimeToLongConverter : DependencyObject, IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is long v) + return TimeSpan.FromTicks((long)v); + else + return TimeSpan.FromTicks(0L); + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is TimeSpan v) + return ((TimeSpan)v).Ticks; + else + return 0L; + + } +} + +public sealed class TimeToShortStringConverter : DependencyObject, IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + return "00:00"; + + var v = (TimeSpan)value; + + var s = string.Empty; + if (v.Hours > 0) + s += $"{v.Hours:D2}:"; + + s += $"{v.Minutes:D2}:{v.Seconds:D2}"; + + return s; + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/MediaInfo-arm64/MediaInfo.dll b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/MediaInfo-arm64/MediaInfo.dll new file mode 100644 index 000000000..d21e74b2d Binary files /dev/null and b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/MediaInfo-arm64/MediaInfo.dll differ diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs index cded582a6..3c12bcebc 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs @@ -22,6 +22,7 @@ using System; using System.IO; using System.Reflection; +using System.Runtime.InteropServices; using System.Windows; namespace QuickLook.Plugin.VideoViewer; @@ -31,6 +32,7 @@ public sealed class Plugin : IViewer private static MediaInfoLib _mediaInfo; private ViewerPanel _vp; + private static readonly bool isArm64 = RuntimeInformation.ProcessArchitecture == Architecture.Arm64; public int Priority => -3; @@ -38,7 +40,7 @@ static Plugin() { _mediaInfo = new MediaInfoLib(Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), - Environment.Is64BitProcess ? @"MediaInfo-x64\" : @"MediaInfo-x86\")); + isArm64 ? @"MediaInfo-arm64\" : Environment.Is64BitProcess ? @"MediaInfo-x64\" : @"MediaInfo-x86\")); _mediaInfo.Option("Cover_Data", "base64"); } @@ -128,8 +130,10 @@ public void View(string path, ContextObject context) context.ViewerContent = _vp; context.Title = $"{Path.GetFileName(path)}"; - - _vp.LoadAndPlay(path, _mediaInfo); + if (isArm64) + _vp.LoadAndPlayWPF(path, _mediaInfo); + else + _vp.LoadAndPlay(path, _mediaInfo); } public void Cleanup() diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.Designer.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.Designer.cs new file mode 100644 index 000000000..46b851634 --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 +// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// +//------------------------------------------------------------------------------ + +namespace QuickLook.Plugin.VideoViewer.Properties { + using System; + + + /// + /// Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc. + /// + // StronglyTypedResourceBuilder generó automáticamente esta clase + // a través de una herramienta como ResGen o Visual Studio. + // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen + // con la opción /str o recompile su proyecto de VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("QuickLook.Plugin.VideoViewer.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las + /// búsquedas de recursos mediante esta clase de recurso fuertemente tipado. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.resx b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.resx new file mode 100644 index 000000000..4fdb1b6af --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.Designer.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.Designer.cs new file mode 100644 index 000000000..b6d4bbf7c --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 +// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// +//------------------------------------------------------------------------------ + +namespace QuickLook.Plugin.VideoViewer.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.settings b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.settings new file mode 100644 index 000000000..049245f40 --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Properties/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj index 75e815400..35451a1d4 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj @@ -1,7 +1,7 @@  Library - net462 + net481 QuickLook.Plugin.VideoViewer QuickLook.Plugin.VideoViewer 512 @@ -15,6 +15,8 @@ MinimumRecommendedRules.ruleset {1B746D92-49A5-4A37-9D75-DCC490393290} {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + AnyCPU;ARM64 + ARM64 @@ -26,6 +28,15 @@ prompt + + true + ..\..\Build\Debug\QuickLook.Plugin\QuickLook.Plugin.VideoViewer\ + DEBUG;TRACE + full + AnyCPU + prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.VideoViewer\ TRACE @@ -35,6 +46,15 @@ prompt + + ..\..\Build\Release\QuickLook.Plugin\QuickLook.Plugin.VideoViewer\ + TRACE + true + pdbonly + AnyCPU + prompt + + @@ -198,11 +218,11 @@ $(OutDir)MediaInfo-x86\ MediaInfo-x86\MediaInfo.dll - + PreserveNewest diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.GlassLayer.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.GlassLayer.cs index 318bd3542..b202e4b86 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.GlassLayer.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.GlassLayer.cs @@ -31,6 +31,7 @@ public partial class ViewerPanel : UserControl, IDisposable, INotifyPropertyChan /// /// Load and insert the GlassLayer control to the videoControlContainer. /// + private partial void LoadAndInsertGlassLayer() { // Replace XAML with C# dynamic construction @@ -115,7 +116,7 @@ Make sure the assembly is correctly loaded and the type exists. var blurredElementSetter = new Setter((DependencyProperty)blurredElementProperty, new Binding() { - ElementName = "mediaElement" + ElementName = isArm64 ? "mediaElementWPF" : "mediaElement" }); style.Setters.Add(blurredElementSetter); @@ -131,7 +132,7 @@ Make sure the assembly is correctly loaded and the type exists. var dataTriggerSetter = new Setter((DependencyProperty)blurredElementProperty, new Binding() { - ElementName = "mediaElement" + ElementName = isArm64 ? "mediaElementWPF" : "mediaElement" }); dataTrigger.Setters.Add(dataTriggerSetter); diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml index ad404a27c..a13c2fe2e 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml @@ -12,8 +12,10 @@ - - + + + + @@ -22,6 +24,7 @@ + @@ -204,6 +207,7 @@ + - + + buttonTime.Tag = (string)buttonTime.Tag == "Time" ? "Length" : "Time"; buttonMute.Click += (_, _) => volumeSliderLayer.Visibility = Visibility.Visible; volumeSliderLayer.MouseDown += (_, _) => volumeSliderLayer.Visibility = Visibility.Collapsed; + + PreviewMouseWheel += (_, e) => ChangeVolume(e.Delta / 120d * 0.04d); + } + + private void InitializeDefault() + { + sliderProgress.Visibility = Visibility.Visible; + buttonTime.Visibility = Visibility.Visible; + + mediaElement.MediaUriPlayer.LAVFilterDirectory = (IntPtr.Size == 8 ? @"LAVFilters-x64\" : @"LAVFilters-x86\"); + mediaElement.MediaUriPlayer.PlayerStateChanged += PlayerStateChanged; + mediaElement.MediaOpened += MediaOpened; + mediaElement.MediaEnded += MediaEnded; + mediaElement.MediaFailed += MediaFailed; + + buttonTime.Click += (_, _) => buttonTime.Tag = (string)buttonTime.Tag == "Time" ? "Length" : "Time"; sliderProgress.PreviewMouseDown += (_, e) => { _wasPlaying = mediaElement.IsPlaying; @@ -94,8 +116,66 @@ public ViewerPanel(ContextObject context) { if (_wasPlaying) mediaElement.Play(); }; + } - PreviewMouseWheel += (_, e) => ChangeVolume(e.Delta / 120d * 0.04d); + private void InitializeArm64() + { + sliderProgressWPF.Visibility = Visibility.Visible; + buttonTimeWPF.Visibility = Visibility.Visible; + + mediaElementWPF.MediaOpened += MediaOpened; + mediaElementWPF.MediaEnded += MediaEnded; + + buttonTimeWPF.Click += (_, _) => buttonTimeWPF.Tag = (string)buttonTimeWPF.Tag == "Time" ? "Length" : "Time"; + + + timer = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(1) + }; + timer.Tick += Seek_Timer; + timer.Start(); + + buttonTimeWPF.Click += (_, _) => buttonTime.Tag = (string)buttonTime.Tag == "Time" ? "Length" : "Time"; + + sliderProgressWPF.PreviewMouseDown += (_, e) => + { + _wasPlaying = IsPlaying; + mediaElementWPF.Pause(); + }; + sliderProgressWPF.PreviewMouseUp += (_, _) => + { + if (_wasPlaying) mediaElementWPF.Play(); + }; + + IsSeeked = false; + } + + private void Seek_Timer(object sender, EventArgs e) + { + if ((mediaElementWPF.Source != null) && (mediaElementWPF.NaturalDuration.HasTimeSpan) && (!IsSeeked)) + { + sliderProgressWPF.Minimum = 0; + sliderProgressWPF.Maximum = mediaElementWPF.NaturalDuration.TimeSpan.TotalSeconds; + sliderProgressWPF.Value = mediaElementWPF.Position.TotalSeconds; + + } + } + private void Seek_Drag_Started(object sender, DragStartedEventArgs e) + { + IsSeeked = true; + } + private void Seek_Drag_Completed(object sender, DragCompletedEventArgs e) + { + IsSeeked = false; + mediaElementWPF.Position = TimeSpan.FromSeconds(sliderProgressWPF.Value); + } + private void Seek_Value_Changed(object sender, RoutedPropertyChangedEventArgs e) + { + if ((string)buttonTimeWPF.Tag == "Time") + textProgress.Text = TimeSpan.FromSeconds(sliderProgressWPF.Value).ToString(@"hh\:mm\:ss"); + else + textProgress.Text = TimeSpan.FromSeconds(sliderProgressWPF.Maximum).ToString(@"hh\:mm\:ss"); } private partial void LoadAndInsertGlassLayer(); @@ -130,6 +210,12 @@ private set if (value == _shouldLoop) return; _shouldLoop = value; OnPropertyChanged(); + if (!IsPlaying) + { + IsPlaying = true; + + if (isArm64) mediaElementWPF.Play(); else mediaElement.Play(); + } } } @@ -153,15 +239,18 @@ public void Dispose() try { + if (timer!=null) + timer.Stop(); mediaElement?.Close(); + mediaElementWPF?.Close(); Task.Run(() => { mediaElement?.MediaUriPlayer.Dispose(); mediaElement = null; + mediaElementWPF = null; }); - } - catch (Exception e) + } catch (Exception e) { Debug.WriteLine(e); } @@ -185,10 +274,21 @@ private void Panel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) private void MediaOpened(object o, RoutedEventArgs args) { - if (mediaElement == null) - return; + if (isArm64) + { + if (mediaElementWPF == null) + return; - HasVideo = mediaElement.HasVideo; + HasVideo = mediaElementWPF.HasVideo; + + } else + { + if (mediaElement == null) + return; + + HasVideo = mediaElement.HasVideo; + + } _context.IsBusy = false; } @@ -209,21 +309,42 @@ private void MediaFailed(object sender, MediaFailedEventArgs e) private void MediaEnded(object sender, RoutedEventArgs e) { - if (mediaElement == null) - return; - - mediaElement.MediaPosition = 0L; - if (ShouldLoop) + if (isArm64) { - IsPlaying = true; + if (mediaElementWPF == null) + return; - mediaElement.Play(); - } - else + mediaElementWPF.Position = new TimeSpan(0L); + if (ShouldLoop) + { + IsPlaying = true; + + mediaElementWPF.Play(); + } else + { + IsPlaying = false; + + mediaElementWPF.Pause(); + } + + } else { - IsPlaying = false; + if (mediaElement == null) + return; + + mediaElement.MediaPosition = 0L; + if (ShouldLoop) + { + IsPlaying = true; + + mediaElement.Play(); + } else + { + IsPlaying = false; + + mediaElement.Pause(); + } - mediaElement.Pause(); } } @@ -285,8 +406,7 @@ private void UpdateMeta(string path, MediaInfoLib info) var coverData = info.Get(StreamKind.General, 0, "Cover_Data"); var coverBytes = CoverDataExtractor.Extract(coverData); CoverArt = CoverDataExtractor.Extract(coverBytes); - } - catch (Exception e) + } catch (Exception e) { Debug.WriteLine(e); metaTitle.Text = Path.GetFileName(path); @@ -341,10 +461,9 @@ private void UpdateMeta(string path, MediaInfoLib info) { if (_lyricLines != null && _lyricLines.Length != 0) { - var lyric = LrcHelper.GetNearestLrc(_lyricLines, new TimeSpan(mediaElement.MediaPosition)); + var lyric = LrcHelper.GetNearestLrc(_lyricLines, new TimeSpan(isArm64 ? mediaElementWPF.Position.Ticks : mediaElement.MediaPosition)); metaLyric.Text = lyric?.LrcText?.Trim(); - } - else + } else { metaLyric.Text = null; metaLyric.Visibility = Visibility.Collapsed; @@ -353,8 +472,7 @@ private void UpdateMeta(string path, MediaInfoLib info) _lyricTimer.Start(); metaLyric.Visibility = Visibility.Visible; - } - else + } else { metaLyric.Visibility = Visibility.Collapsed; } @@ -362,10 +480,10 @@ private void UpdateMeta(string path, MediaInfoLib info) public double LinearVolume { - get => mediaElement.Volume; + get => (isArm64 ? mediaElementWPF.Volume : mediaElement.Volume); set { - mediaElement.Volume = value; + if (isArm64) mediaElementWPF.Volume = value; else mediaElement.Volume = value; OnPropertyChanged(); } } @@ -377,17 +495,53 @@ private void ChangeVolume(double delta) private void TogglePlayPause(object sender, EventArgs e) { - if (mediaElement.IsPlaying) - mediaElement.Pause(); - else - mediaElement.Play(); + if (isArm64) + { + if (IsPlaying) + { + IsPlaying = false; + mediaElementWPF.Pause(); + } else + { + IsPlaying = true; + mediaElementWPF.Play(); + } + } else + { + if (mediaElement.IsPlaying) + mediaElement.Pause(); + else + mediaElement.Play(); + } } private void ToggleShouldLoop(object sender, EventArgs e) { ShouldLoop = !ShouldLoop; } + public void LoadAndPlayWPF(string path, MediaInfoLib info) + { + // Detect whether it is other playback formats + if (!HasVideo) + { + string audioCodec = info?.Get(StreamKind.Audio, 0, "Format"); + + if (audioCodec?.Equals("MIDI", StringComparison.OrdinalIgnoreCase) ?? false) + { + _midiPlayer = new MidiPlayer(this, _context); + _midiPlayer.LoadAndPlay(path); + return; // Midi player will handle the playback at all + } + } + + UpdateMeta(path, info); + mediaElementWPF.Source = new Uri(path); + // old plugin use an int-typed "Volume" config key ranged from 0 to 100. Let's use a new one here. + LinearVolume = SettingHelper.Get("VolumeDouble", 1d, "QuickLook.Plugin.VideoViewer"); + + mediaElementWPF.Play(); + } public void LoadAndPlay(string path, MediaInfoLib info) { // Detect whether it is other playback formats diff --git a/QuickLook.sln b/QuickLook.sln index a3cb7eaea..eddaaa7fe 100644 --- a/QuickLook.sln +++ b/QuickLook.sln @@ -95,211 +95,411 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC Debug|x64 = Debug|x64 Release|Any CPU = Release|Any CPU + Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|ARM64.Build.0 = Debug|ARM64 + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|ARM64EC.Build.0 = Debug|Any CPU {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|x64.ActiveCfg = Debug|x64 {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Debug|x64.Build.0 = Debug|x64 {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|Any CPU.Build.0 = Release|Any CPU + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|ARM64.ActiveCfg = Release|ARM64 + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|ARM64.Build.0 = Release|ARM64 + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|ARM64EC.Build.0 = Release|Any CPU {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|x64.ActiveCfg = Release|x64 {8B4A9CE5-67B5-4A94-81CB-3771F688FDEB}.Release|x64.Build.0 = Release|x64 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|Any CPU.Build.0 = Debug|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|ARM64.ActiveCfg = Debug|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|ARM64.Build.0 = Debug|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|x64.ActiveCfg = Debug|Win32 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Debug|x64.Build.0 = Debug|Win32 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|Any CPU.ActiveCfg = Release|Win32 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|Any CPU.Build.0 = Release|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|ARM64.ActiveCfg = Release|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|ARM64.Build.0 = Release|Win32 + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|ARM64EC.Build.0 = Release|ARM64EC {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|x64.ActiveCfg = Release|Win32 {D31EE321-C2B0-4984-B749-736F7DE509F1}.Release|x64.Build.0 = Release|Win32 {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|ARM64.Build.0 = Debug|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|ARM64EC.Build.0 = Debug|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|x64.ActiveCfg = Debug|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Debug|x64.Build.0 = Debug|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|Any CPU.Build.0 = Release|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|ARM64.ActiveCfg = Release|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|ARM64.Build.0 = Release|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|ARM64EC.Build.0 = Release|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|x64.ActiveCfg = Release|Any CPU {DE2E3BC5-6AB2-4420-A160-48C7A7506C1C}.Release|x64.Build.0 = Release|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|ARM64.Build.0 = Debug|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|ARM64EC.Build.0 = Debug|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|x64.ActiveCfg = Debug|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Debug|x64.Build.0 = Debug|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|Any CPU.Build.0 = Release|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|ARM64.ActiveCfg = Release|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|ARM64.Build.0 = Release|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|ARM64EC.Build.0 = Release|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|x64.ActiveCfg = Release|Any CPU {FE5A5111-9607-4721-A7BE-422754002ED8}.Release|x64.Build.0 = Release|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|ARM64.Build.0 = Debug|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|ARM64EC.Build.0 = Debug|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|x64.ActiveCfg = Debug|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Debug|x64.Build.0 = Debug|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|Any CPU.Build.0 = Release|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|ARM64.ActiveCfg = Release|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|ARM64.Build.0 = Release|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|ARM64EC.Build.0 = Release|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|x64.ActiveCfg = Release|Any CPU {A82AC69C-EDF5-4F0D-8CBD-8E5E3C06E64D}.Release|x64.Build.0 = Release|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|ARM64.Build.0 = Debug|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|ARM64EC.Build.0 = Debug|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|x64.ActiveCfg = Debug|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Debug|x64.Build.0 = Debug|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|Any CPU.ActiveCfg = Release|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|Any CPU.Build.0 = Release|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|ARM64.ActiveCfg = Release|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|ARM64.Build.0 = Release|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|ARM64EC.Build.0 = Release|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|x64.ActiveCfg = Release|Any CPU {AE041682-E3A1-44F6-8BB4-916A98D89FBE}.Release|x64.Build.0 = Release|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|ARM64.Build.0 = Debug|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|ARM64EC.Build.0 = Debug|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|x64.ActiveCfg = Debug|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Debug|x64.Build.0 = Debug|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|Any CPU.ActiveCfg = Release|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|Any CPU.Build.0 = Release|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|ARM64.ActiveCfg = Release|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|ARM64.Build.0 = Release|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|ARM64EC.Build.0 = Release|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|x64.ActiveCfg = Release|Any CPU {1B746D92-49A5-4A37-9D75-DCC490393290}.Release|x64.Build.0 = Release|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|ARM64.Build.0 = Debug|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|ARM64EC.Build.0 = Debug|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|x64.ActiveCfg = Debug|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Debug|x64.Build.0 = Debug|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|Any CPU.Build.0 = Release|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|ARM64.ActiveCfg = Release|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|ARM64.Build.0 = Release|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|ARM64EC.Build.0 = Release|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|x64.ActiveCfg = Release|Any CPU {CE22A1F3-7F2C-4EC8-BFDE-B58D0EB625FC}.Release|x64.Build.0 = Release|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|ARM64.Build.0 = Debug|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|ARM64EC.Build.0 = Debug|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|x64.ActiveCfg = Debug|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Debug|x64.Build.0 = Debug|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|Any CPU.ActiveCfg = Release|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|Any CPU.Build.0 = Release|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|ARM64.ActiveCfg = Release|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|ARM64.Build.0 = Release|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|ARM64EC.Build.0 = Release|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|x64.ActiveCfg = Release|Any CPU {AB1270AF-7EB4-4B4F-9E09-6404F1A28EA0}.Release|x64.Build.0 = Release|Any CPU {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|Any CPU.ActiveCfg = Debug|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|Any CPU.Build.0 = Debug|x86 + {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|ARM64.ActiveCfg = Debug|x86 + {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|ARM64EC.ActiveCfg = Debug|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|x64.ActiveCfg = Debug|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Debug|x64.Build.0 = Debug|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|Any CPU.ActiveCfg = Release|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|Any CPU.Build.0 = Release|x86 + {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|ARM64.ActiveCfg = Release|x86 + {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|ARM64EC.ActiveCfg = Release|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|x64.ActiveCfg = Release|x86 {F0214FC2-EFBE-426C-842D-B42BC37D9525}.Release|x64.Build.0 = Release|x86 {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|Any CPU.ActiveCfg = Debug|x64 {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|Any CPU.Build.0 = Debug|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|ARM64.ActiveCfg = Debug|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|ARM64.Build.0 = Debug|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|x64.ActiveCfg = Debug|x64 {794E4DCF-F715-4836-9D30-ABD296586D23}.Debug|x64.Build.0 = Debug|x64 {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|Any CPU.ActiveCfg = Release|x64 {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|Any CPU.Build.0 = Release|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|ARM64.ActiveCfg = Release|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|ARM64.Build.0 = Release|x64 + {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|ARM64EC.Build.0 = Release|ARM64EC {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|x64.ActiveCfg = Release|x64 {794E4DCF-F715-4836-9D30-ABD296586D23}.Release|x64.Build.0 = Release|x64 {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|ARM64.Build.0 = Debug|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|ARM64EC.Build.0 = Debug|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|x64.ActiveCfg = Debug|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Debug|x64.Build.0 = Debug|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|Any CPU.ActiveCfg = Release|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|Any CPU.Build.0 = Release|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|ARM64.ActiveCfg = Release|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|ARM64.Build.0 = Release|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|ARM64EC.Build.0 = Release|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|x64.ActiveCfg = Release|Any CPU {863ECAAC-18D9-4256-A27D-0F308089FB47}.Release|x64.Build.0 = Release|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Debug|ARM64.Build.0 = Debug|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Debug|ARM64EC.Build.0 = Debug|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Debug|x64.ActiveCfg = Debug|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Debug|x64.Build.0 = Debug|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Release|Any CPU.ActiveCfg = Release|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Release|Any CPU.Build.0 = Release|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Release|ARM64.ActiveCfg = Release|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Release|ARM64.Build.0 = Release|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {45E94893-3076-4A8E-8969-6955B6340739}.Release|ARM64EC.Build.0 = Release|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Release|x64.ActiveCfg = Release|Any CPU {45E94893-3076-4A8E-8969-6955B6340739}.Release|x64.Build.0 = Release|Any CPU {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|ARM64.Build.0 = Debug|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|ARM64EC.Build.0 = Debug|Any CPU {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|x64.ActiveCfg = Debug|x64 {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Debug|x64.Build.0 = Debug|x64 {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|Any CPU.ActiveCfg = Release|Any CPU {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|Any CPU.Build.0 = Release|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|ARM64.ActiveCfg = Release|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|ARM64.Build.0 = Release|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|ARM64EC.Build.0 = Release|Any CPU {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|x64.ActiveCfg = Release|x64 {85FDD6BA-871D-46C8-BD64-F6BB0CB5EA95}.Release|x64.Build.0 = Release|x64 {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|ARM64.Build.0 = Debug|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|ARM64EC.Build.0 = Debug|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|x64.ActiveCfg = Debug|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Debug|x64.Build.0 = Debug|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|Any CPU.Build.0 = Release|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|ARM64.ActiveCfg = Release|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|ARM64.Build.0 = Release|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|ARM64EC.Build.0 = Release|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|x64.ActiveCfg = Release|Any CPU {BD58F3FC-7601-47BA-AAA1-D8A9D54A33DA}.Release|x64.Build.0 = Release|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|ARM64.Build.0 = Debug|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|ARM64EC.Build.0 = Debug|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|x64.ActiveCfg = Debug|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Debug|x64.Build.0 = Debug|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|Any CPU.Build.0 = Release|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|ARM64.ActiveCfg = Release|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|ARM64.Build.0 = Release|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|ARM64EC.Build.0 = Release|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|x64.ActiveCfg = Release|Any CPU {8D50A1DA-601C-4C26-9A7E-7D477EA8430A}.Release|x64.Build.0 = Release|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|ARM64.Build.0 = Debug|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|ARM64EC.Build.0 = Debug|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|x64.ActiveCfg = Debug|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Debug|x64.Build.0 = Debug|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|Any CPU.Build.0 = Release|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|ARM64.ActiveCfg = Release|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|ARM64.Build.0 = Release|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|ARM64EC.Build.0 = Release|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|x64.ActiveCfg = Release|Any CPU {CE40160D-5E3C-4A41-9BDA-C4F414C174EB}.Release|x64.Build.0 = Release|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|Any CPU.Build.0 = Debug|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|ARM64.Build.0 = Debug|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|ARM64EC.Build.0 = Debug|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|x64.ActiveCfg = Debug|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Debug|x64.Build.0 = Debug|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|Any CPU.ActiveCfg = Release|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|Any CPU.Build.0 = Release|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|ARM64.ActiveCfg = Release|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|ARM64.Build.0 = Release|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|ARM64EC.Build.0 = Release|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|x64.ActiveCfg = Release|Any CPU {538FD6BA-2AF1-4DDA-93A2-6C0A12B00843}.Release|x64.Build.0 = Release|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|ARM64.Build.0 = Debug|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|ARM64EC.Build.0 = Debug|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|x64.ActiveCfg = Debug|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Debug|x64.Build.0 = Debug|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|Any CPU.ActiveCfg = Release|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|Any CPU.Build.0 = Release|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|ARM64.ActiveCfg = Release|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|ARM64.Build.0 = Release|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|ARM64EC.Build.0 = Release|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|x64.ActiveCfg = Release|Any CPU {EB7D1F10-6E04-4F7E-96A0-4E18359FBD30}.Release|x64.Build.0 = Release|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|ARM64.Build.0 = Debug|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|ARM64EC.Build.0 = Debug|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|x64.ActiveCfg = Debug|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Debug|x64.Build.0 = Debug|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|Any CPU.ActiveCfg = Release|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|Any CPU.Build.0 = Release|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|ARM64.ActiveCfg = Release|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|ARM64.Build.0 = Release|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|ARM64EC.Build.0 = Release|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|x64.ActiveCfg = Release|Any CPU {88B6FFC8-AD86-41D9-B03D-BD83886CFC18}.Release|x64.Build.0 = Release|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|ARM64.Build.0 = Debug|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|ARM64EC.Build.0 = Debug|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|x64.ActiveCfg = Debug|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Debug|x64.Build.0 = Debug|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|Any CPU.ActiveCfg = Release|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|Any CPU.Build.0 = Release|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|ARM64.ActiveCfg = Release|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|ARM64.Build.0 = Release|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|ARM64EC.Build.0 = Release|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|x64.ActiveCfg = Release|Any CPU {63C00175-0FF3-42C7-8621-2F1959F26064}.Release|x64.Build.0 = Release|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|ARM64.Build.0 = Debug|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|ARM64EC.Build.0 = Debug|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|x64.ActiveCfg = Debug|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Debug|x64.Build.0 = Debug|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|Any CPU.ActiveCfg = Release|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|Any CPU.Build.0 = Release|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|ARM64.ActiveCfg = Release|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|ARM64.Build.0 = Release|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|ARM64EC.Build.0 = Release|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|x64.ActiveCfg = Release|Any CPU {B4F7C88D-C79D-49E7-A1FB-FB69CF72585F}.Release|x64.Build.0 = Release|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|ARM64.Build.0 = Debug|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|ARM64EC.Build.0 = Debug|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|x64.ActiveCfg = Debug|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Debug|x64.Build.0 = Debug|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|Any CPU.ActiveCfg = Release|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|Any CPU.Build.0 = Release|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|ARM64.ActiveCfg = Release|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|ARM64.Build.0 = Release|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|ARM64EC.Build.0 = Release|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|x64.ActiveCfg = Release|Any CPU {311E6E78-3A5B-4E51-802A-5755BD5F9F97}.Release|x64.Build.0 = Release|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|ARM64.Build.0 = Debug|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|ARM64EC.ActiveCfg = Debug|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|ARM64EC.Build.0 = Debug|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|x64.ActiveCfg = Debug|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Debug|x64.Build.0 = Debug|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Release|Any CPU.Build.0 = Release|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Release|ARM64.ActiveCfg = Release|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Release|ARM64.Build.0 = Release|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Release|ARM64EC.ActiveCfg = Release|Any CPU + {B0054A16-472E-44AC-BA40-349303E524FF}.Release|ARM64EC.Build.0 = Release|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Release|x64.ActiveCfg = Release|Any CPU {B0054A16-472E-44AC-BA40-349303E524FF}.Release|x64.Build.0 = Release|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Debug|x64.ActiveCfg = Debug|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Debug|x64.Build.0 = Debug|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Release|Any CPU.Build.0 = Release|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Release|x64.ActiveCfg = Release|Any CPU - {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D}.Release|x64.Build.0 = Release|Any CPU + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|Any CPU.ActiveCfg = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|Any CPU.Build.0 = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|ARM64.Build.0 = Debug|ARM64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|ARM64EC.ActiveCfg = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|ARM64EC.Build.0 = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|x64.ActiveCfg = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Debug|x64.Build.0 = Debug|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|Any CPU.ActiveCfg = Release|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|Any CPU.Build.0 = Release|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|ARM64.ActiveCfg = Release|ARM64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|ARM64.Build.0 = Release|ARM64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|ARM64EC.ActiveCfg = Release|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|ARM64EC.Build.0 = Release|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|x64.ActiveCfg = Release|x64 + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -327,6 +527,7 @@ Global {311E6E78-3A5B-4E51-802A-5755BD5F9F97} = {06EFDBE0-6408-4B37-BCF2-0CF9EBEA2E93} {B0054A16-472E-44AC-BA40-349303E524FF} = {06EFDBE0-6408-4B37-BCF2-0CF9EBEA2E93} {A1B2C3D4-E5F6-4A5B-9C8D-7E6F5A4B3C2D} = {06EFDBE0-6408-4B37-BCF2-0CF9EBEA2E93} + {AA5C5A28-0F81-4FC2-B777-6D6D6D10A9B8} = {D18A23FF-76BD-43BD-AC32-786D166EBAC9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D3761C32-8C5F-498A-892B-3B0882994B62} diff --git a/QuickLook.slnx b/QuickLook.slnx index cf08c3890..1d909adbf 100644 --- a/QuickLook.slnx +++ b/QuickLook.slnx @@ -8,10 +8,14 @@ + + + + @@ -27,7 +31,6 @@ - @@ -36,6 +39,7 @@ + @@ -43,6 +47,7 @@ + @@ -58,7 +63,6 @@ - @@ -69,5 +73,6 @@ + diff --git a/QuickLook/App.xaml.cs b/QuickLook/App.xaml.cs index 75570cd1c..fd05e3011 100644 --- a/QuickLook/App.xaml.cs +++ b/QuickLook/App.xaml.cs @@ -25,6 +25,7 @@ using System.IO; using System.Linq; using System.Reflection; +using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using System.Windows; @@ -42,6 +43,7 @@ public partial class App : Application public static readonly string AppFullPath = Assembly.GetExecutingAssembly().Location; public static readonly string AppPath = Path.GetDirectoryName(AppFullPath); public static readonly bool Is64Bit = Environment.Is64BitProcess; + public static readonly bool IsArm64 = RuntimeInformation.ProcessArchitecture == Architecture.Arm64; public static readonly bool IsUWP = ProcessHelper.IsRunningAsUWP(); public static readonly bool IsWin11 = Environment.OSVersion.Version >= new Version(10, 0, 21996); public static readonly bool IsWin10 = !IsWin11 && Environment.OSVersion.Version >= new Version(10, 0); diff --git a/QuickLook/NativeMethods/QuickLook.cs b/QuickLook/NativeMethods/QuickLook.cs index a1dc24cc3..7e5a22b36 100644 --- a/QuickLook/NativeMethods/QuickLook.cs +++ b/QuickLook/NativeMethods/QuickLook.cs @@ -53,16 +53,29 @@ internal static class QuickLook CallingConvention = CallingConvention.Cdecl)] private static extern void GetCurrentSelectionNative_64([MarshalAs(UnmanagedType.LPWStr)] StringBuilder sb); + [DllImport("QuickLook.NativeArm64.dll", EntryPoint = "Init", + CallingConvention = CallingConvention.Cdecl)] + private static extern void Init_arm64(); + + [DllImport("QuickLook.NativeArm64.dll", EntryPoint = "GetFocusedWindowType", + CallingConvention = CallingConvention.Cdecl)] + private static extern FocusedWindowType GetFocusedWindowTypeNative_arm64(); + + [DllImport("QuickLook.NativeArm64.dll", EntryPoint = "GetCurrentSelection", + CallingConvention = CallingConvention.Cdecl)] + private static extern void GetCurrentSelectionNative_arm64([MarshalAs(UnmanagedType.LPWStr)] StringBuilder sb); + internal static void Init() { try { - if (App.Is64Bit) + if (App.IsArm64) + Init_arm64(); + else if (App.Is64Bit) Init_64(); else Init_32(); - } - catch (Exception e) + } catch (Exception e) { Debug.WriteLine(e); } @@ -72,7 +85,10 @@ internal static FocusedWindowType GetFocusedWindowType() { try { - return App.Is64Bit ? GetFocusedWindowTypeNative_64() : GetFocusedWindowTypeNative_32(); + if (App.IsArm64) + return GetFocusedWindowTypeNative_arm64(); + else + return App.Is64Bit ? GetFocusedWindowTypeNative_64() : GetFocusedWindowTypeNative_32(); } catch (Exception e) { @@ -89,7 +105,9 @@ internal static string GetCurrentSelection() { try { - if (App.Is64Bit) + if (App.IsArm64) + GetCurrentSelectionNative_arm64(sb); + else if (App.Is64Bit) GetCurrentSelectionNative_64(sb); else GetCurrentSelectionNative_32(sb); diff --git a/QuickLook/QuickLook.csproj b/QuickLook/QuickLook.csproj index 36a34b5e4..e8618066e 100644 --- a/QuickLook/QuickLook.csproj +++ b/QuickLook/QuickLook.csproj @@ -2,16 +2,16 @@ WinExe - net462 + net481 QuickLook 512 - AnyCPU + ARM64 Resources\app.ico true true true latest - AnyCPU;x64 + AnyCPU;x64;ARM64 false false false @@ -47,6 +47,15 @@ true + + ..\Build\Debug\ + DEBUG;TRACE + true + full + false + true + + ..\Build\Debug\ DEBUG;TRACE @@ -65,6 +74,15 @@ true + + ..\Build\Release\ + TRACE + true + pdbonly + false + true + + ..\Build\Release\ TRACE @@ -102,7 +120,7 @@ all - + all diff --git a/QuickLook/ViewerWindow.Actions.cs b/QuickLook/ViewerWindow.Actions.cs index 98c011094..529222386 100644 --- a/QuickLook/ViewerWindow.Actions.cs +++ b/QuickLook/ViewerWindow.Actions.cs @@ -201,7 +201,7 @@ internal void BeginShow(IViewer matchedPlugin, string path, return; } - if (ContextObject.IsBlocked) + if (ContextObject.IsBusy) { ContextObject.ViewerContent = new System.Windows.Controls.TextBlock {