diff options
Diffstat (limited to 'platform/winrt')
57 files changed, 10017 insertions, 0 deletions
diff --git a/platform/winrt/README.txt b/platform/winrt/README.txt new file mode 100644 index 00000000..4beaefbf --- /dev/null +++ b/platform/winrt/README.txt @@ -0,0 +1,39 @@ +This MSVC project needs the thirdparty sources to be in place. + +mupdf_cpp: + +This is the c++ viewer code, which creates and handles the UI. + +mupdfwinrt: + +This defines the WinRT interface to mupdf. +There are two primary classes, mudocument and muctx. +The viewer code should create a +mudocument type and make use of the methods in +this winRT class. The mupdocument class is a winRT +class and the methods should be callable from +C++, C#, Javascript etc. + +The muctx class interfaces to the mupdf API calls +and pretty much uses standard c++ methods with +the exception of the Windows types String and Point. + +mupdfwinrt lib is linked statically to the viewer +code, but this could be set up as a DLL if desired. + +The libraries generated, libmupdf_winRT, libmupdf-nov8_winRT +and libthridparty_winRT are essentially the same as those +in the win32 project, however they are needed here for +building with VS 2012 ARM target. + +Current Issues: + +Space/Tab needs to be reworked in files + +State needs to be saved during suspension + +Still needs additional error checking + +Needs progress bar during text search + +Help info needs to be populated diff --git a/platform/winrt/generate.bat b/platform/winrt/generate.bat new file mode 100644 index 00000000..c10a9d8f --- /dev/null +++ b/platform/winrt/generate.bat @@ -0,0 +1,45 @@ +@echo off + +if not exist scripts/fontdump.c cd .. +if not exist generated mkdir generated + +cl /nologo -Iinclude scripts/fontdump.c +cl /nologo -Iinclude scripts/cmapdump.c +cl /nologo -Iinclude scripts/cquote.c +cl /nologo -Iinclude scripts/bin2hex.c + +if not exist fontdump.exe goto usage +if not exist cmapdump.exe goto usage +if not exist cquote.exe goto usage +if not exist bin2hex.exe goto usage + +if not exist generated/gen_font_base14.h fontdump.exe generated/gen_font_base14.h fonts/Dingbats.cff fonts/NimbusMonL-Bold.cff fonts/NimbusMonL-BoldObli.cff fonts/NimbusMonL-Regu.cff fonts/NimbusMonL-ReguObli.cff fonts/NimbusRomNo9L-Medi.cff fonts/NimbusRomNo9L-MediItal.cff fonts/NimbusRomNo9L-Regu.cff fonts/NimbusRomNo9L-ReguItal.cff fonts/NimbusSanL-Bold.cff fonts/NimbusSanL-BoldItal.cff fonts/NimbusSanL-Regu.cff fonts/NimbusSanL-ReguItal.cff fonts/StandardSymL.cff + +if not exist generated/gen_font_droid.h fontdump.exe generated/gen_font_droid.h fonts/droid/DroidSans.ttf fonts/droid/DroidSansMono.ttf + +if not exist generated/gen_font_cjk.h fontdump.exe generated/gen_font_cjk.h fonts/droid/DroidSansFallback.ttf + +if not exist generated/gen_font_cjk_full.h fontdump.exe generated/gen_font_cjk_full.h fonts/droid/DroidSansFallbackFull.ttf + +if not exist generated/gen_cmap_cns.h cmapdump.exe generated/gen_cmap_cns.h cmaps/cns/Adobe-CNS1-UCS2 cmaps/cns/Adobe-CNS1-0 cmaps/cns/Adobe-CNS1-1 cmaps/cns/Adobe-CNS1-2 cmaps/cns/Adobe-CNS1-3 cmaps/cns/Adobe-CNS1-4 cmaps/cns/Adobe-CNS1-5 cmaps/cns/Adobe-CNS1-6 cmaps/cns/B5-H cmaps/cns/B5-V cmaps/cns/B5pc-H cmaps/cns/B5pc-V cmaps/cns/CNS-EUC-H cmaps/cns/CNS-EUC-V cmaps/cns/CNS1-H cmaps/cns/CNS1-V cmaps/cns/CNS2-H cmaps/cns/CNS2-V cmaps/cns/ETen-B5-H cmaps/cns/ETen-B5-V cmaps/cns/ETenms-B5-H cmaps/cns/ETenms-B5-V cmaps/cns/ETHK-B5-H cmaps/cns/ETHK-B5-V cmaps/cns/HKdla-B5-H cmaps/cns/HKdla-B5-V cmaps/cns/HKdlb-B5-H cmaps/cns/HKdlb-B5-V cmaps/cns/HKgccs-B5-H cmaps/cns/HKgccs-B5-V cmaps/cns/HKm314-B5-H cmaps/cns/HKm314-B5-V cmaps/cns/HKm471-B5-H cmaps/cns/HKm471-B5-V cmaps/cns/HKscs-B5-H cmaps/cns/HKscs-B5-V cmaps/cns/UniCNS-UCS2-H cmaps/cns/UniCNS-UCS2-V cmaps/cns/UniCNS-UTF16-H cmaps/cns/UniCNS-UTF16-V + +if not exist generated/gen_cmap_gb.h cmapdump.exe generated/gen_cmap_gb.h cmaps/gb/Adobe-GB1-UCS2 cmaps/gb/Adobe-GB1-0 cmaps/gb/Adobe-GB1-1 cmaps/gb/Adobe-GB1-2 cmaps/gb/Adobe-GB1-3 cmaps/gb/Adobe-GB1-4 cmaps/gb/Adobe-GB1-5 cmaps/gb/GB-EUC-H cmaps/gb/GB-EUC-V cmaps/gb/GB-H cmaps/gb/GB-V cmaps/gb/GBK-EUC-H cmaps/gb/GBK-EUC-V cmaps/gb/GBK2K-H cmaps/gb/GBK2K-V cmaps/gb/GBKp-EUC-H cmaps/gb/GBKp-EUC-V cmaps/gb/GBpc-EUC-H cmaps/gb/GBpc-EUC-V cmaps/gb/GBT-EUC-H cmaps/gb/GBT-EUC-V cmaps/gb/GBT-H cmaps/gb/GBT-V cmaps/gb/GBTpc-EUC-H cmaps/gb/GBTpc-EUC-V cmaps/gb/UniGB-UCS2-H cmaps/gb/UniGB-UCS2-V cmaps/gb/UniGB-UTF16-H cmaps/gb/UniGB-UTF16-V + +if not exist generated/gen_cmap_japan.h cmapdump.exe generated/gen_cmap_japan.h cmaps/japan/Adobe-Japan1-UCS2 cmaps/japan/78-EUC-H cmaps/japan/78-EUC-V cmaps/japan/78-H cmaps/japan/78-RKSJ-H cmaps/japan/78-RKSJ-V cmaps/japan/78-V cmaps/japan/78ms-RKSJ-H cmaps/japan/78ms-RKSJ-V cmaps/japan/83pv-RKSJ-H cmaps/japan/90ms-RKSJ-H cmaps/japan/90ms-RKSJ-V cmaps/japan/90msp-RKSJ-H cmaps/japan/90msp-RKSJ-V cmaps/japan/90pv-RKSJ-H cmaps/japan/90pv-RKSJ-V cmaps/japan/Add-H cmaps/japan/Add-RKSJ-H cmaps/japan/Add-RKSJ-V cmaps/japan/Add-V cmaps/japan/Adobe-Japan1-0 cmaps/japan/Adobe-Japan1-1 cmaps/japan/Adobe-Japan1-2 cmaps/japan/Adobe-Japan1-3 cmaps/japan/Adobe-Japan1-4 cmaps/japan/Adobe-Japan1-5 cmaps/japan/Adobe-Japan1-6 cmaps/japan/EUC-H cmaps/japan/EUC-V cmaps/japan/Ext-H cmaps/japan/Ext-RKSJ-H cmaps/japan/Ext-RKSJ-V cmaps/japan/Ext-V cmaps/japan/H cmaps/japan/Hankaku cmaps/japan/Hiragana cmaps/japan/Katakana cmaps/japan/NWP-H cmaps/japan/NWP-V cmaps/japan/RKSJ-H cmaps/japan/RKSJ-V cmaps/japan/Roman cmaps/japan/UniJIS-UCS2-H cmaps/japan/UniJIS-UCS2-HW-H cmaps/japan/UniJIS-UCS2-HW-V cmaps/japan/UniJIS-UCS2-V cmaps/japan/UniJISPro-UCS2-HW-V cmaps/japan/UniJISPro-UCS2-V cmaps/japan/V cmaps/japan/WP-Symbol cmaps/japan/Adobe-Japan2-0 cmaps/japan/Hojo-EUC-H cmaps/japan/Hojo-EUC-V cmaps/japan/Hojo-H cmaps/japan/Hojo-V cmaps/japan/UniHojo-UCS2-H cmaps/japan/UniHojo-UCS2-V cmaps/japan/UniHojo-UTF16-H cmaps/japan/UniHojo-UTF16-V cmaps/japan/UniJIS-UTF16-H cmaps/japan/UniJIS-UTF16-V + +if not exist generated/gen_cmap_korea.h cmapdump.exe generated/gen_cmap_korea.h cmaps/korea/Adobe-Korea1-UCS2 cmaps/korea/Adobe-Korea1-0 cmaps/korea/Adobe-Korea1-1 cmaps/korea/Adobe-Korea1-2 cmaps/korea/KSC-EUC-H cmaps/korea/KSC-EUC-V cmaps/korea/KSC-H cmaps/korea/KSC-Johab-H cmaps/korea/KSC-Johab-V cmaps/korea/KSC-V cmaps/korea/KSCms-UHC-H cmaps/korea/KSCms-UHC-HW-H cmaps/korea/KSCms-UHC-HW-V cmaps/korea/KSCms-UHC-V cmaps/korea/KSCpc-EUC-H cmaps/korea/KSCpc-EUC-V cmaps/korea/UniKS-UCS2-H cmaps/korea/UniKS-UCS2-V cmaps/korea/UniKS-UTF16-H cmaps/korea/UniKS-UTF16-V + +if not exist generated/gen_js_util.h cquote.exe generated/gen_js_util.h pdf/pdf_util.js + +if not exist generated/gen_adobe_ca.h bin2hex.exe generated/gen_adobe_ca.h certs/AdobeCA.p7c + +del cmapdump.obj fontdump.obj cquote.obj bin2hex.obj cmapdump.exe fontdump.exe cquote.exe bin2hex.exe + +goto fin + +:usage +echo ERROR: Run this script in the mupdf directory. +echo ERROR: Run this script in a Visual Studio command prompt. +pause + +:fin diff --git a/platform/winrt/generated.vcxproj b/platform/winrt/generated.vcxproj new file mode 100644 index 00000000..11d2b479 --- /dev/null +++ b/platform/winrt/generated.vcxproj @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|ARM"> + <Configuration>Memento</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|Win32"> + <Configuration>Memento</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{A5053AA7-02E5-4903-B596-04F17AEB1526}</ProjectGuid> + <Keyword>MakeFileProj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>Makefile</ConfigurationType> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>11.0.51106.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput /> + <NMakePreprocessorDefinitions>WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput /> + <NMakePreprocessorDefinitions>WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput>generated\cmap_cns.h</NMakeOutput> + <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput>generated\cmap_cns.h</NMakeOutput> + <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <OutDir>$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput>generated\cmap_cns.h</NMakeOutput> + <NMakePreprocessorDefinitions>WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'"> + <NMakeBuildCommandLine>generate.bat</NMakeBuildCommandLine> + <NMakeReBuildCommandLine>del /q ..\generated && generate.bat</NMakeReBuildCommandLine> + <NMakeCleanCommandLine>del /q ..\generated</NMakeCleanCommandLine> + <NMakeOutput>generated\cmap_cns.h</NMakeOutput> + <NMakePreprocessorDefinitions>WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> + </PropertyGroup> + <ItemDefinitionGroup> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\scripts\cmapdump.c" /> + <ClCompile Include="..\scripts\cquote.c" /> + <ClCompile Include="..\scripts\fontdump.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\scripts\jconfig.h" /> + <ClInclude Include="..\scripts\opj_config.h" /> + <ClInclude Include="..\scripts\slimftmodules.h" /> + <ClInclude Include="..\scripts\slimftoptions.h" /> + </ItemGroup> + <ItemGroup> + <None Include="..\cmaps\cns\Adobe-CNS1-0" /> + <None Include="..\cmaps\cns\Adobe-CNS1-1" /> + <None Include="..\cmaps\cns\Adobe-CNS1-2" /> + <None Include="..\cmaps\cns\Adobe-CNS1-3" /> + <None Include="..\cmaps\cns\Adobe-CNS1-4" /> + <None Include="..\cmaps\cns\Adobe-CNS1-5" /> + <None Include="..\cmaps\cns\Adobe-CNS1-6" /> + <None Include="..\cmaps\cns\Adobe-CNS1-UCS2" /> + <None Include="..\cmaps\cns\B5-H" /> + <None Include="..\cmaps\cns\B5-V" /> + <None Include="..\cmaps\cns\B5pc-H" /> + <None Include="..\cmaps\cns\B5pc-V" /> + <None Include="..\cmaps\cns\CNS-EUC-H" /> + <None Include="..\cmaps\cns\CNS-EUC-V" /> + <None Include="..\cmaps\cns\CNS1-H" /> + <None Include="..\cmaps\cns\CNS1-V" /> + <None Include="..\cmaps\cns\CNS2-H" /> + <None Include="..\cmaps\cns\CNS2-V" /> + <None Include="..\cmaps\cns\ETen-B5-H" /> + <None Include="..\cmaps\cns\ETen-B5-V" /> + <None Include="..\cmaps\cns\ETenms-B5-H" /> + <None Include="..\cmaps\cns\ETenms-B5-V" /> + <None Include="..\cmaps\cns\ETHK-B5-H" /> + <None Include="..\cmaps\cns\ETHK-B5-V" /> + <None Include="..\cmaps\cns\HKdla-B5-H" /> + <None Include="..\cmaps\cns\HKdla-B5-V" /> + <None Include="..\cmaps\cns\HKdlb-B5-H" /> + <None Include="..\cmaps\cns\HKdlb-B5-V" /> + <None Include="..\cmaps\cns\HKgccs-B5-H" /> + <None Include="..\cmaps\cns\HKgccs-B5-V" /> + <None Include="..\cmaps\cns\HKm314-B5-H" /> + <None Include="..\cmaps\cns\HKm314-B5-V" /> + <None Include="..\cmaps\cns\HKm471-B5-H" /> + <None Include="..\cmaps\cns\HKm471-B5-V" /> + <None Include="..\cmaps\cns\HKscs-B5-H" /> + <None Include="..\cmaps\cns\HKscs-B5-V" /> + <None Include="..\cmaps\cns\UniCNS-UCS2-H" /> + <None Include="..\cmaps\cns\UniCNS-UCS2-V" /> + <None Include="..\cmaps\cns\UniCNS-UTF16-H" /> + <None Include="..\cmaps\cns\UniCNS-UTF16-V" /> + <None Include="..\cmaps\gb\Adobe-GB1-0" /> + <None Include="..\cmaps\gb\Adobe-GB1-1" /> + <None Include="..\cmaps\gb\Adobe-GB1-2" /> + <None Include="..\cmaps\gb\Adobe-GB1-3" /> + <None Include="..\cmaps\gb\Adobe-GB1-4" /> + <None Include="..\cmaps\gb\Adobe-GB1-5" /> + <None Include="..\cmaps\gb\Adobe-GB1-UCS2" /> + <None Include="..\cmaps\gb\GB-EUC-H" /> + <None Include="..\cmaps\gb\GB-EUC-V" /> + <None Include="..\cmaps\gb\GB-H" /> + <None Include="..\cmaps\gb\GB-V" /> + <None Include="..\cmaps\gb\GBK-EUC-H" /> + <None Include="..\cmaps\gb\GBK-EUC-V" /> + <None Include="..\cmaps\gb\GBK2K-H" /> + <None Include="..\cmaps\gb\GBK2K-V" /> + <None Include="..\cmaps\gb\GBKp-EUC-H" /> + <None Include="..\cmaps\gb\GBKp-EUC-V" /> + <None Include="..\cmaps\gb\GBpc-EUC-H" /> + <None Include="..\cmaps\gb\GBpc-EUC-V" /> + <None Include="..\cmaps\gb\GBT-EUC-H" /> + <None Include="..\cmaps\gb\GBT-EUC-V" /> + <None Include="..\cmaps\gb\GBT-H" /> + <None Include="..\cmaps\gb\GBT-V" /> + <None Include="..\cmaps\gb\GBTpc-EUC-H" /> + <None Include="..\cmaps\gb\GBTpc-EUC-V" /> + <None Include="..\cmaps\gb\UniGB-UCS2-H" /> + <None Include="..\cmaps\gb\UniGB-UCS2-V" /> + <None Include="..\cmaps\gb\UniGB-UTF16-H" /> + <None Include="..\cmaps\gb\UniGB-UTF16-V" /> + <None Include="..\cmaps\japan\78-EUC-H" /> + <None Include="..\cmaps\japan\78-EUC-V" /> + <None Include="..\cmaps\japan\78-H" /> + <None Include="..\cmaps\japan\78-RKSJ-H" /> + <None Include="..\cmaps\japan\78-RKSJ-V" /> + <None Include="..\cmaps\japan\78-V" /> + <None Include="..\cmaps\japan\78ms-RKSJ-H" /> + <None Include="..\cmaps\japan\78ms-RKSJ-V" /> + <None Include="..\cmaps\japan\83pv-RKSJ-H" /> + <None Include="..\cmaps\japan\90ms-RKSJ-H" /> + <None Include="..\cmaps\japan\90ms-RKSJ-V" /> + <None Include="..\cmaps\japan\90msp-RKSJ-H" /> + <None Include="..\cmaps\japan\90msp-RKSJ-V" /> + <None Include="..\cmaps\japan\90pv-RKSJ-H" /> + <None Include="..\cmaps\japan\90pv-RKSJ-V" /> + <None Include="..\cmaps\japan\Add-H" /> + <None Include="..\cmaps\japan\Add-RKSJ-H" /> + <None Include="..\cmaps\japan\Add-RKSJ-V" /> + <None Include="..\cmaps\japan\Add-V" /> + <None Include="..\cmaps\japan\Adobe-Japan1-0" /> + <None Include="..\cmaps\japan\Adobe-Japan1-1" /> + <None Include="..\cmaps\japan\Adobe-Japan1-2" /> + <None Include="..\cmaps\japan\Adobe-Japan1-3" /> + <None Include="..\cmaps\japan\Adobe-Japan1-4" /> + <None Include="..\cmaps\japan\Adobe-Japan1-5" /> + <None Include="..\cmaps\japan\Adobe-Japan1-6" /> + <None Include="..\cmaps\japan\Adobe-Japan1-UCS2" /> + <None Include="..\cmaps\japan\Adobe-Japan2-0" /> + <None Include="..\cmaps\japan\EUC-H" /> + <None Include="..\cmaps\japan\EUC-V" /> + <None Include="..\cmaps\japan\Ext-H" /> + <None Include="..\cmaps\japan\Ext-RKSJ-H" /> + <None Include="..\cmaps\japan\Ext-RKSJ-V" /> + <None Include="..\cmaps\japan\Ext-V" /> + <None Include="..\cmaps\japan\H" /> + <None Include="..\cmaps\japan\Hankaku" /> + <None Include="..\cmaps\japan\Hiragana" /> + <None Include="..\cmaps\japan\Hojo-EUC-H" /> + <None Include="..\cmaps\japan\Hojo-EUC-V" /> + <None Include="..\cmaps\japan\Hojo-H" /> + <None Include="..\cmaps\japan\Hojo-V" /> + <None Include="..\cmaps\japan\Katakana" /> + <None Include="..\cmaps\japan\NWP-H" /> + <None Include="..\cmaps\japan\NWP-V" /> + <None Include="..\cmaps\japan\RKSJ-H" /> + <None Include="..\cmaps\japan\RKSJ-V" /> + <None Include="..\cmaps\japan\Roman" /> + <None Include="..\cmaps\japan\UniHojo-UCS2-H" /> + <None Include="..\cmaps\japan\UniHojo-UCS2-V" /> + <None Include="..\cmaps\japan\UniHojo-UTF16-H" /> + <None Include="..\cmaps\japan\UniHojo-UTF16-V" /> + <None Include="..\cmaps\japan\UniJIS-UCS2-H" /> + <None Include="..\cmaps\japan\UniJIS-UCS2-HW-H" /> + <None Include="..\cmaps\japan\UniJIS-UCS2-HW-V" /> + <None Include="..\cmaps\japan\UniJIS-UCS2-V" /> + <None Include="..\cmaps\japan\UniJIS-UTF16-H" /> + <None Include="..\cmaps\japan\UniJIS-UTF16-V" /> + <None Include="..\cmaps\japan\UniJISPro-UCS2-HW-V" /> + <None Include="..\cmaps\japan\UniJISPro-UCS2-V" /> + <None Include="..\cmaps\japan\V" /> + <None Include="..\cmaps\japan\WP-Symbol" /> + <None Include="..\cmaps\korea\Adobe-Korea1-0" /> + <None Include="..\cmaps\korea\Adobe-Korea1-1" /> + <None Include="..\cmaps\korea\Adobe-Korea1-2" /> + <None Include="..\cmaps\korea\Adobe-Korea1-UCS2" /> + <None Include="..\cmaps\korea\KSC-EUC-H" /> + <None Include="..\cmaps\korea\KSC-EUC-V" /> + <None Include="..\cmaps\korea\KSC-H" /> + <None Include="..\cmaps\korea\KSC-Johab-H" /> + <None Include="..\cmaps\korea\KSC-Johab-V" /> + <None Include="..\cmaps\korea\KSC-V" /> + <None Include="..\cmaps\korea\KSCms-UHC-H" /> + <None Include="..\cmaps\korea\KSCms-UHC-HW-H" /> + <None Include="..\cmaps\korea\KSCms-UHC-HW-V" /> + <None Include="..\cmaps\korea\KSCms-UHC-V" /> + <None Include="..\cmaps\korea\KSCpc-EUC-H" /> + <None Include="..\cmaps\korea\KSCpc-EUC-V" /> + <None Include="..\cmaps\korea\UniKS-UCS2-H" /> + <None Include="..\cmaps\korea\UniKS-UCS2-V" /> + <None Include="..\cmaps\korea\UniKS-UTF16-H" /> + <None Include="..\cmaps\korea\UniKS-UTF16-V" /> + <None Include="..\fonts\Dingbats.cff" /> + <None Include="..\fonts\NimbusMonL-Bold.cff" /> + <None Include="..\fonts\NimbusMonL-BoldObli.cff" /> + <None Include="..\fonts\NimbusMonL-Regu.cff" /> + <None Include="..\fonts\NimbusMonL-ReguObli.cff" /> + <None Include="..\fonts\NimbusRomNo9L-Medi.cff" /> + <None Include="..\fonts\NimbusRomNo9L-MediItal.cff" /> + <None Include="..\fonts\NimbusRomNo9L-Regu.cff" /> + <None Include="..\fonts\NimbusRomNo9L-ReguItal.cff" /> + <None Include="..\fonts\NimbusSanL-Bold.cff" /> + <None Include="..\fonts\NimbusSanL-BoldItal.cff" /> + <None Include="..\fonts\NimbusSanL-Regu.cff" /> + <None Include="..\fonts\NimbusSanL-ReguItal.cff" /> + <None Include="..\fonts\StandardSymL.cff" /> + <None Include="..\fonts\droid\NOTICE" /> + </ItemGroup> + <ItemGroup> + <Font Include="..\fonts\droid\DroidSans.ttf" /> + <Font Include="..\fonts\droid\DroidSansFallback.ttf" /> + <Font Include="..\fonts\droid\DroidSansMono.ttf" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/generated.vcxproj.filters b/platform/winrt/generated.vcxproj.filters new file mode 100644 index 00000000..1a078e59 --- /dev/null +++ b/platform/winrt/generated.vcxproj.filters @@ -0,0 +1,568 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="CMAPs"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> + </Filter> + <Filter Include="CMAPs\cns"> + <UniqueIdentifier>{5129a522-0f9b-4dd3-aaf8-5b20b66060d8}</UniqueIdentifier> + </Filter> + <Filter Include="CMAPs\gb"> + <UniqueIdentifier>{75b3deb7-11ce-4813-b282-6dc1c099e669}</UniqueIdentifier> + </Filter> + <Filter Include="CMAPs\japan"> + <UniqueIdentifier>{1706f021-1fce-4074-9299-6fd9c516c7ca}</UniqueIdentifier> + </Filter> + <Filter Include="CMAPs\korea"> + <UniqueIdentifier>{f2a3739d-4175-47e4-9711-4a066e0f7094}</UniqueIdentifier> + </Filter> + <Filter Include="Fonts"> + <UniqueIdentifier>{5168e64f-094a-43e0-b53f-83df3632d7ae}</UniqueIdentifier> + </Filter> + <Filter Include="Fonts\droid"> + <UniqueIdentifier>{8462cde5-1461-408e-8708-d2b844cbb69d}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\scripts\cmapdump.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\scripts\cquote.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\scripts\fontdump.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\scripts\jconfig.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\scripts\opj_config.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\scripts\slimftmodules.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\scripts\slimftoptions.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <None Include="..\cmaps\cns\Adobe-CNS1-0"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-1"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-2"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-3"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-4"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-5"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-6"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\Adobe-CNS1-UCS2"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\B5pc-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\B5pc-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS-EUC-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS-EUC-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS1-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS1-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS2-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\CNS2-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETen-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETen-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETenms-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETenms-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETHK-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\ETHK-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKdla-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKdla-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKdlb-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKdlb-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKgccs-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKgccs-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKm314-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKm314-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKm471-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKm471-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKscs-B5-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\HKscs-B5-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\UniCNS-UCS2-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\UniCNS-UCS2-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\UniCNS-UTF16-H"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\cns\UniCNS-UTF16-V"> + <Filter>CMAPs\cns</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-0"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-1"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-2"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-3"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-4"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-5"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\Adobe-GB1-UCS2"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GB-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GB-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GB-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GB-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBK-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBK-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBK2K-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBK2K-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBKp-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBKp-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBpc-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBpc-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBT-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBT-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBT-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBT-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBTpc-EUC-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\GBTpc-EUC-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\UniGB-UCS2-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\UniGB-UCS2-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\UniGB-UTF16-H"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\gb\UniGB-UTF16-V"> + <Filter>CMAPs\gb</Filter> + </None> + <None Include="..\cmaps\japan\78-EUC-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78-EUC-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78ms-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\78ms-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\83pv-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90ms-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90ms-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90msp-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90msp-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90pv-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\90pv-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Add-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Add-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Add-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Add-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-0"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-1"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-2"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-3"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-4"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-5"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-6"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan1-UCS2"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Adobe-Japan2-0"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\EUC-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\EUC-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Ext-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Ext-RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Ext-RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Ext-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hankaku"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hiragana"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hojo-EUC-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hojo-EUC-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hojo-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Hojo-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Katakana"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\NWP-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\NWP-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\RKSJ-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\RKSJ-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\Roman"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniHojo-UCS2-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniHojo-UCS2-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniHojo-UTF16-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniHojo-UTF16-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UCS2-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UCS2-HW-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UCS2-HW-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UCS2-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UTF16-H"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJIS-UTF16-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJISPro-UCS2-HW-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\UniJISPro-UCS2-V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\V"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\japan\WP-Symbol"> + <Filter>CMAPs\japan</Filter> + </None> + <None Include="..\cmaps\korea\Adobe-Korea1-0"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\Adobe-Korea1-1"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\Adobe-Korea1-2"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\Adobe-Korea1-UCS2"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-EUC-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-EUC-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-Johab-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-Johab-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSC-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCms-UHC-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCms-UHC-HW-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCms-UHC-HW-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCms-UHC-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCpc-EUC-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\KSCpc-EUC-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\UniKS-UCS2-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\UniKS-UCS2-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\UniKS-UTF16-H"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\cmaps\korea\UniKS-UTF16-V"> + <Filter>CMAPs\korea</Filter> + </None> + <None Include="..\fonts\Dingbats.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusMonL-Bold.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusMonL-BoldObli.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusMonL-Regu.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusMonL-ReguObli.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusRomNo9L-Medi.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusRomNo9L-MediItal.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusRomNo9L-Regu.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusRomNo9L-ReguItal.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusSanL-Bold.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusSanL-BoldItal.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusSanL-Regu.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\NimbusSanL-ReguItal.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\StandardSymL.cff"> + <Filter>Fonts</Filter> + </None> + <None Include="..\fonts\droid\NOTICE"> + <Filter>Fonts\droid</Filter> + </None> + </ItemGroup> + <ItemGroup> + <Font Include="..\fonts\droid\DroidSans.ttf"> + <Filter>Fonts\droid</Filter> + </Font> + <Font Include="..\fonts\droid\DroidSansFallback.ttf"> + <Filter>Fonts\droid</Filter> + </Font> + <Font Include="..\fonts\droid\DroidSansMono.ttf"> + <Filter>Fonts\droid</Filter> + </Font> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libmupdf-nov8_winRT.vcxproj b/platform/winrt/libmupdf-nov8_winRT.vcxproj new file mode 100644 index 00000000..4c643aae --- /dev/null +++ b/platform/winrt/libmupdf-nov8_winRT.vcxproj @@ -0,0 +1,297 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|ARM"> + <Configuration>Memento</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|Win32"> + <Configuration>Memento</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|x64"> + <Configuration>Memento</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\pdf\pdf_js_none.c" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{5affe821-c5c8-45fb-b834-10fed76e49a7}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <ProjectName>libmupdf-nov8_winRT</ProjectName> + <RootNamespace>libmupdf_nov8_winRT</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <AppContainerApplication>true</AppContainerApplication> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <GenerateManifest>false</GenerateManifest> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\include;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libmupdf-nov8_winRT.vcxproj.filters b/platform/winrt/libmupdf-nov8_winRT.vcxproj.filters new file mode 100644 index 00000000..c0612d85 --- /dev/null +++ b/platform/winrt/libmupdf-nov8_winRT.vcxproj.filters @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="pdf"> + <UniqueIdentifier>{9cbc5d32-1ade-452f-9a40-cd43b9e313aa}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\pdf\pdf_js_none.c"> + <Filter>pdf</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libmupdf_winRT.vcxproj b/platform/winrt/libmupdf_winRT.vcxproj new file mode 100644 index 00000000..9db1732a --- /dev/null +++ b/platform/winrt/libmupdf_winRT.vcxproj @@ -0,0 +1,430 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|ARM"> + <Configuration>Memento</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|Win32"> + <Configuration>Memento</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|x64"> + <Configuration>Memento</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\cbz\mucbz.c" /> + <ClCompile Include="..\draw\draw_affine.c" /> + <ClCompile Include="..\draw\draw_blend.c" /> + <ClCompile Include="..\draw\draw_device.c" /> + <ClCompile Include="..\draw\draw_edge.c" /> + <ClCompile Include="..\draw\draw_glyph.c" /> + <ClCompile Include="..\draw\draw_mesh.c" /> + <ClCompile Include="..\draw\draw_paint.c" /> + <ClCompile Include="..\draw\draw_path.c" /> + <ClCompile Include="..\draw\draw_simple_scale.c" /> + <ClCompile Include="..\draw\draw_unpack.c" /> + <ClCompile Include="..\fitz\base_context.c" /> + <ClCompile Include="..\fitz\base_error.c" /> + <ClCompile Include="..\fitz\base_geometry.c" /> + <ClCompile Include="..\fitz\base_getopt.c" /> + <ClCompile Include="..\fitz\base_hash.c" /> + <ClCompile Include="..\fitz\base_memory.c" /> + <ClCompile Include="..\fitz\base_string.c" /> + <ClCompile Include="..\fitz\base_time.c" /> + <ClCompile Include="..\fitz\base_trans.c" /> + <ClCompile Include="..\fitz\base_xml.c" /> + <ClCompile Include="..\fitz\crypt_aes.c" /> + <ClCompile Include="..\fitz\crypt_arc4.c" /> + <ClCompile Include="..\fitz\crypt_md5.c" /> + <ClCompile Include="..\fitz\crypt_sha2.c" /> + <ClCompile Include="..\fitz\dev_bbox.c" /> + <ClCompile Include="..\fitz\dev_list.c" /> + <ClCompile Include="..\fitz\dev_null.c" /> + <ClCompile Include="..\fitz\dev_trace.c" /> + <ClCompile Include="..\fitz\doc_document.c" /> + <ClCompile Include="..\fitz\doc_link.c" /> + <ClCompile Include="..\fitz\doc_outline.c" /> + <ClCompile Include="..\fitz\filt_basic.c" /> + <ClCompile Include="..\fitz\filt_dctd.c" /> + <ClCompile Include="..\fitz\filt_faxd.c" /> + <ClCompile Include="..\fitz\filt_flate.c" /> + <ClCompile Include="..\fitz\filt_jbig2d.c" /> + <ClCompile Include="..\fitz\filt_lzwd.c" /> + <ClCompile Include="..\fitz\filt_predict.c" /> + <ClCompile Include="..\fitz\image_jpeg.c" /> + <ClCompile Include="..\fitz\image_jpx.c" /> + <ClCompile Include="..\fitz\image_png.c" /> + <ClCompile Include="..\fitz\image_tiff.c" /> + <ClCompile Include="..\fitz\memento.c" /> + <ClCompile Include="..\fitz\res_bitmap.c" /> + <ClCompile Include="..\fitz\res_colorspace.c" /> + <ClCompile Include="..\fitz\res_font.c" /> + <ClCompile Include="..\fitz\res_func.c" /> + <ClCompile Include="..\fitz\res_halftone.c" /> + <ClCompile Include="..\fitz\res_image.c" /> + <ClCompile Include="..\fitz\res_path.c" /> + <ClCompile Include="..\fitz\res_pixmap.c" /> + <ClCompile Include="..\fitz\res_shade.c" /> + <ClCompile Include="..\fitz\res_store.c" /> + <ClCompile Include="..\fitz\res_text.c" /> + <ClCompile Include="..\fitz\stm_buffer.c" /> + <ClCompile Include="..\fitz\stm_comp_buf.c" /> + <ClCompile Include="..\fitz\stm_open.c" /> + <ClCompile Include="..\fitz\stm_output.c" /> + <ClCompile Include="..\fitz\stm_read.c" /> + <ClCompile Include="..\fitz\text_extract.c" /> + <ClCompile Include="..\fitz\text_output.c" /> + <ClCompile Include="..\fitz\text_paragraph.c" /> + <ClCompile Include="..\fitz\text_search.c" /> + <ClCompile Include="..\image\muimage.c" /> + <ClCompile Include="..\pdf\pdf_annot.c" /> + <ClCompile Include="..\pdf\pdf_cmap.c" /> + <ClCompile Include="..\pdf\pdf_cmap_load.c" /> + <ClCompile Include="..\pdf\pdf_cmap_parse.c" /> + <ClCompile Include="..\pdf\pdf_cmap_table.c" /> + <ClCompile Include="..\pdf\pdf_colorspace.c" /> + <ClCompile Include="..\pdf\pdf_crypt.c" /> + <ClCompile Include="..\pdf\pdf_device.c" /> + <ClCompile Include="..\pdf\pdf_encoding.c" /> + <ClCompile Include="..\pdf\pdf_event.c" /> + <ClCompile Include="..\pdf\pdf_field.c" /> + <ClCompile Include="..\pdf\pdf_font.c" /> + <ClCompile Include="..\pdf\pdf_fontfile.c" /> + <ClCompile Include="..\pdf\pdf_form.c" /> + <ClCompile Include="..\pdf\pdf_function.c" /> + <ClCompile Include="..\pdf\pdf_image.c" /> + <ClCompile Include="..\pdf\pdf_interpret.c" /> + <ClCompile Include="..\pdf\pdf_lex.c" /> + <ClCompile Include="..\pdf\pdf_metrics.c" /> + <ClCompile Include="..\pdf\pdf_nametree.c" /> + <ClCompile Include="..\pdf\pdf_object.c" /> + <ClCompile Include="..\pdf\pdf_outline.c" /> + <ClCompile Include="..\pdf\pdf_page.c" /> + <ClCompile Include="..\pdf\pdf_parse.c" /> + <ClCompile Include="..\pdf\pdf_pattern.c" /> + <ClCompile Include="..\pdf\pdf_repair.c" /> + <ClCompile Include="..\pdf\pdf_shade.c" /> + <ClCompile Include="..\pdf\pdf_store.c" /> + <ClCompile Include="..\pdf\pdf_stream.c" /> + <ClCompile Include="..\pdf\pdf_type3.c" /> + <ClCompile Include="..\pdf\pdf_unicode.c" /> + <ClCompile Include="..\pdf\pdf_write.c" /> + <ClCompile Include="..\pdf\pdf_xobject.c" /> + <ClCompile Include="..\pdf\pdf_xref.c" /> + <ClCompile Include="..\pdf\pdf_xref_aux.c" /> + <ClCompile Include="..\ucdn\ucdn.c" /> + <ClCompile Include="..\xps\xps_common.c" /> + <ClCompile Include="..\xps\xps_doc.c" /> + <ClCompile Include="..\xps\xps_glyphs.c" /> + <ClCompile Include="..\xps\xps_gradient.c" /> + <ClCompile Include="..\xps\xps_image.c" /> + <ClCompile Include="..\xps\xps_outline.c" /> + <ClCompile Include="..\xps\xps_path.c" /> + <ClCompile Include="..\xps\xps_resource.c" /> + <ClCompile Include="..\xps\xps_tile.c" /> + <ClCompile Include="..\xps\xps_util.c" /> + <ClCompile Include="..\xps\xps_zip.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\cbz\mucbz.h" /> + <ClInclude Include="..\fitz\fitz-internal.h" /> + <ClInclude Include="..\fitz\fitz.h" /> + <ClInclude Include="..\fitz\memento.h" /> + <ClInclude Include="..\image\muimage.h" /> + <ClInclude Include="..\pdf\data_encodings.h" /> + <ClInclude Include="..\pdf\data_glyphlist.h" /> + <ClInclude Include="..\pdf\mupdf-internal.h" /> + <ClInclude Include="..\pdf\mupdf.h" /> + <ClInclude Include="..\xps\muxps-internal.h" /> + <ClInclude Include="..\xps\muxps.h" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{0715f3cf-5d1b-4617-a331-6527371365b7}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <ProjectName>libmupdf_winRT</ProjectName> + <RootNamespace>libmupdf_winRT</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <AppContainerApplication>true</AppContainerApplication> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>MEMENTO=1;DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <PreprocessorDefinitions>DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <PreprocessorDefinitions>MEMENTO=1;DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>MEMENTO=1;DEBUG=1;_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\ucdn;..\include;..\generated;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\src\lib\openjp2;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libmupdf_winRT.vcxproj.filters b/platform/winrt/libmupdf_winRT.vcxproj.filters new file mode 100644 index 00000000..f2dfaec7 --- /dev/null +++ b/platform/winrt/libmupdf_winRT.vcxproj.filters @@ -0,0 +1,399 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="cbz"> + <UniqueIdentifier>{d78079b0-99b0-4ce6-b1ec-cc101aecfc0d}</UniqueIdentifier> + </Filter> + <Filter Include="draw"> + <UniqueIdentifier>{18aad001-4979-4a53-885b-57b50c49d073}</UniqueIdentifier> + </Filter> + <Filter Include="fitz"> + <UniqueIdentifier>{31bd53e0-4b00-4f84-8c40-cb2c16a716e1}</UniqueIdentifier> + </Filter> + <Filter Include="pdf"> + <UniqueIdentifier>{b16a1218-c130-43b1-b956-091542c365d6}</UniqueIdentifier> + </Filter> + <Filter Include="xps"> + <UniqueIdentifier>{be1af520-39c9-4c25-938e-4c90e486c89c}</UniqueIdentifier> + </Filter> + <Filter Include="ucdn"> + <UniqueIdentifier>{3e7ffbf1-2975-4b19-96d3-ed2e168c870e}</UniqueIdentifier> + </Filter> + <Filter Include="image"> + <UniqueIdentifier>{726654cd-aa58-4ed2-90df-7e02c3615031}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\cbz\mucbz.c"> + <Filter>cbz</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_affine.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_blend.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_device.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_edge.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_glyph.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_mesh.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_paint.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_path.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_simple_scale.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\draw\draw_unpack.c"> + <Filter>draw</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_context.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_error.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_geometry.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_getopt.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_hash.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_memory.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_string.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_time.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_trans.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\base_xml.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\crypt_aes.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\crypt_arc4.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\crypt_md5.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\crypt_sha2.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\dev_bbox.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\dev_list.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\dev_null.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\dev_trace.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\doc_document.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\doc_link.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\doc_outline.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_basic.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_dctd.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_faxd.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_flate.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_jbig2d.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_lzwd.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\filt_predict.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\image_jpeg.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\image_jpx.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\image_png.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\image_tiff.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\memento.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_bitmap.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_colorspace.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_font.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_halftone.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_path.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_pixmap.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_shade.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_store.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_text.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\stm_buffer.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\stm_comp_buf.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\stm_open.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\stm_output.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\stm_read.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_annot.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_cmap.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_cmap_load.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_cmap_parse.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_cmap_table.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_colorspace.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_crypt.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_device.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_encoding.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_event.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_font.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_fontfile.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_form.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_function.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_image.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_interpret.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_lex.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_metrics.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_nametree.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_object.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_outline.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_page.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_parse.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_pattern.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_repair.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_shade.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_store.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_stream.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_type3.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_unicode.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_write.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_xobject.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_xref.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_xref_aux.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_common.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_doc.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_glyphs.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_gradient.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_image.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_outline.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_path.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_resource.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_tile.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_util.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\xps\xps_zip.c"> + <Filter>xps</Filter> + </ClCompile> + <ClCompile Include="..\pdf\pdf_field.c"> + <Filter>pdf</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_func.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\text_extract.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\text_output.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\text_paragraph.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\fitz\text_search.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\ucdn\ucdn.c"> + <Filter>ucdn</Filter> + </ClCompile> + <ClCompile Include="..\fitz\res_image.c"> + <Filter>fitz</Filter> + </ClCompile> + <ClCompile Include="..\image\muimage.c"> + <Filter>image</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\cbz\mucbz.h"> + <Filter>cbz</Filter> + </ClInclude> + <ClInclude Include="..\fitz\fitz-internal.h"> + <Filter>fitz</Filter> + </ClInclude> + <ClInclude Include="..\fitz\fitz.h"> + <Filter>fitz</Filter> + </ClInclude> + <ClInclude Include="..\fitz\memento.h"> + <Filter>fitz</Filter> + </ClInclude> + <ClInclude Include="..\pdf\data_encodings.h"> + <Filter>pdf</Filter> + </ClInclude> + <ClInclude Include="..\pdf\data_glyphlist.h"> + <Filter>pdf</Filter> + </ClInclude> + <ClInclude Include="..\pdf\mupdf-internal.h"> + <Filter>pdf</Filter> + </ClInclude> + <ClInclude Include="..\pdf\mupdf.h"> + <Filter>pdf</Filter> + </ClInclude> + <ClInclude Include="..\xps\muxps-internal.h"> + <Filter>xps</Filter> + </ClInclude> + <ClInclude Include="..\xps\muxps.h"> + <Filter>xps</Filter> + </ClInclude> + <ClInclude Include="..\image\muimage.h"> + <Filter>image</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libthirdparty_winRT.vcxproj b/platform/winrt/libthirdparty_winRT.vcxproj new file mode 100644 index 00000000..386f6d95 --- /dev/null +++ b/platform/winrt/libthirdparty_winRT.vcxproj @@ -0,0 +1,524 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|ARM"> + <Configuration>Memento</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|Win32"> + <Configuration>Memento</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Memento|x64"> + <Configuration>Memento</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbase.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbbox.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbitmap.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftgasp.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftglyph.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftinit.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftstroke.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftsynth.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftsystem.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\fttype1.c" /> + <ClCompile Include="..\thirdparty\freetype\src\base\ftxf86.c" /> + <ClCompile Include="..\thirdparty\freetype\src\cff\cff.c" /> + <ClCompile Include="..\thirdparty\freetype\src\cid\type1cid.c" /> + <ClCompile Include="..\thirdparty\freetype\src\psaux\psaux.c" /> + <ClCompile Include="..\thirdparty\freetype\src\pshinter\pshinter.c" /> + <ClCompile Include="..\thirdparty\freetype\src\psnames\psnames.c" /> + <ClCompile Include="..\thirdparty\freetype\src\raster\raster.c" /> + <ClCompile Include="..\thirdparty\freetype\src\sfnt\sfnt.c" /> + <ClCompile Include="..\thirdparty\freetype\src\smooth\smooth.c" /> + <ClCompile Include="..\thirdparty\freetype\src\truetype\truetype.c" /> + <ClCompile Include="..\thirdparty\freetype\src\type1\type1.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith_iaid.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith_int.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_generic.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_halftone.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_huffman.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_image.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_metadata.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_mmr.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_page.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_refinement.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_segment.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_symbol_dict.c" /> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_text.c" /> + <ClCompile Include="..\thirdparty\jpeg\jaricom.c" /> + <ClCompile Include="..\thirdparty\jpeg\jcomapi.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdapimin.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdapistd.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdarith.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdatadst.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdatasrc.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdcoefct.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdcolor.c" /> + <ClCompile Include="..\thirdparty\jpeg\jddctmgr.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdhuff.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdinput.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdmainct.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdmarker.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdmaster.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdmerge.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdpostct.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdsample.c" /> + <ClCompile Include="..\thirdparty\jpeg\jdtrans.c" /> + <ClCompile Include="..\thirdparty\jpeg\jerror.c" /> + <ClCompile Include="..\thirdparty\jpeg\jfdctflt.c" /> + <ClCompile Include="..\thirdparty\jpeg\jfdctfst.c" /> + <ClCompile Include="..\thirdparty\jpeg\jfdctint.c" /> + <ClCompile Include="..\thirdparty\jpeg\jidctflt.c" /> + <ClCompile Include="..\thirdparty\jpeg\jidctfst.c" /> + <ClCompile Include="..\thirdparty\jpeg\jidctint.c" /> + <ClCompile Include="..\thirdparty\jpeg\jmemmgr.c" /> + <ClCompile Include="..\thirdparty\jpeg\jmemnobs.c" /> + <ClCompile Include="..\thirdparty\jpeg\jquant1.c" /> + <ClCompile Include="..\thirdparty\jpeg\jquant2.c" /> + <ClCompile Include="..\thirdparty\jpeg\jutils.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\bio.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\cidx_manager.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\cio.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\dwt.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\event.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\function_list.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\image.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\invert.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\j2k.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\jp2.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\mct.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\mqc.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\openjpeg.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_clock.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\phix_manager.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\pi.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\ppix_manager.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\raw.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t1.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t1_generate_luts.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t2.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tcd.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tgt.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\thix_manager.c" /> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tpix_manager.c" /> + <ClCompile Include="..\thirdparty\zlib\adler32.c" /> + <ClCompile Include="..\thirdparty\zlib\compress.c" /> + <ClCompile Include="..\thirdparty\zlib\crc32.c" /> + <ClCompile Include="..\thirdparty\zlib\deflate.c" /> + <ClCompile Include="..\thirdparty\zlib\inffast.c" /> + <ClCompile Include="..\thirdparty\zlib\inflate.c" /> + <ClCompile Include="..\thirdparty\zlib\inftrees.c" /> + <ClCompile Include="..\thirdparty\zlib\trees.c" /> + <ClCompile Include="..\thirdparty\zlib\uncompr.c" /> + <ClCompile Include="..\thirdparty\zlib\zutil.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftconfig.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftheader.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftmodule.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftoption.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftstdlib.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\freetype.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftadvanc.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbbox.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbdf.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbitmap.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbzip2.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftcache.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftchapters.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftcid.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fterrdef.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fterrors.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgasp.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftglyph.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgxval.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgzip.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftimage.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftincrem.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlcdfil.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlist.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlzw.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmac.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmm.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmodapi.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmoderr.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftotval.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftoutln.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftpfr.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftrender.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsizes.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsnames.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftstroke.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsynth.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsystem.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fttrigon.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fttypes.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftwinfnt.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftxf86.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\autohint.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftcalc.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftdebug.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftdriver.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftgloadr.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftmemory.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftobjs.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftpic.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftrfork.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftserv.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftstream.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\fttrace.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftvalid.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\internal.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\psaux.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\pshints.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svbdf.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svcid.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svgldict.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svgxval.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svkern.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svmm.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svotval.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpfr.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpostnm.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpscmap.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpsinfo.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svsfnt.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svttcmap.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svtteng.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svttglyf.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svwinfnt.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svxf86nm.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\sfnt.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\t1types.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\tttypes.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\t1tables.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ttnameid.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\tttables.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\tttags.h" /> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ttunpat.h" /> + <ClInclude Include="..\thirdparty\freetype\include\ft2build.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\bio.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\cidx_manager.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\cio.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\dwt.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\event.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\function_list.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\image.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\indexbox_manager.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\invert.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\j2k.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\jp2.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\mct.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\mqc.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\openjpeg.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_clock.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_includes.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_intmath.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_inttypes.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_malloc.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_stdint.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\pi.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\raw.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t1.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t1_luts.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t2.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\tcd.h" /> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\tgt.h" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{c0d1c355-1bee-40e1-9ef4-fd9fffdbf396}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <ProjectName>libthirdparty_winRT</ProjectName> + <RootNamespace>libthirdparty_winRT</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <AppContainerApplication>true</AppContainerApplication> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Memento|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <CompileAsWinRT>false</CompileAsWinRT> + <SDLCheck>false</SDLCheck> + <AdditionalIncludeDirectories>..\scripts;..\thirdparty\jbig2dec;..\thirdparty\jpeg;..\thirdparty\openjpeg\libopenjpeg;..\thirdparty\zlib;..\thirdparty\freetype\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINRT;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;OPJ_STATIC;FT_CONFIG_MODULES_H="slimftmodules.h";FT_CONFIG_OPTIONS_H="slimftoptions.h";DEBUG=1;verbose=-1;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/libthirdparty_winRT.vcxproj.filters b/platform/winrt/libthirdparty_winRT.vcxproj.filters new file mode 100644 index 00000000..55f068b0 --- /dev/null +++ b/platform/winrt/libthirdparty_winRT.vcxproj.filters @@ -0,0 +1,684 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="libfreetype"> + <UniqueIdentifier>{01b3001f-e457-469b-935e-a61e6bb80bea}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\base"> + <UniqueIdentifier>{e719ccda-496e-44f1-a848-3f7e1ee5ec8d}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\include"> + <UniqueIdentifier>{be2b973e-2b42-45d9-9225-d017d1abd744}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\include\freetype"> + <UniqueIdentifier>{b6fa3d37-cb6e-45ea-88de-530cb5b26c41}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\include\freetype\config"> + <UniqueIdentifier>{7cc0c26e-d546-4a6b-a193-a7b0b88393d3}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\include\freetype\internal"> + <UniqueIdentifier>{2093ee27-7231-4db1-8764-40f4fe3dc8e8}</UniqueIdentifier> + </Filter> + <Filter Include="libfreetype\include\freetype\internal\services"> + <UniqueIdentifier>{993c585b-3680-4d68-9afd-dc921a0acd2d}</UniqueIdentifier> + </Filter> + <Filter Include="libjbig2dec"> + <UniqueIdentifier>{34f17a77-9d71-40b1-a18b-75b0704bddf0}</UniqueIdentifier> + </Filter> + <Filter Include="libjpeg"> + <UniqueIdentifier>{f0d06dd8-ab23-445f-82bd-b524f7206761}</UniqueIdentifier> + </Filter> + <Filter Include="libopenjpeg"> + <UniqueIdentifier>{e6b91098-43cf-4337-8677-22b2c582785b}</UniqueIdentifier> + </Filter> + <Filter Include="libz"> + <UniqueIdentifier>{5e55ef18-6449-49c1-99aa-1cd88b6f4453}</UniqueIdentifier> + </Filter> + <Filter Include="libopenjpeg\openjp2"> + <UniqueIdentifier>{3a31ee2f-bdac-4091-a83f-7a6236269aaf}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\thirdparty\freetype\src\cff\cff.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\psaux\psaux.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\pshinter\pshinter.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\psnames\psnames.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\raster\raster.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\sfnt\sfnt.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\smooth\smooth.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\truetype\truetype.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\type1\type1.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\cid\type1cid.c"> + <Filter>libfreetype</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbase.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbbox.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftbitmap.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftgasp.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftglyph.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftinit.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftstroke.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftsynth.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftsystem.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\fttype1.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\freetype\src\base\ftxf86.c"> + <Filter>libfreetype\base</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith_iaid.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_arith_int.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_generic.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_halftone.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_huffman.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_image.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_metadata.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_mmr.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_page.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_refinement.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_segment.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_symbol_dict.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jbig2dec\jbig2_text.c"> + <Filter>libjbig2dec</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jaricom.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jcomapi.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdapimin.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdapistd.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdarith.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdatadst.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdatasrc.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdcoefct.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdcolor.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jddctmgr.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdhuff.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdinput.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdmainct.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdmarker.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdmaster.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdmerge.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdpostct.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdsample.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jdtrans.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jerror.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jfdctflt.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jfdctfst.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jfdctint.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jidctflt.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jidctfst.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jidctint.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jmemmgr.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jmemnobs.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jquant1.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jquant2.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\jpeg\jutils.c"> + <Filter>libjpeg</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\adler32.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\compress.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\crc32.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\deflate.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\inffast.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\inflate.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\inftrees.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\trees.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\uncompr.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\zlib\zutil.c"> + <Filter>libz</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\phix_manager.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\pi.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\ppix_manager.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\raw.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t1.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t1_generate_luts.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\t2.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tcd.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tgt.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\thix_manager.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\tpix_manager.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\mct.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\mqc.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\openjpeg.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_clock.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\dwt.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\event.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\function_list.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\image.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\invert.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\j2k.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\jp2.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\bio.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\cidx_manager.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + <ClCompile Include="..\thirdparty\openjpeg\src\lib\openjp2\cio.c"> + <Filter>libopenjpeg\openjp2</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\thirdparty\freetype\include\ft2build.h"> + <Filter>libfreetype\include</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\freetype.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftadvanc.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbbox.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbdf.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbitmap.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftbzip2.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftcache.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftchapters.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftcid.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fterrdef.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fterrors.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgasp.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftglyph.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgxval.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftgzip.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftimage.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftincrem.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlcdfil.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlist.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftlzw.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmac.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmm.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmodapi.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftmoderr.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftotval.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftoutln.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftpfr.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftrender.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsizes.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsnames.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftstroke.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsynth.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftsystem.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fttrigon.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\fttypes.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftwinfnt.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ftxf86.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\t1tables.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ttnameid.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\tttables.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\tttags.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\ttunpat.h"> + <Filter>libfreetype\include\freetype</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftconfig.h"> + <Filter>libfreetype\include\freetype\config</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftheader.h"> + <Filter>libfreetype\include\freetype\config</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftmodule.h"> + <Filter>libfreetype\include\freetype\config</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftoption.h"> + <Filter>libfreetype\include\freetype\config</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\config\ftstdlib.h"> + <Filter>libfreetype\include\freetype\config</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\autohint.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftcalc.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftdebug.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftdriver.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftgloadr.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftmemory.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftobjs.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftpic.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftrfork.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftserv.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftstream.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\fttrace.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\ftvalid.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\internal.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\psaux.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\pshints.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\sfnt.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\t1types.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\tttypes.h"> + <Filter>libfreetype\include\freetype\internal</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svbdf.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svcid.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svgldict.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svgxval.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svkern.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svmm.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svotval.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpfr.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpostnm.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpscmap.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svpsinfo.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svsfnt.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svttcmap.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svtteng.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svttglyf.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svwinfnt.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\freetype\include\freetype\internal\services\svxf86nm.h"> + <Filter>libfreetype\include\freetype\internal\services</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_includes.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_intmath.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_inttypes.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_malloc.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_stdint.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\pi.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\raw.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t1.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t1_luts.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\t2.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\tcd.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\tgt.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\mct.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\mqc.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\openjpeg.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\opj_clock.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\dwt.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\event.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\function_list.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\image.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\indexbox_manager.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\invert.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\j2k.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\jp2.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\bio.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\cidx_manager.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + <ClInclude Include="..\thirdparty\openjpeg\src\lib\openjp2\cio.h"> + <Filter>libopenjpeg\openjp2</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/mupdf.sln b/platform/winrt/mupdf.sln new file mode 100644 index 00000000..b3abfadc --- /dev/null +++ b/platform/winrt/mupdf.sln @@ -0,0 +1,266 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generated", "generated.vcxproj", "{A5053AA7-02E5-4903-B596-04F17AEB1526}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmupdf_winRT", "libmupdf_winRT.vcxproj", "{0715F3CF-5D1B-4617-A331-6527371365B7}" + ProjectSection(ProjectDependencies) = postProject + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396} = {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396} + {A5053AA7-02E5-4903-B596-04F17AEB1526} = {A5053AA7-02E5-4903-B596-04F17AEB1526} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmupdf-nov8_winRT", "libmupdf-nov8_winRT.vcxproj", "{5AFFE821-C5C8-45FB-B834-10FED76E49A7}" + ProjectSection(ProjectDependencies) = postProject + {0715F3CF-5D1B-4617-A331-6527371365B7} = {0715F3CF-5D1B-4617-A331-6527371365B7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libthirdparty_winRT", "libthirdparty_winRT.vcxproj", "{C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mupdfwinrt", "mupdfwinrt\mupdfwinrt.vcxproj", "{9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}" + ProjectSection(ProjectDependencies) = postProject + {5AFFE821-C5C8-45FB-B834-10FED76E49A7} = {5AFFE821-C5C8-45FB-B834-10FED76E49A7} + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396} = {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396} + {A5053AA7-02E5-4903-B596-04F17AEB1526} = {A5053AA7-02E5-4903-B596-04F17AEB1526} + {0715F3CF-5D1B-4617-A331-6527371365B7} = {0715F3CF-5D1B-4617-A331-6527371365B7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mupdf_cpp", "mupdf_cpp\mupdf_cpp.vcxproj", "{0204A4E7-F1B8-4268-A67C-A2C674B4742D}" + ProjectSection(ProjectDependencies) = postProject + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33} = {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Memento|Any CPU = Memento|Any CPU + Memento|ARM = Memento|ARM + Memento|Mixed Platforms = Memento|Mixed Platforms + Memento|Win32 = Memento|Win32 + Memento|x64 = Memento|x64 + Memento|x86 = Memento|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|ARM.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|ARM.Build.0 = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|Win32.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|Win32.Build.0 = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|x64.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|x86.ActiveCfg = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Debug|x86.Build.0 = Debug|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|Any CPU.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|ARM.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|Mixed Platforms.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|Mixed Platforms.Build.0 = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|Win32.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|x64.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|x86.ActiveCfg = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Memento|x86.Build.0 = Memento|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|Any CPU.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|ARM.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|ARM.Build.0 = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|Win32.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|Win32.Build.0 = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|x64.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|x86.ActiveCfg = Release|Win32 + {A5053AA7-02E5-4903-B596-04F17AEB1526}.Release|x86.Build.0 = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|ARM.ActiveCfg = Debug|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|ARM.Build.0 = Debug|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|Win32.ActiveCfg = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|Win32.Build.0 = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|x64.ActiveCfg = Debug|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|x64.Build.0 = Debug|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|x86.ActiveCfg = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Debug|x86.Build.0 = Debug|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|Any CPU.ActiveCfg = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|ARM.ActiveCfg = Memento|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|ARM.Build.0 = Memento|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|Mixed Platforms.ActiveCfg = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|Mixed Platforms.Build.0 = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|Win32.ActiveCfg = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|Win32.Build.0 = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|x64.ActiveCfg = Memento|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|x64.Build.0 = Memento|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|x86.ActiveCfg = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Memento|x86.Build.0 = Memento|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|Any CPU.ActiveCfg = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|ARM.ActiveCfg = Release|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|ARM.Build.0 = Release|ARM + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|Win32.ActiveCfg = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|Win32.Build.0 = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|x64.ActiveCfg = Release|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|x64.Build.0 = Release|x64 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|x86.ActiveCfg = Release|Win32 + {0715F3CF-5D1B-4617-A331-6527371365B7}.Release|x86.Build.0 = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|ARM.ActiveCfg = Debug|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|ARM.Build.0 = Debug|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|Win32.Build.0 = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|x64.ActiveCfg = Debug|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|x64.Build.0 = Debug|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|x86.ActiveCfg = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Debug|x86.Build.0 = Debug|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|Any CPU.ActiveCfg = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|ARM.ActiveCfg = Memento|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|ARM.Build.0 = Memento|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|Mixed Platforms.ActiveCfg = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|Mixed Platforms.Build.0 = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|Win32.ActiveCfg = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|Win32.Build.0 = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|x64.ActiveCfg = Memento|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|x64.Build.0 = Memento|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|x86.ActiveCfg = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Memento|x86.Build.0 = Memento|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|Any CPU.ActiveCfg = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|ARM.ActiveCfg = Release|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|ARM.Build.0 = Release|ARM + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|Win32.ActiveCfg = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|Win32.Build.0 = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|x64.ActiveCfg = Release|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|x64.Build.0 = Release|x64 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|x86.ActiveCfg = Release|Win32 + {5AFFE821-C5C8-45FB-B834-10FED76E49A7}.Release|x86.Build.0 = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|ARM.ActiveCfg = Debug|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|ARM.Build.0 = Debug|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|Win32.ActiveCfg = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|Win32.Build.0 = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|x64.ActiveCfg = Debug|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|x64.Build.0 = Debug|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|x86.ActiveCfg = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Debug|x86.Build.0 = Debug|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|Any CPU.ActiveCfg = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|ARM.ActiveCfg = Memento|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|ARM.Build.0 = Memento|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|Mixed Platforms.ActiveCfg = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|Mixed Platforms.Build.0 = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|Win32.ActiveCfg = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|Win32.Build.0 = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|x64.ActiveCfg = Memento|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|x64.Build.0 = Memento|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|x86.ActiveCfg = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Memento|x86.Build.0 = Memento|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|Any CPU.ActiveCfg = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|ARM.ActiveCfg = Release|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|ARM.Build.0 = Release|ARM + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|Win32.ActiveCfg = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|Win32.Build.0 = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|x64.ActiveCfg = Release|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|x64.Build.0 = Release|x64 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|x86.ActiveCfg = Release|Win32 + {C0D1C355-1BEE-40E1-9EF4-FD9FFFDBF396}.Release|x86.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|ARM.ActiveCfg = Debug|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|ARM.Build.0 = Debug|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|Win32.ActiveCfg = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|Win32.Build.0 = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|x64.ActiveCfg = Debug|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|x64.Build.0 = Debug|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|x86.ActiveCfg = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Debug|x86.Build.0 = Debug|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|Any CPU.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|ARM.ActiveCfg = Release|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|ARM.Build.0 = Release|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|Mixed Platforms.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|Mixed Platforms.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|Win32.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|Win32.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|x64.ActiveCfg = Release|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|x64.Build.0 = Release|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|x86.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Memento|x86.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|Any CPU.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|ARM.ActiveCfg = Release|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|ARM.Build.0 = Release|ARM + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|Mixed Platforms.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|Win32.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|Win32.Build.0 = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|x64.ActiveCfg = Release|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|x64.Build.0 = Release|x64 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|x86.ActiveCfg = Release|Win32 + {9E6AB41D-09A7-45A6-A53B-1E4BF3AC5B33}.Release|x86.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|ARM.ActiveCfg = Debug|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|ARM.Build.0 = Debug|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|ARM.Deploy.0 = Debug|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Mixed Platforms.Deploy.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Win32.ActiveCfg = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Win32.Build.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|Win32.Deploy.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x64.ActiveCfg = Debug|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x64.Build.0 = Debug|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x64.Deploy.0 = Debug|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x86.ActiveCfg = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x86.Build.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Debug|x86.Deploy.0 = Debug|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Any CPU.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|ARM.ActiveCfg = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|ARM.Build.0 = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|ARM.Deploy.0 = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Mixed Platforms.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Mixed Platforms.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Mixed Platforms.Deploy.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Win32.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Win32.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|Win32.Deploy.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x64.ActiveCfg = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x64.Build.0 = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x64.Deploy.0 = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x86.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x86.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Memento|x86.Deploy.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Any CPU.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|ARM.ActiveCfg = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|ARM.Build.0 = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|ARM.Deploy.0 = Release|ARM + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Mixed Platforms.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Mixed Platforms.Deploy.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Win32.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Win32.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|Win32.Deploy.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x64.ActiveCfg = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x64.Build.0 = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x64.Deploy.0 = Release|x64 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x86.ActiveCfg = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x86.Build.0 = Release|Win32 + {0204A4E7-F1B8-4268-A67C-A2C674B4742D}.Release|x86.Deploy.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/platform/winrt/mupdf_cpp/App.xaml b/platform/winrt/mupdf_cpp/App.xaml new file mode 100644 index 00000000..dfb5d11c --- /dev/null +++ b/platform/winrt/mupdf_cpp/App.xaml @@ -0,0 +1,20 @@ +<Application + x:Class="mupdf_cpp.App" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="using:mupdf_cpp"> + + <Application.Resources> + <ResourceDictionary> + <ResourceDictionary.MergedDictionaries> + + <!-- + Styles that define common aspects of the platform look and feel + Required by Visual Studio project and item templates + --> + <ResourceDictionary Source="Common/StandardStyles.xaml"/> + </ResourceDictionary.MergedDictionaries> + + </ResourceDictionary> + </Application.Resources> +</Application> diff --git a/platform/winrt/mupdf_cpp/App.xaml.cpp b/platform/winrt/mupdf_cpp/App.xaml.cpp new file mode 100644 index 00000000..d0b9d8c7 --- /dev/null +++ b/platform/winrt/mupdf_cpp/App.xaml.cpp @@ -0,0 +1,125 @@ +// +// App.xaml.cpp +// Implementation of the App class. +// + +#include "pch.h" +#include "MainPage.xaml.h" + +using namespace mupdf_cpp; + +using namespace Platform; +using namespace Windows::ApplicationModel; +using namespace Windows::ApplicationModel::Activation; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Controls::Primitives; +using namespace Windows::UI::Xaml::Data; +using namespace Windows::UI::Xaml::Input; +using namespace Windows::UI::Xaml::Interop; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::UI::Xaml::Navigation; + +// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227 + +/// <summary> +/// Initializes the singleton application object. This is the first line of authored code +/// executed, and as such is the logical equivalent of main() or WinMain(). +/// </summary> +App::App() +{ + InitializeComponent(); + Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); +} + +/// <summary> +/// Invoked when the application is launched normally by the end user. Other entry points +/// will be used when the application is launched to open a specific file, to display +/// search results, and so forth. +/// </summary> +/// <param name="args">Details about the launch request and process.</param> +void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) +{ + auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content); + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == nullptr) + { + // Create a Frame to act as the navigation context and associate it with + // a SuspensionManager key + rootFrame = ref new Frame(); + + if (args->PreviousExecutionState == ApplicationExecutionState::Terminated) + { + // TODO: Restore the saved session state only when appropriate, scheduling the + // final launch steps after the restore is complete + + } + + if (rootFrame->Content == nullptr) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments)) + { + throw ref new FailureException("Failed to create initial page"); + } + } + // Place the frame in the current Window + Window::Current->Content = rootFrame; + auto rootPage = safe_cast<MainPage^>(rootFrame->Content); + rootPage->FileEvent = nullptr; + rootPage->ProtocolEvent = nullptr; + + // Ensure the current window is active + Window::Current->Activate(); + } + else + { + if (rootFrame->Content == nullptr) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments)) + { + throw ref new FailureException("Failed to create initial page"); + } + } + // Ensure the current window is active + Window::Current->Activate(); + } +} + +// Handle file activations. +void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args) +{ + auto rootFrame = ref new Frame(); + TypeName pageType = { "mupdf_cpp.MainPage", TypeKind::Custom }; + rootFrame->Navigate(pageType, args); + Window::Current->Content = rootFrame; + auto rootPage = safe_cast<MainPage^>(rootFrame->Content); + rootPage->FileEvent = args; + rootPage->ProtocolEvent = nullptr; + + Window::Current->Activate(); +} + +/// <summary> +/// Invoked when application execution is being suspended. Application state is saved +/// without knowing whether the application will be terminated or resumed with the contents +/// of memory still intact. +/// </summary> +/// <param name="sender">The source of the suspend request.</param> +/// <param name="e">Details about the suspend request.</param> +void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e) +{ + (void) sender; // Unused parameter + (void) e; // Unused parameter + + //TODO: Save application state and stop any background activity +} diff --git a/platform/winrt/mupdf_cpp/App.xaml.h b/platform/winrt/mupdf_cpp/App.xaml.h new file mode 100644 index 00000000..b62c9979 --- /dev/null +++ b/platform/winrt/mupdf_cpp/App.xaml.h @@ -0,0 +1,24 @@ +// +// App.xaml.h +// Declaration of the App class. +// + +#pragma once + +#include "App.g.h" + +namespace mupdf_cpp +{ + /// <summary> + /// Provides application-specific behavior to supplement the default Application class. + /// </summary> + ref class App sealed + { + public: + App(); + virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) override; + virtual void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args) override; + private: + void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); + }; +} diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-100.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-100.png Binary files differnew file mode 100644 index 00000000..821cb7d9 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-100.png diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png Binary files differnew file mode 100644 index 00000000..94eb9b67 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png Binary files differnew file mode 100644 index 00000000..44354901 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png Binary files differnew file mode 100644 index 00000000..165bda7a --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png Binary files differnew file mode 100644 index 00000000..5b5635e9 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png Binary files differnew file mode 100644 index 00000000..2813a863 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png Binary files differnew file mode 100644 index 00000000..1908837d --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png Binary files differnew file mode 100644 index 00000000..9497ffb5 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png Binary files differnew file mode 100644 index 00000000..1c6cd7a0 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png Binary files differnew file mode 100644 index 00000000..7d3391f8 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png Binary files differnew file mode 100644 index 00000000..471efbda --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png diff --git a/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png b/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png Binary files differnew file mode 100644 index 00000000..48746c87 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png diff --git a/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png b/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png Binary files differnew file mode 100644 index 00000000..624f9ae9 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png diff --git a/platform/winrt/mupdf_cpp/Common/StandardStyles.xaml b/platform/winrt/mupdf_cpp/Common/StandardStyles.xaml new file mode 100644 index 00000000..771d773c --- /dev/null +++ b/platform/winrt/mupdf_cpp/Common/StandardStyles.xaml @@ -0,0 +1,1889 @@ +<!-- + This file contains XAML styles that simplify application development. + + These are not merely convenient, but are required by most Visual Studio project and item templates. + Removing, renaming, or otherwise modifying the content of these files may result in a project that + does not build, or that will not build once additional pages are added. If variations on these + styles are desired it is recommended that you copy the content under a new name and modify your + private copy. +--> + +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> + + <!-- Non-brush values that vary across themes --> + + <ResourceDictionary.ThemeDictionaries> + <ResourceDictionary x:Key="Default"> + <x:String x:Key="BackButtonGlyph"></x:String> + <x:String x:Key="BackButtonSnappedGlyph"></x:String> + </ResourceDictionary> + + <ResourceDictionary x:Key="HighContrast"> + <x:String x:Key="BackButtonGlyph"></x:String> + <x:String x:Key="BackButtonSnappedGlyph"></x:String> + </ResourceDictionary> + </ResourceDictionary.ThemeDictionaries> + + <x:String x:Key="ChevronGlyph"></x:String> + + <!-- RichTextBlock styles --> + + <Style x:Key="BasicRichTextStyle" TargetType="RichTextBlock"> + <Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/> + <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/> + <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/> + <Setter Property="TextTrimming" Value="WordEllipsis"/> + <Setter Property="TextWrapping" Value="Wrap"/> + <Setter Property="Typography.StylisticSet20" Value="True"/> + <Setter Property="Typography.DiscretionaryLigatures" Value="True"/> + <Setter Property="Typography.CaseSensitiveForms" Value="True"/> + </Style> + + <Style x:Key="BaselineRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BasicRichTextStyle}"> + <Setter Property="LineHeight" Value="20"/> + <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> + <!-- Properly align text along its baseline --> + <Setter Property="RenderTransform"> + <Setter.Value> + <TranslateTransform X="-1" Y="4"/> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="ItemRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}"/> + + <Style x:Key="BodyRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}"> + <Setter Property="FontWeight" Value="SemiLight"/> + </Style> + + <!-- TextBlock styles --> + + <Style x:Key="BasicTextStyle" TargetType="TextBlock"> + <Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/> + <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/> + <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/> + <Setter Property="TextTrimming" Value="WordEllipsis"/> + <Setter Property="TextWrapping" Value="Wrap"/> + <Setter Property="Typography.StylisticSet20" Value="True"/> + <Setter Property="Typography.DiscretionaryLigatures" Value="True"/> + <Setter Property="Typography.CaseSensitiveForms" Value="True"/> + </Style> + + <Style x:Key="BaselineTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BasicTextStyle}"> + <Setter Property="LineHeight" Value="20"/> + <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> + <!-- Properly align text along its baseline --> + <Setter Property="RenderTransform"> + <Setter.Value> + <TranslateTransform X="-1" Y="4"/> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="HeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontSize" Value="56"/> + <Setter Property="FontWeight" Value="Light"/> + <Setter Property="LineHeight" Value="40"/> + <Setter Property="RenderTransform"> + <Setter.Value> + <TranslateTransform X="-2" Y="8"/> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="SubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontSize" Value="26.667"/> + <Setter Property="FontWeight" Value="Light"/> + <Setter Property="LineHeight" Value="30"/> + <Setter Property="RenderTransform"> + <Setter.Value> + <TranslateTransform X="-1" Y="6"/> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="TitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontWeight" Value="SemiBold"/> + </Style> + + <Style x:Key="SubtitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontWeight" Value="Normal"/> + </Style> + + <Style x:Key="ItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"/> + + <Style x:Key="BodyTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontWeight" Value="SemiLight"/> + </Style> + + <Style x:Key="CaptionTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> + <Setter Property="FontSize" Value="12"/> + <Setter Property="Foreground" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> + </Style> + + <Style x:Key="GroupHeaderTextStyle" TargetType="TextBlock"> + <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/> + <Setter Property="TextTrimming" Value="WordEllipsis"/> + <Setter Property="TextWrapping" Value="NoWrap"/> + <Setter Property="Typography.StylisticSet20" Value="True"/> + <Setter Property="Typography.DiscretionaryLigatures" Value="True"/> + <Setter Property="Typography.CaseSensitiveForms" Value="True"/> + <Setter Property="FontSize" Value="26.667"/> + <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> + <Setter Property="FontWeight" Value="Light"/> + <Setter Property="LineHeight" Value="30"/> + <Setter Property="RenderTransform"> + <Setter.Value> + <TranslateTransform X="-1" Y="6"/> + </Setter.Value> + </Setter> + </Style> + + <!-- Button styles --> + + <!-- + TextButtonStyle is used to style a Button using subheader-styled text with no other adornment. There + are two styles that are based on TextButtonStyle (TextPrimaryButtonStyle and TextSecondaryButtonStyle) + which are used in the GroupedItemsPage as a group header and in the FileOpenPickerPage for triggering + commands. + --> + <Style x:Key="TextButtonStyle" TargetType="ButtonBase"> + <Setter Property="MinWidth" Value="0"/> + <Setter Property="MinHeight" Value="0"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ButtonBase"> + <Grid Background="Transparent"> + <ContentPresenter x:Name="Text" Content="{TemplateBinding Content}" /> + <Rectangle + x:Name="FocusVisualWhite" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="1.5"/> + <Rectangle + x:Name="FocusVisualBlack" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="0.5"/> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal"/> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/> + <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused"/> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"/> + <VisualState x:Name="Unchecked"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Indeterminate"/> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <Style x:Key="TextPrimaryButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource TextButtonStyle}"> + <Setter Property="Foreground" Value="{StaticResource ApplicationHeaderForegroundThemeBrush}"/> + </Style> + + <Style x:Key="TextSecondaryButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource TextButtonStyle}"> + <Setter Property="Foreground" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> + </Style> + + <!-- + TextRadioButtonStyle is used to style a RadioButton using subheader-styled text with no other adornment. + This style is used in the SearchResultsPage to allow selection among filters. + --> + <Style x:Key="TextRadioButtonStyle" TargetType="RadioButton" BasedOn="{StaticResource TextButtonStyle}"> + <Setter Property="Margin" Value="0,0,30,0"/> + </Style> + + <!-- + AppBarButtonStyle is used to style a Button (or ToggleButton) for use in an App Bar. Content will be centered + and should fit within the 40 pixel radius glyph provided. 16-point Segoe UI Symbol is used for content text + to simplify the use of glyphs from that font. AutomationProperties.Name is used for the text below the glyph. + --> + <Style x:Key="AppBarButtonStyle" TargetType="ButtonBase"> + <Setter Property="Foreground" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> + <Setter Property="VerticalAlignment" Value="Stretch"/> + <Setter Property="FontFamily" Value="Segoe UI Symbol"/> + <Setter Property="FontWeight" Value="Normal"/> + <Setter Property="FontSize" Value="20"/> + <Setter Property="AutomationProperties.ItemType" Value="App Bar Button"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ButtonBase"> + <Grid x:Name="RootGrid" Width="100" Background="Transparent"> + <StackPanel VerticalAlignment="Top" Margin="0,12,0,11"> + <Grid Width="40" Height="40" Margin="0,0,0,5" HorizontalAlignment="Center"> + <TextBlock x:Name="BackgroundGlyph" Text="" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0" Foreground="{StaticResource AppBarItemBackgroundThemeBrush}"/> + <TextBlock x:Name="OutlineGlyph" Text="" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0"/> + <ContentPresenter x:Name="Content" HorizontalAlignment="Center" Margin="-1,-1,0,0" VerticalAlignment="Center"/> + </Grid> + <TextBlock + x:Name="TextLabel" + Text="{TemplateBinding AutomationProperties.Name}" + Foreground="{StaticResource AppBarItemForegroundThemeBrush}" + Margin="0,0,2,0" + FontSize="12" + TextAlignment="Center" + Width="88" + MaxHeight="32" + TextTrimming="WordEllipsis" + Style="{StaticResource BasicTextStyle}"/> + </StackPanel> + <Rectangle + x:Name="FocusVisualWhite" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="1.5"/> + <Rectangle + x:Name="FocusVisualBlack" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="0.5"/> + + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="ApplicationViewStates"> + <VisualState x:Name="FullScreenLandscape"/> + <VisualState x:Name="Filled"/> + <VisualState x:Name="FullScreenPortrait"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width"> + <DiscreteObjectKeyFrame KeyTime="0" Value="60"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Snapped"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width"> + <DiscreteObjectKeyFrame KeyTime="0" Value="60"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal"/> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverBackgroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation + Storyboard.TargetName="FocusVisualWhite" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + <DoubleAnimation + Storyboard.TargetName="FocusVisualBlack" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + <VisualState x:Name="PointerFocused" /> + </VisualStateGroup> + <VisualStateGroup x:Name="CheckStates"> + <VisualState x:Name="Checked"> + <Storyboard> + <DoubleAnimation Duration="0" To="0" Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Opacity"/> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundCheckedGlyph" Storyboard.TargetProperty="Visibility"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Unchecked"/> + <VisualState x:Name="Indeterminate"/> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- + Standard AppBarButton Styles for use with Button and ToggleButton + + An AppBarButton Style is provided for each of the glyphs in the Segoe UI Symbol font. + Uncomment any style you reference (as not all may be required). + --> + <Style x:Key="HelpAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HelpAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Help"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SearchAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SearchAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Search"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OpenFileAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OpenFileAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Open File"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NextAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NextAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Next"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PreviousAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PreviousAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Previous"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="No"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SettingsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SettingsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Settings"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LinksAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LinksAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Links"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ContentsBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AllAppsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Contents"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ReflowAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ReflowAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Reflow"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZoomInAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZoomInAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zoom In"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZoomOutAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZoomOutAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zoom Out"/> + <Setter Property="Content" Value=""/> + </Style> + + <!-- + + <Style x:Key="SkipBackAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SkipBackAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Skip Back"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SkipAheadAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SkipAheadAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Skip Ahead"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PlayAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PlayAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Play"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PauseAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PauseAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Pause"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="EditAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="EditAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Edit"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SaveAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SaveAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Save"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DeleteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DeleteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Delete"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DiscardAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DiscardAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Discard"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RemoveAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RemoveAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Remove"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AddAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AddAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Add"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="No"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="YesAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="YesAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Yes"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MoreAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MoreAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="More"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RedoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RedoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Redo"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UndoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UndoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Undo"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="HomeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HomeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Home"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OutAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OutAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Out"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NextAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NextAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Next"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PreviousAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PreviousAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Previous"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FavoriteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FavoriteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Favorite"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PhotoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PhotoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Photo"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SettingsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SettingsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Settings"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="VideoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="VideoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Video"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RefreshAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RefreshAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Refresh"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DownloadAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DownloadAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Download"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MailAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MailAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Mail"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SearchAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SearchAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Search"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="HelpAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HelpAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Help"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UploadAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UploadAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Upload"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="EmojiAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="EmojiAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Emoji"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TwoPageAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TwoPageAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Two Page"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LeaveChatAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LeaveChatAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Upload"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MailForwardAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MailForwardAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Forward Mail"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ClockAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ClockAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Clock"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SendAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SendAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Send"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CropAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CropAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Crop"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RotateCameraAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RotateCameraAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Rotate Camera"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PeopleAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PeopleAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="People"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ClosePaneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ClosePaneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Close Pane"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OpenPaneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OpenPaneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Open Pane"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="WorldAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="WorldAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="World"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FlagAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FlagAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Flag"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PreviewLinkAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PreviewLinkAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Preview Link"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="GlobeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="GlobeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Globe"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TrimAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TrimAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Trim"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AttachCameraAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AttachCameraAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Attach Camera"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZoomInAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZoomInAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zoom In"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BookmarksAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="BookmarksAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Bookmarks"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DocumentAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DocumentAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Document"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ProtectedDocumentAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ProtectedDocumentAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Protected Document"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PageAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PageAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Page"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BulletsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="BulletsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Bullets"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CommentAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CommentAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Comment"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="Mail2AppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="Mail2AppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Mail2"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ContactInfoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ContactInfoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Contact Info"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="HangUpAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HangUpAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Hang Up"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ViewAllAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ViewAllAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="View All"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MapPinAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MapPinAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Map Pin"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PhoneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PhoneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Phone"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="VideoChatAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="VideoChatAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Video Chat"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SwitchAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SwitchAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Switch"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ContactAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ContactAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Contact"/> + <Setter Property="Content" Value=""/> + </Style> + + --> + + <!-- + + <Style x:Key="RenameAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RenameAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Rename"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PinAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PinAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Pin"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MusicInfoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MusicInfoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Music Info"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="GoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="GoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Go"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="KeyboardAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="KeyboardAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Keyboard"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DockLeftAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DockLeftAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Dock Left"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DockRightAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DockRightAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Dock Right"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DockBottomAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DockBottomAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Dock Bottom"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RemoteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RemoteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Remote"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SyncAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SyncAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Sync"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RotateAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RotateAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Rotate"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ShuffleAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ShuffleAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Shuffle"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ListAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ListAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="List"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ShopAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ShopAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Shop"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SelectAllAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SelectAllAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Select All"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OrientationAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OrientationAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Orientation"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ImportAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ImportAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Import"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ImportAllAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ImportAllAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Import All"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BrowsePhotosAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="BrowsePhotosAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Browse Photos"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="WebcamAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="WebcamAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Webcam"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="PicturesAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PicturesAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Pictures"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SaveLocalAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SaveLocalAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Save Local"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CaptionAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CaptionAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Caption"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="StopAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="StopAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Stop"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ShowResultsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ShowResultsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Show Results"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="VolumeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="VolumeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Volume"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RepairAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RepairAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Repair"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MessageAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MessageAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Message"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="Page2AppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="Page2AppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Page2"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CalendarDayAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CalendarDayAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Day"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CalendarWeekAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CalendarWeekAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Week"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CalendarAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CalendarAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Calendar"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CharactersAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CharactersAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Characters"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MailReplyAllAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MailReplyAllAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Reply All"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ReadAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ReadAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Read"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LinkAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LinkAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Link"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AccountsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AccountsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Accounts"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ShowBccAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ShowBccAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Show Bcc"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="HideBccAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HideBccAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Hide Bcc"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="CutAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CutAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Cut"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AttachAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AttachAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Attach"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PasteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PasteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Paste"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FilterAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FilterAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Filter"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CopyAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CopyAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Copy"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="Emoji2AppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="Emoji2AppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Emoji2"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ImportantAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ImportantAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Important"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MailReplyAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MailReplyAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Reply"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SlideShowAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SlideShowAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Slideshow"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SortAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SortAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Sort"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ManageAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ManageAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Manage"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AllAppsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AllAppsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="All Apps"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DisconnectDriveAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DisconnectDriveAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Disconnect Drive"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MapDriveAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MapDriveAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Map Drive"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NewWindowAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NewWindowAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="New Window"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OpenWithAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OpenWithAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Open With"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ContactPresenceAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ContactPresenceAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Presence"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PriorityAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PriorityAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Priority"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UploadSkyDriveAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UploadSkyDriveAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Skydrive"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="GoToTodayAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="GoToTodayAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Today"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FontAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FontAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Font"/> + <Setter Property="Content" Value=""/> + </Style> + + --> + + <!-- + + <Style x:Key="FontColorAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FontColorAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Font Color"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="Contact2AppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="Contact2AppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Contact"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FolderppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FolderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Folder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AudioAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AudioAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Audio"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PlaceholderAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PlaceholderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Placeholder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ViewAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ViewAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="View"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SetLockScreenAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SetLockscreenAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Set Lockscreen"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SetTitleAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SetTitleAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Set Title"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CcAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CcAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Cc"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="StopSlideShowAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="StopSlideshowAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Stop Slideshow"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PermissionsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PermissionsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Permisions"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="HighlightAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="HighlightAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Highlight"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DisableUpdatesAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DisableUpdatesAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Disable Updates"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UnfavoriteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UnfavoriteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Unfavorite"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UnPinAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UnPinAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Unpin"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OpenLocalAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OpenLocalAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Open Loal"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MuteAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MuteAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Mute"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ItalicAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ItalicAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Italic"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="UnderlineAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UnderlineAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Underline"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BoldAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="BoldAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Bold"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MoveToFolderAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MoveToFolderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Move to Folder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LikeDislikeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LikeDislikeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Like/Dislike"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DislikeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DislikeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Dislike"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LikeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LikeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Like"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AlignRightAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AlignRightAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Align Right"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AlignCenterAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AlignCenterAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Align Center"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AlignLeftAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AlignLeftAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Align Left"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZoomAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZoomAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zoom"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZoomOutAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZoomOutAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zoom Out"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OpenFileAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OpenFileAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Open File"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OtherUserAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OtherUserAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Other User"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AdminAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AdminAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Admin"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="StreetAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="StreetAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Street"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MapAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MapAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Map"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ClearSelectionAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ClearSelectionAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Clear Selection"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FontDecreaseAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FontDecreaseAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Decrease Font"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FontIncreaseAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FontIncreaseAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Increase Font"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FontSizeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FontSizeAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Font Size"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="CellphoneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CellphoneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Cellphone"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ReshareAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ReshareAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Reshare"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TagAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TagAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Tag"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RepeatOneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RepeatOneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Repeat Once"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="RepeatAllAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="RepeatAllAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Repeat All"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OutlineStarAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OutlineStarAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Outline Star"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SolidStarAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SolidStarAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Solid Star"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CalculatorAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CalculatorAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Calculator"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="DirectionsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="DirectionsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Directions"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TargetAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TargetAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Target"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="LibraryAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="LibraryAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Library"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PhonebookAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PhonebookAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Phonebook"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MemoAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MemoAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Memo"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="MicrophoneAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="MicrophoneAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Microphone"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="PostUpdateAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="PostUpdateAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Post Update"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BackToWindowAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="BackToWindowAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Back to Window"/> + <Setter Property="Content" Value=""/> + </Style> + --> + + <!-- + <Style x:Key="FullScreenAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FullScreenAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Full Screen"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="NewFolderAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="NewFolderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="New Folder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="CalendarReplyAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="CalendarReplyAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Calendar Reply"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="UnsyncFolderAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="UnsyncFolderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Unsync Folder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ReportHackedAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ReportHackedAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Report Hacked"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SyncFolderAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SyncFolderAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Sync Folder"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="BlockContactAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="Block ContactAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="BlockContact"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="SwitchAppsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="SwitchAppsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Switch Apps"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="AddFriendAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="AddFriendAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Add Friend"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TouchPointerAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TouchPointerAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Touch Pointer"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="GoToStartAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="GoToStartAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Go to Start"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ZeroBarsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ZeroBarsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Zero Bars"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="OneBarAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="OneBarAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="One Bar"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="TwoBarsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="TwoBarsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Two Bars"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="ThreeBarsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="ThreeBarsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Three Bars"/> + <Setter Property="Content" Value=""/> + </Style> + <Style x:Key="FourBarsAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> + <Setter Property="AutomationProperties.AutomationId" Value="FourBarsAppBarButton"/> + <Setter Property="AutomationProperties.Name" Value="Four Bars"/> + <Setter Property="Content" Value=""/> + </Style> + + --> + + <!-- Title area styles --> + + <Style x:Key="PageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}"> + <Setter Property="TextWrapping" Value="NoWrap"/> + <Setter Property="VerticalAlignment" Value="Bottom"/> + <Setter Property="Margin" Value="0,0,30,40"/> + </Style> + + <Style x:Key="PageSubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource SubheaderTextStyle}"> + <Setter Property="TextWrapping" Value="NoWrap"/> + <Setter Property="VerticalAlignment" Value="Bottom"/> + <Setter Property="Margin" Value="0,0,0,40"/> + </Style> + + <Style x:Key="SnappedPageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource PageSubheaderTextStyle}"> + <Setter Property="Margin" Value="0,0,18,40"/> + </Style> + + <!-- + BackButtonStyle is used to style a Button for use in the title area of a page. Margins appropriate for + the conventional page layout are included as part of the style. + --> + <Style x:Key="BackButtonStyle" TargetType="Button"> + <Setter Property="MinWidth" Value="0"/> + <Setter Property="Width" Value="48"/> + <Setter Property="Height" Value="48"/> + <Setter Property="Margin" Value="36,0,36,36"/> + <Setter Property="VerticalAlignment" Value="Bottom"/> + <Setter Property="FontFamily" Value="Segoe UI Symbol"/> + <Setter Property="FontWeight" Value="Normal"/> + <Setter Property="FontSize" Value="56"/> + <Setter Property="AutomationProperties.AutomationId" Value="BackButton"/> + <Setter Property="AutomationProperties.Name" Value="Back"/> + <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="Button"> + <Grid x:Name="RootGrid"> + <Grid Margin="-1,-16,0,0"> + <TextBlock x:Name="BackgroundGlyph" Text="" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/> + <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/> + <TextBlock x:Name="ArrowGlyph" Text="" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/> + </Grid> + <Rectangle + x:Name="FocusVisualWhite" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="1.5"/> + <Rectangle + x:Name="FocusVisualBlack" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="0.5"/> + + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <DoubleAnimation + Storyboard.TargetName="ArrowGlyph" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + <DoubleAnimation + Storyboard.TargetName="NormalGlyph" + Storyboard.TargetProperty="Opacity" + To="0" + Duration="0"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation + Storyboard.TargetName="FocusVisualWhite" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + <DoubleAnimation + Storyboard.TargetName="FocusVisualBlack" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + <VisualState x:Name="PointerFocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- + PortraitBackButtonStyle is used to style a Button for use in the title area of a portrait page. Margins appropriate + for the conventional page layout are included as part of the style. + --> + <Style x:Key="PortraitBackButtonStyle" TargetType="Button" BasedOn="{StaticResource BackButtonStyle}"> + <Setter Property="Margin" Value="26,0,26,36"/> + </Style> + + <!-- + SnappedBackButtonStyle is used to style a Button for use in the title area of a snapped page. Margins appropriate + for the conventional page layout are included as part of the style. + + The obvious duplication here is necessary as the glyphs used in snapped are not merely smaller versions of the same + glyph but are actually distinct. + --> + <Style x:Key="SnappedBackButtonStyle" TargetType="Button"> + <Setter Property="MinWidth" Value="0"/> + <Setter Property="Margin" Value="20,0,0,0"/> + <Setter Property="VerticalAlignment" Value="Bottom"/> + <Setter Property="FontFamily" Value="Segoe UI Symbol"/> + <Setter Property="FontWeight" Value="Normal"/> + <Setter Property="FontSize" Value="26.66667"/> + <Setter Property="AutomationProperties.AutomationId" Value="BackButton"/> + <Setter Property="AutomationProperties.Name" Value="Back"/> + <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="Button"> + <Grid x:Name="RootGrid" Width="36" Height="36" Margin="-3,0,7,33"> + <Grid Margin="-1,-1,0,0"> + <TextBlock x:Name="BackgroundGlyph" Text="" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/> + <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonSnappedGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/> + <TextBlock x:Name="ArrowGlyph" Text="" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/> + </Grid> + <Rectangle + x:Name="FocusVisualWhite" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="1.5"/> + <Rectangle + x:Name="FocusVisualBlack" + IsHitTestVisible="False" + Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" + StrokeEndLineCap="Square" + StrokeDashArray="1,1" + Opacity="0" + StrokeDashOffset="0.5"/> + + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualState x:Name="Normal" /> + <VisualState x:Name="PointerOver"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Pressed"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/> + </ObjectAnimationUsingKeyFrames> + <DoubleAnimation + Storyboard.TargetName="ArrowGlyph" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + <DoubleAnimation + Storyboard.TargetName="NormalGlyph" + Storyboard.TargetProperty="Opacity" + To="0" + Duration="0"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Disabled"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility"> + <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + </VisualStateGroup> + <VisualStateGroup x:Name="FocusStates"> + <VisualState x:Name="Focused"> + <Storyboard> + <DoubleAnimation + Storyboard.TargetName="FocusVisualWhite" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + <DoubleAnimation + Storyboard.TargetName="FocusVisualBlack" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0"/> + </Storyboard> + </VisualState> + <VisualState x:Name="Unfocused" /> + <VisualState x:Name="PointerFocused" /> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + + <!-- Item templates --> + + <!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage --> + <DataTemplate x:Key="Standard250x250ItemTemplate"> + <Grid HorizontalAlignment="Left" Width="250" Height="250"> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"> + <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> + </Border> + <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}"> + <TextBlock Text="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/> + <TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- Grid-appropriate 500 by 130 pixel item template as seen in the GroupDetailPage --> + <DataTemplate x:Key="Standard500x130ItemTemplate"> + <Grid Height="110" Width="480" Margin="10"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> + <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> + </Border> + <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> + <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- List-appropriate 130 pixel high item template as seen in the SplitPage --> + <DataTemplate x:Key="Standard130ItemTemplate"> + <Grid Height="110" Margin="6"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> + <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> + </Border> + <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> + <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- + List-appropriate 80 pixel high item template as seen in the SplitPage when Filled, and + the following pages when snapped: GroupedItemsPage, GroupDetailPage, and ItemsPage + --> + <DataTemplate x:Key="Standard80ItemTemplate"> + <Grid Margin="6"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="60" Height="60"> + <Image Source="{Binding Image}" Stretch="UniformToFill"/> + </Border> + <StackPanel Grid.Column="1" Margin="10,0,0,0"> + <TextBlock Text="{Binding Title}" Style="{StaticResource ItemTextStyle}" MaxHeight="40"/> + <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- Grid-appropriate 300 by 70 pixel item template as seen in the SearchResultsPage --> + <DataTemplate x:Key="StandardSmallIcon300x70ItemTemplate"> + <Grid Width="294" Margin="6"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40"> + <Image Source="{Binding Image}" Stretch="UniformToFill"/> + </Border> + <StackPanel Grid.Column="1" Margin="10,-10,0,0"> + <TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- List-appropriate 70 pixel high item template as seen in the SearchResultsPage when Snapped --> + <DataTemplate x:Key="StandardSmallIcon70ItemTemplate"> + <Grid Margin="6"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40"> + <Image Source="{Binding Image}" Stretch="UniformToFill"/> + </Border> + <StackPanel Grid.Column="1" Margin="10,-10,0,0"> + <TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> + <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> + </StackPanel> + </Grid> + </DataTemplate> + + <!-- + 190x130 pixel item template for displaying file previews as seen in the FileOpenPickerPage + Includes an elaborate tooltip to display title and description text + --> + <DataTemplate x:Key="StandardFileWithTooltip190x130ItemTemplate"> + <Grid> + <Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"> + <Image + Source="{Binding Image}" + Width="190" + Height="130" + HorizontalAlignment="Center" + VerticalAlignment="Center" + Stretch="Uniform"/> + </Grid> + <ToolTipService.Placement>Mouse</ToolTipService.Placement> + <ToolTipService.ToolTip> + <ToolTip> + <ToolTip.Style> + <Style TargetType="ToolTip"> + <Setter Property="BorderBrush" Value="{StaticResource ToolTipBackgroundThemeBrush}" /> + <Setter Property="Padding" Value="0" /> + </Style> + </ToolTip.Style> + + <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto"/> + <ColumnDefinition Width="*"/> + </Grid.ColumnDefinitions> + + <Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="20"> + <Image + Source="{Binding Image}" + Width="160" + Height="160" + HorizontalAlignment="Center" + VerticalAlignment="Center" + Stretch="Uniform"/> + </Grid> + <StackPanel Width="200" Grid.Column="1" Margin="0,20,20,20"> + <TextBlock Text="{Binding Title}" TextWrapping="NoWrap" Style="{StaticResource BodyTextStyle}"/> + <TextBlock Text="{Binding Description}" MaxHeight="140" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" Style="{StaticResource BodyTextStyle}"/> + </StackPanel> + </Grid> + </ToolTip> + </ToolTipService.ToolTip> + </Grid> + </DataTemplate> + + <!-- ScrollViewer styles --> + + <Style x:Key="HorizontalScrollViewerStyle" TargetType="ScrollViewer"> + <Setter Property="HorizontalScrollBarVisibility" Value="Auto"/> + <Setter Property="VerticalScrollBarVisibility" Value="Disabled"/> + <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" /> + <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" /> + <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> + </Style> + + <Style x:Key="VerticalScrollViewerStyle" TargetType="ScrollViewer"> + <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/> + <Setter Property="VerticalScrollBarVisibility" Value="Auto"/> + <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" /> + <Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" /> + <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> + </Style> + + <!-- Page layout roots typically use entrance animations and a theme-appropriate background color --> + + <Style x:Key="LayoutRootStyle" TargetType="Panel"> + <Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundThemeBrush}"/> + <Setter Property="ChildrenTransitions"> + <Setter.Value> + <TransitionCollection> + <EntranceThemeTransition/> + </TransitionCollection> + </Setter.Value> + </Setter> + </Style> +</ResourceDictionary> diff --git a/platform/winrt/mupdf_cpp/DocumentPage.cpp b/platform/winrt/mupdf_cpp/DocumentPage.cpp new file mode 100644 index 00000000..3ee99dcd --- /dev/null +++ b/platform/winrt/mupdf_cpp/DocumentPage.cpp @@ -0,0 +1,15 @@ +#include "pch.h" +#include "DocumentPage.h" + +namespace mupdf_cpp +{ + DocumentPage::DocumentPage(void) + { + this->Image = nullptr; + this->Height = 0; + this->Width = 0; + this->Zoom = 1.0; + this->Content = NOTSET; + _isPropertyChangedObserved = false; + } +} diff --git a/platform/winrt/mupdf_cpp/DocumentPage.h b/platform/winrt/mupdf_cpp/DocumentPage.h new file mode 100644 index 00000000..41c83bc3 --- /dev/null +++ b/platform/winrt/mupdf_cpp/DocumentPage.h @@ -0,0 +1,195 @@ +#pragma once + +#include "RectList.h" +#include <collection.h> + +/* Used for binding to the xaml in the scroll view. */ +using namespace Windows::UI::Xaml::Media::Imaging; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::Foundation::Collections; +using namespace Windows::UI::Xaml::Data; + +typedef enum { + FULL_RESOLUTION = 0, + THUMBNAIL, + DUMMY, + OLD_RESOLUTION, + NOTSET +} Page_Content_t; + +namespace mupdf_cpp +{ + // enables data binding with this class + [Windows::UI::Xaml::Data::Bindable] + public ref class DocumentPage sealed : Windows::UI::Xaml::Data::INotifyPropertyChanged + { + private: + int height; + int width; + double zoom; + WriteableBitmap^ image; + Page_Content_t content; + IVector<RectList^>^ textbox; + IVector<RectList^>^ linkbox; + public: + DocumentPage(void); + + /* Note IVector needed for WinRT interface */ + property IVector<RectList^>^ TextBox + { + IVector<RectList^>^ get() + { + return (textbox); + } + + void set(IVector<RectList^>^ value) + { + textbox = value; + DocumentPage::OnPropertyChanged("TextBox"); + } + } + + property IVector<RectList^>^ LinkBox + { + IVector<RectList^>^ get() + { + return (linkbox); + } + + void set(IVector<RectList^>^ value) + { + linkbox = value; + DocumentPage::OnPropertyChanged("LinkBox"); + } + } + + property int Content + { + int get() + { + return ((int) content); + } + + void set(int value) + { + if (value > NOTSET) + { + throw ref new Platform::InvalidArgumentException(); + } + content = (Page_Content_t) value; + } + } + + property int Height + { + int get() + { + return height; + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + height = value; + } + } + + property int Width + { + int get() + { + return width; + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + width = value; + } + } + + property double Zoom + { + double get() + { + return zoom; + } + + void set(double value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + zoom = value; + } + } + + property WriteableBitmap^ Image + { + WriteableBitmap^ get() + { + return image; + } + + void set(WriteableBitmap^ value) + { + image = value; + DocumentPage::OnPropertyChanged("Image"); + } + } + + private: + bool _isPropertyChangedObserved; + event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ _privatePropertyChanged; + + protected: + /// <summary> + /// Notifies listeners that a property value has changed. + /// </summary> + /// <param name="propertyName">Name of the property used to notify listeners.</param> + void OnPropertyChanged(String^ propertyName) + { + if (_isPropertyChangedObserved) + { + PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); + } + } + + public: + + // in c++, it is not neccessary to include definitions + // of add, remove, and raise. These definitions have + // been made explicitly here so that we can check if + // the event has listeners before firing the event. + virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged + { + virtual Windows::Foundation::EventRegistrationToken add(Windows::UI::Xaml::Data::PropertyChangedEventHandler^ e) + { + _isPropertyChangedObserved = true; + return _privatePropertyChanged += e; + } + + virtual void remove(Windows::Foundation::EventRegistrationToken t) + { + _privatePropertyChanged -= t; + } + + protected: + virtual void raise(Object^ sender, Windows::UI::Xaml::Data::PropertyChangedEventArgs^ e) + { + if (_isPropertyChangedObserved) + { + _privatePropertyChanged(sender, e); + } + } + } +#pragma endregion + }; +} diff --git a/platform/winrt/mupdf_cpp/MainPage.xaml b/platform/winrt/mupdf_cpp/MainPage.xaml new file mode 100644 index 00000000..22fbe5da --- /dev/null +++ b/platform/winrt/mupdf_cpp/MainPage.xaml @@ -0,0 +1,276 @@ +<Page + x:Class="mupdf_cpp.MainPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:local="using:winapp" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d"> + + <Page.BottomAppBar> + <AppBar> + <Grid Margin="38,0,0,0"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*"/> + <ColumnDefinition Width="Auto"/> + </Grid.ColumnDefinitions> + <Slider x:Name="xaml_PageSlider" Minimum="0" Maximum="10" ValueChanged="Slider_ValueChanged" Grid.Column="0" Margin="10,0" VerticalAlignment="Center" /> + <Button x:Name="Find_File" Style="{StaticResource OpenFileAppBarButtonStyle}" Tag="OpenFile" HorizontalAlignment="Right" Grid.Column="1" Click="Picker"/> + </Grid> + </AppBar> + </Page.BottomAppBar> + <Page.TopAppBar> + <AppBar x:Name="TopAppBar1" AutomationProperties.Name="Top App Bar" Loaded="topAppBar_Loaded"> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="Auto"/> + </Grid.RowDefinitions> + <StackPanel x:Name="LeftPanel" Orientation="Horizontal" HorizontalAlignment="Left" > + <TextBox x:Name="FindBox" Width="200" Height="20" Visibility="Collapsed"/> + <Button x:Name="PrevSearch" Style="{StaticResource PreviousAppBarButtonStyle}" Visibility="Collapsed" Click="SearchPrev"/> + <Button x:Name="NextSearch" Style="{StaticResource NextAppBarButtonStyle}" Visibility="Collapsed" Click="SearchNext"/> + + </StackPanel> + <StackPanel x:Name="RightPanel" Orientation="Horizontal" HorizontalAlignment="Right"> + <Button x:Name="Search" Style="{StaticResource SearchAppBarButtonStyle}" Tag="Search" Click="Searcher"/> + <Button x:Name="ZoomIn" Style="{StaticResource ZoomInAppBarButtonStyle}" Tag="ZoomIn" Click="ZoomInPress"/> + <Button x:Name="ZoomOut" Style="{StaticResource ZoomOutAppBarButtonStyle}" Tag="ZoomOut" Click="ZoomOutPress"/> + <Button x:Name="Contents" Style="{StaticResource ContentsBarButtonStyle}" Tag="Contents" Click="ContentDisplay"/> + <Button x:Name="Links" Style="{StaticResource LinksAppBarButtonStyle}" Tag="Links" Click="Linker"/> + <Button x:Name="Reflow" Style="{StaticResource ReflowAppBarButtonStyle}" Tag="Reflow" Click="Reflower"/> + </StackPanel> + </Grid> + </AppBar> + </Page.TopAppBar> + + <Grid x:Name="xaml_OutsideGrid"> + <Grid.Background> + <LinearGradientBrush EndPoint="-0.074,-0.068" StartPoint="1.027,1.024"> + <GradientStop Color="Black"/> + <GradientStop Color="White"/> + <GradientStop Color="White" Offset="0.919"/> + <GradientStop Color="#FFCDCDCD" Offset="0.741"/> + <GradientStop Color="#FF909090" Offset="0.524"/> + <GradientStop Color="#FF737373" Offset="0.421"/> + <GradientStop Color="#FF2A2A2A" Offset="0.155"/> + <GradientStop Color="#FF1A1A1A" Offset="0.097"/> + <GradientStop Color="#FF040404" Offset="0.018"/> + <GradientStop Color="#FFB3B3B3" Offset="0.651"/> + <GradientStop Color="#FF989898" Offset="0.556"/> + <GradientStop Color="#FF666666" Offset="0.375"/> + <GradientStop Color="#FF4B4B4B" Offset="0.278"/> + <GradientStop Color="#FF3A3A3A" Offset="0.215"/> + </LinearGradientBrush> + </Grid.Background> + + <Grid x:Name="xaml_MainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SizeChanged="GridSizeChanged"> + <Canvas x:Name="xaml_zoomCanvas" HorizontalAlignment="Center" VerticalAlignment="Center" ManipulationMode="All" > + <!-- Horizontal flip view --> + <FlipView x:Name="xaml_horiz_flipView" SelectionChanged="FlipView_SelectionChanged" VerticalAlignment="Center" + HorizontalAlignment="Center"> + <FlipView.ItemsPanel> + <ItemsPanelTemplate> + <VirtualizingStackPanel Orientation="Horizontal"/> + </ItemsPanelTemplate> + </FlipView.ItemsPanel> + <FlipView.ItemTemplate> + <DataTemplate> + <ScrollViewer + Name="xaml_ScrollView_h" + ZoomMode="Enabled" + ViewChanged="ScrollChanged" + HorizontalScrollMode="Auto" + VerticalScrollMode="Auto" + VerticalSnapPointsType="None" + HorizontalSnapPointsType="None" + HorizontalScrollBarVisibility="Auto" + VerticalScrollBarVisibility="Auto" + MinZoomFactor="0.25" + MaxZoomFactor="4"> + <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding Height}" Width="{Binding Width}"> + <Image Source="{Binding Image}" Width="{Binding Width}" Height="{Binding Height}" + Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/> + <!-- After much work, figured out how to have a binding for the rectangles. TextBox and LinkBox are + a collection that is in the other main collection used for the scroll viewer. It works + nicely and cleanly once you figure out how to set up all the templates and the bindings --> + <ItemsControl ItemsSource="{Binding Path=TextBox}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <Canvas/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemContainerStyle> + <Style TargetType="ContentPresenter"> + <Setter Property="Canvas.Left" Value="{Binding Left}"/> + <Setter Property="Canvas.Top" Value="{Binding Top}"/> + </Style> + </ItemsControl.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Rectangle Tag="{Binding Path=Index}" Width="{Binding Path=Width}" Height="{Binding Path=Height}" Fill="{Binding Path=Color}"> + <Rectangle.RenderTransform> + <TranslateTransform X="{Binding Path=X}" Y="{Binding Path=Y}"/> + </Rectangle.RenderTransform> + </Rectangle> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + + <ItemsControl ItemsSource="{Binding Path=LinkBox}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <Canvas/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemContainerStyle> + <Style TargetType="ContentPresenter"> + <Setter Property="Canvas.Left" Value="{Binding Left}"/> + <Setter Property="Canvas.Top" Value="{Binding Top}"/> + </Style> + </ItemsControl.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Rectangle Tag="{Binding Path=Index}" Width="{Binding Path=Width}" Height="{Binding Path=Height}" Fill="{Binding Path=Color}" IsTapEnabled="True" Tapped="LinkTapped"> + <Rectangle.RenderTransform> + <TranslateTransform X="{Binding Path=X}" Y="{Binding Path=Y}"/> + </Rectangle.RenderTransform> + </Rectangle> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + + </Canvas> + </ScrollViewer> + </DataTemplate> + </FlipView.ItemTemplate> + </FlipView> + <!-- Vertical flip view --> + <FlipView x:Name="xaml_vert_flipView" SelectionChanged="FlipView_SelectionChanged" VerticalAlignment="Center" + HorizontalAlignment="Center" IsEnabled="False" Opacity="0"> + <FlipView.ItemsPanel> + <ItemsPanelTemplate> + <VirtualizingStackPanel Orientation="Vertical"/> + </ItemsPanelTemplate> + </FlipView.ItemsPanel> + <FlipView.ItemTemplate> + <DataTemplate> + <ScrollViewer + Name="xaml_ScrollView_v" + ZoomMode="Enabled" + ViewChanged="ScrollChanged" + HorizontalScrollMode="Auto" + VerticalScrollMode="Auto" + VerticalSnapPointsType="None" + HorizontalSnapPointsType="None" + HorizontalScrollBarVisibility="Auto" + VerticalScrollBarVisibility="Auto" + MinZoomFactor="0.25" + MaxZoomFactor="4"> + <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding Height}" Width="{Binding Width}"> + <Image Source="{Binding Image}" Width="{Binding Width}" Height="{Binding Height}" + Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/> + <ItemsControl ItemsSource="{Binding Path=TextBox}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <Canvas/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemContainerStyle> + <Style TargetType="ContentPresenter"> + <Setter Property="Canvas.Left" Value="{Binding Left}"/> + <Setter Property="Canvas.Top" Value="{Binding Top}"/> + </Style> + </ItemsControl.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Rectangle Width="{Binding Path=Width}" Height="{Binding Path=Height}" Fill="{Binding Path=Color}" IsTapEnabled="True" Tapped="LinkTapped"> + <Rectangle.RenderTransform> + <TranslateTransform X="{Binding Path=X}" Y="{Binding Path=Y}"/> + </Rectangle.RenderTransform> + </Rectangle> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + + <ItemsControl ItemsSource="{Binding Path=LinkBox}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <Canvas/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemContainerStyle> + <Style TargetType="ContentPresenter"> + <Setter Property="Canvas.Left" Value="{Binding Left}"/> + <Setter Property="Canvas.Top" Value="{Binding Top}"/> + </Style> + </ItemsControl.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate> + <Rectangle Width="{Binding Path=Width}" Height="{Binding Path=Height}" Fill="{Binding Path=Color}"> + <Rectangle.RenderTransform> + <TranslateTransform X="{Binding Path=X}" Y="{Binding Path=Y}"/> + </Rectangle.RenderTransform> + </Rectangle> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + </Canvas> + </ScrollViewer> + </DataTemplate> + </FlipView.ItemTemplate> + </FlipView> + </Canvas> + <ListView x:Name="xaml_ListView" Foreground="Black" HorizontalAlignment="Stretch" + VerticalAlignment="Stretch" Opacity="0" IsItemClickEnabled="True" + ItemClick="ContentSelected" SelectionMode="Single" IsEnabled="False"> + + <ListView.ItemTemplate> + <DataTemplate> + <StackPanel Margin="5,5,0,0" HorizontalAlignment="Left"> + <TextBlock TextWrapping="Wrap" Text="{Binding StringMargin}" FontFamily="Segoe UI" FontSize="20" /> + </StackPanel> + </DataTemplate> + </ListView.ItemTemplate> + + <ListView.Background> + <SolidColorBrush Color="LightGray"></SolidColorBrush> + </ListView.Background> + </ListView> + </Grid> + <WebView x:Name="xaml_WebView" HorizontalAlignment="Stretch" Width="Auto" Height="Auto" + VerticalAlignment="Stretch" Visibility="Collapsed" + ScrollViewer.HorizontalScrollBarVisibility="Visible" + ScrollViewer.VerticalScrollBarVisibility="Visible" + ScrollViewer.VerticalScrollMode="Enabled" + ScrollViewer.HorizontalScrollMode="Enabled" + ScrollViewer.ZoomMode="Enabled"/> + + <StackPanel x:Name="xaml_ProgressStack" Opacity="1" VerticalAlignment="Center" Margin="0,15" HorizontalAlignment="Center" Visibility="Collapsed"> + <Border BorderThickness="5" BorderBrush="Black" > + <StackPanel Background="LightGray" HorizontalAlignment="Left" Width="756" > + <TextBlock HorizontalAlignment="Center" Margin="10" + Text="Text Search Progress" FontSize="20"/> + <ProgressBar x:Name="xaml_Progress" Margin="5" Height="15" + IsIndeterminate="False" Maximum="100" VerticalAlignment="Stretch" /> + <Button HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10" Click="CancelSearch" Height="39"> + <TextBlock HorizontalAlignment="Center" Text="Cancel"/> + </Button> + </StackPanel> + </Border> + </StackPanel> + + <StackPanel x:Name="xaml_PasswordStack" Opacity="1" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="Collapsed"> + <Border BorderThickness="5" BorderBrush="Black" > + <StackPanel Background="LightGray" > + <TextBlock HorizontalAlignment="Center" Margin="10" + Text="Password Required" FontSize="20"/> + <PasswordBox x:Name="xaml_password" Height="35" Width="400" Margin="20"/> + <Button HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10" Click="PasswordOK" Height="39"> + <TextBlock HorizontalAlignment="Center" Text="OK"/> + </Button> + </StackPanel> + </Border> + </StackPanel> + </Grid> +</Page> diff --git a/platform/winrt/mupdf_cpp/MainPage.xaml.cpp b/platform/winrt/mupdf_cpp/MainPage.xaml.cpp new file mode 100644 index 00000000..d31c2b94 --- /dev/null +++ b/platform/winrt/mupdf_cpp/MainPage.xaml.cpp @@ -0,0 +1,1479 @@ +// +// MainPage.xaml.cpp +// Implementation of the MainPage class. +// + +#include "pch.h" +#include "MainPage.xaml.h" + +#define LOOK_AHEAD 0 /* A +/- count on the pages to pre-render */ +#define THUMB_PREADD 10 +#define MIN_SCALE 0.5 + +#define SCALE_THUMB 0.1 + +#define BLANK_WIDTH 17 +#define BLANK_HEIGHT 22 + +#define KEYBOARD_ZOOM_STEP 0.25 +#define ZOOM_MAX 4 +#define ZOOM_MIN 0.25 + +#define KEY_PLUS 0xbb +#define KEY_MINUS 0xbd +#define ZOOM_IN 0 +#define ZOOM_OUT 1 + +static float screenScale = 1; + +using namespace mupdf_cpp; +using namespace Windows::Foundation; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Controls::Primitives; +using namespace Windows::UI::Xaml::Data; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::UI::Xaml::Navigation; +using namespace Windows::Graphics::Display; + +//****************** Added ***************** +using namespace Windows::Storage::Pickers; +using namespace Windows::Devices::Enumeration; +using namespace concurrency; +using namespace Windows::Graphics::Imaging; +//****************** End Add **************** + +#ifndef NDEBUG +unsigned int _mainThreadId = 0U; + +#ifdef __cplusplus +extern "C" { +#endif + + // The IsMainThread function returns true if the current thread is the app's main thread and false otherwise. + bool IsMainThread() + { + return (_mainThreadId == GetCurrentThreadId()); + } + + // The IsBackgroundThread function returns false if the current thread is the app's main thread and true otherwise. + bool IsBackgroundThread() + { + return (_mainThreadId != GetCurrentThreadId()); + } + + // The RecordMainThread function registers the main thread ID for use by the IsMainThread and IsBackgroundThread functions. + void RecordMainThread() + { + _mainThreadId = GetCurrentThreadId(); + } + +#ifdef __cplusplus +} +#endif + +#endif /* not NDEBUG */ + +mupdf_cpp::MainPage::MainPage() +{ + InitializeComponent(); + Application::Current->Suspending += + ref new SuspendingEventHandler(this, &MainPage::App_Suspending); + m_textcolor="#402572AC"; + m_linkcolor="#40AC7225"; + mu_doc = nullptr; + m_docPages = ref new Platform::Collections::Vector<DocumentPage^>(); + m_thumbnails = ref new Platform::Collections::Vector<DocumentPage^>(); + m_page_link_list = ref new Platform::Collections::Vector<IVector<RectList^>^>(); + m_text_list = ref new Platform::Collections::Vector<RectList^>(); + m_linkset = ref new Platform::Collections::Vector<int>(); + CleanUp(); + RecordMainThread(); + /* So that we can catch special loading events (e.g. open with) */ + _pageLoadedHandlerToken = Loaded += ref new RoutedEventHandler(this, &MainPage::Page_Loaded); +} + +/* Used during launch of application from file */ +void MainPage::Page_Loaded(Object^ sender, RoutedEventArgs^ e) +{ + MainPage^ rootPage = dynamic_cast<MainPage^>(sender); + if (rootPage->FileEvent != nullptr) + { + /* Launched with an "open with", or as default app */ + if (rootPage->FileEvent->Files->Size > 0) + { + IStorageItem ^file = rootPage->FileEvent->Files->GetAt(0); + StorageFile ^sfile = safe_cast<StorageFile^>(file); + + OpenDocumentPrep(sfile); + } + } +} + +/// <summary> +/// Invoked when this page is about to be displayed in a Frame. +/// </summary> +/// <param name="e">Event data that describes how this page was reached. The Parameter +/// property is typically used to configure the page.</param> +void MainPage::OnNavigatedTo(NavigationEventArgs^ e) +{ + +} + +void mupdf_cpp::MainPage::App_Suspending(Object^ sender, SuspendingEventArgs^ e) +{ + +} + +void mupdf_cpp::MainPage::ExitInvokedHandler(Windows::UI::Popups::IUICommand^ command) +{ + +} + +void mupdf_cpp::MainPage::OKInvokedHandler(Windows::UI::Popups::IUICommand^ command) +{ + +} + +void mupdf_cpp::MainPage::NotifyUser(String^ strMessage, NotifyType_t type) +{ + MessageDialog^ msg = ref new MessageDialog(strMessage); + UICommand^ ExitCommand = nullptr; + UICommand^ OKCommand = nullptr; + + switch (type) + { + case StatusMessage: + OKCommand = ref new UICommand("OK", + ref new UICommandInvokedHandler(this, &mupdf_cpp::MainPage::OKInvokedHandler)); + msg->Commands->Append(OKCommand); + /// Set the command that will be invoked by default + msg->DefaultCommandIndex = 0; + // Set the command to be invoked when escape is pressed + msg->CancelCommandIndex = 1; + break; + case ErrorMessage: + ExitCommand = ref new UICommand("Exit", + ref new UICommandInvokedHandler(this, &mupdf_cpp::MainPage::ExitInvokedHandler)); + msg->Commands->Append(ExitCommand); + /// Set the command that will be invoked by default + msg->DefaultCommandIndex = 0; + // Set the command to be invoked when escape is pressed + msg->CancelCommandIndex = 1; + break; + default: + break; + } + // Show the message dialog + msg->ShowAsync(); +} + +bool mupdf_cpp::MainPage::EnsureUnsnapped() +{ + // FilePicker APIs will not work if the application is in a snapped state. + // If an app wants to show a FilePicker while snapped, it must attempt to unsnap first + + bool unsnapped = (ApplicationView::Value != ApplicationViewState::Snapped || + ApplicationView::TryUnsnap()); + if (!unsnapped) + { + NotifyUser("Cannot unsnap the application", StatusMessage); + } + return unsnapped; +} + +void mupdf_cpp::MainPage::Picker(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (!EnsureUnsnapped()) + return; + + FileOpenPicker^ openPicker = ref new FileOpenPicker(); + openPicker->ViewMode = PickerViewMode::List; + openPicker->SuggestedStartLocation = PickerLocationId::DocumentsLibrary; + openPicker->FileTypeFilter->Append(".pdf"); + openPicker->FileTypeFilter->Append(".xps"); + openPicker->FileTypeFilter->Append(".cbz"); + openPicker->FileTypeFilter->Append(".oxps"); + + create_task(openPicker->PickSingleFileAsync()).then([this](StorageFile^ file) + { + if (file) + { + this->OpenDocumentPrep(file); + } + else + { + /* Nothing selected */ + } + }); +} + +/* Set the page with the new raster information */ +void MainPage::UpdatePage(int page_num, InMemoryRandomAccessStream^ ras, + Point ras_size, Page_Content_t content_type) +{ + assert(IsMainThread()); + + WriteableBitmap ^bmp = ref new WriteableBitmap(ras_size.X, ras_size.Y); + bmp->SetSource(ras); + + DocumentPage^ doc_page = ref new DocumentPage(); + doc_page->Image = bmp; + + if (content_type == THUMBNAIL) + { + doc_page->Height = ras_size.Y / SCALE_THUMB; + doc_page->Width = ras_size.X / SCALE_THUMB; + } + else + { + doc_page->Height = ras_size.Y; + doc_page->Width = ras_size.X; + } + doc_page->Content = content_type; + + /* We do not want flipview change notification to occur for ourselves */ + m_page_update = true; + this->m_docPages->SetAt(page_num, doc_page); + m_page_update = false; +} + +/* Set the page with the new raster information but only the image data */ +void MainPage::ReplaceImage(int page_num, InMemoryRandomAccessStream^ ras, + Point ras_size) +{ + assert(IsMainThread()); + + WriteableBitmap ^bmp = ref new WriteableBitmap(ras_size.X, ras_size.Y); + bmp->SetSource(ras); + + DocumentPage^ doc_page = this->m_docPages->GetAt(page_num); + doc_page->Image = bmp; + + doc_page->Height = ras_size.Y; + doc_page->Width = ras_size.X; +} + +Point MainPage::ComputePageSize(spatial_info_t spatial_info, int page_num) +{ + Point screenSize; + Point pageSize; + Point size = mu_doc->GetPageSize(page_num); + + screenSize = spatial_info.size; + screenSize.Y *= screenScale; + screenSize.X *= screenScale; + + float hscale = screenSize.X / size.X; + float vscale = screenSize.Y / size.Y; + float scale = min(hscale, vscale); + pageSize.X = size.X * scale * spatial_info.scale_factor; + pageSize.Y = size.Y * scale * spatial_info.scale_factor; + + return pageSize; +} + +static Point fitPageToScreen(Point page, Point screen) +{ + Point pageSize; + + float hscale = screen.X / page.X; + float vscale = screen.Y / page.Y; + float scale = min(hscale, vscale); + pageSize.X = floorf(page.X * scale) / page.X; + pageSize.Y = floorf(page.Y * scale) / page.Y; + + return pageSize; +} + +spatial_info_t MainPage::InitSpatial(double scale) +{ + spatial_info_t value; + + value.size.Y = this->ActualHeight; + value.size.X = this->ActualWidth; + value.scale_factor = scale; + + return value; +} + +void Prepare_bmp(int width, int height, DataWriter ^dw) +{ + int row_size = width * 4; + int bmp_size = row_size * height + 54; + + dw->WriteString("BM"); + dw->ByteOrder = ByteOrder::LittleEndian; + dw->WriteInt32(bmp_size); + dw->WriteInt16(0); + dw->WriteInt16(0); + dw->WriteInt32(54); + dw->WriteInt32(40); + dw->WriteInt32(width); + dw->WriteInt32(height); + dw->WriteInt16(1); + dw->WriteInt16(32); + dw->WriteInt32(0); + dw->WriteInt32(row_size * height); + dw->WriteInt32(2835); + dw->WriteInt32(2835); + dw->WriteInt32(0); + dw->WriteInt32(0); +} + +void MainPage::ReleasePages(int old_page, int new_page) +{ + if (old_page == new_page) return; + /* To keep from having memory issue reset the page back to + the thumb if we are done rendering the thumbnails */ + for (int k = old_page - LOOK_AHEAD; k <= old_page + LOOK_AHEAD; k++) + { + if (k < new_page - LOOK_AHEAD || k > new_page + LOOK_AHEAD) + { + if (k >= 0 && k < this->m_num_pages) + { + SetThumb(k, true); + } + } + } +} + +/* Return this page from a full res image to the thumb image or only set + to thumb if it has not already been set */ +void MainPage::SetThumb(int page_num, bool replace) +{ + /* See what is there now */ + auto doc = this->m_docPages->GetAt(page_num); + if (doc->Content == THUMBNAIL) return; + if (doc->Content == FULL_RESOLUTION && replace == false) return; + + if (this->m_thumbnails->Size > page_num) + { + m_page_update = true; + this->m_docPages->SetAt(page_num, this->m_thumbnails->GetAt(page_num)); + m_page_update = false; + } +} + +/* Create white image for us to use as place holder in large document for flip + view filling instead of the thumbnail image */ +void MainPage::CreateBlank(int width, int height) +{ + Array<unsigned char>^ bmp_data = ref new Array<unsigned char>(height * 4 * width); + /* Set up the memory stream */ + WriteableBitmap ^bmp = ref new WriteableBitmap(width, height); + InMemoryRandomAccessStream ^ras = ref new InMemoryRandomAccessStream(); + DataWriter ^dw = ref new DataWriter(ras->GetOutputStreamAt(0)); + /* Go ahead and write our header data into the memory stream */ + Prepare_bmp(width, height, dw); + + /* Set the data to all white */ + memset(bmp_data->Data, 255, height * 4 * width); + + /* Write the data */ + dw->WriteBytes(bmp_data); + + DataWriterStoreOperation^ result = dw->StoreAsync(); + /* Block on the Async call */ + while(result->Status != AsyncStatus::Completed) { + } + /* And store in a the image brush */ + bmp->SetSource(ras); + m_BlankBmp = bmp; +} + +void mupdf_cpp::MainPage::SetFlipView() +{ + int height = this->ActualHeight; + int width = this->ActualWidth; + + CreateBlank(BLANK_WIDTH, BLANK_HEIGHT); + /* Set the current flip view mode */ + if (height > width) + this->m_curr_flipView = xaml_vert_flipView; + else + this->m_curr_flipView = xaml_horiz_flipView; +} + +/* Clean up everything as we are opening a new document after having another + one open */ +void mupdf_cpp::MainPage::CleanUp() +{ + m_init_done = false; + /* Remove current pages in the flipviews */ + if (m_docPages != nullptr && m_docPages->Size > 0) + m_docPages->Clear(); + if (m_thumbnails != nullptr && m_thumbnails->Size > 0) + m_thumbnails->Clear(); + /* With the ref counting this should not leak */ + if (m_page_link_list != nullptr && m_page_link_list->Size > 0) + m_page_link_list->Clear(); + if (m_text_list->Size > 0) + m_text_list->Clear(); + if (m_linkset != nullptr && m_linkset->Size > 0) + m_linkset->Clear(); + + if (this->mu_doc != nullptr) + mu_doc->CleanUp(); + + mu_doc = ref new mudocument(); + if (mu_doc == nullptr) + throw ref new FailureException("Document allocation failed!"); + + this->m_curr_flipView = nullptr; + m_currpage = -1; + m_file_open = false; + m_slider_min = 0; + m_slider_max = 0; + m_memory_use = 0; + m_insearch = false; + m_search_active = false; + m_sliderchange = false; + m_flip_from_searchlink = false; + m_num_pages = -1; + m_search_rect_count = 0; + m_ren_status = REN_AVAILABLE; + m_links_on = false; + m_rectlist_page = -1; + m_Progress = 0.0; + + this->xaml_PageSlider->Minimum = m_slider_min; + this->xaml_PageSlider->Maximum = m_slider_max; + this->xaml_PageSlider->IsEnabled = false; +} + +/* Create the thumbnail images */ +void mupdf_cpp::MainPage::RenderThumbs() +{ + spatial_info_t spatial_info = this->InitSpatial(1); + int num_pages = this->m_num_pages; + cancellation_token_source cts; + auto token = cts.get_token(); + m_ThumbCancel = cts; + auto ui = task_continuation_context::use_current(); + + this->m_ren_status = REN_THUMBS; + Vector<DocumentPage^>^ thumbnails = m_thumbnails; + auto task_thumb = create_task([spatial_info, num_pages, thumbnails, this, ui, token]()-> int + { + spatial_info_t spatial_info_local = spatial_info; + spatial_info_local.scale_factor = SCALE_THUMB; + + for (int k = 0; k < num_pages; k++) + { + Point ras_size = ComputePageSize(spatial_info_local, k); + auto task2 = create_task(mu_doc->RenderPageAsync(k, ras_size.X, ras_size.Y, false)); + + task2.then([this, k, thumbnails, ras_size](InMemoryRandomAccessStream^ ras) + { + assert(IsMainThread()); + WriteableBitmap ^bmp = ref new WriteableBitmap(ras_size.X, ras_size.Y); + bmp->SetSource(ras); + DocumentPage^ doc_page = ref new DocumentPage(); + doc_page->Image = bmp; + doc_page->Height = ras_size.Y / SCALE_THUMB; + doc_page->Width = ras_size.X / SCALE_THUMB; + doc_page->Content = THUMBNAIL; + doc_page->TextBox = nullptr; + doc_page->LinkBox = nullptr; + if (m_init_done) + { + m_thumbnails->SetAt(k, doc_page); /* This avoids out of order returns from task */ + if (k < THUMB_PREADD) /* Flip view gets overwhelmed if I don't do this */ + SetThumb(k, false); + } + }, ui).then([this] (task<void> t) + { + try + { + t.get(); + } + catch(Platform::InvalidArgumentException^ e) + { + //TODO handle error. + } + }, token); //end task chain */ + + /* If cancelled then save the last one as the continuation will not + have occured. */ + if (is_task_cancellation_requested()) + { + cancel_current_task(); + } + } + return num_pages; /* all done with thumbnails! */ + }, token).then([this](task<int> the_task) + { + /* Finish adding them, but not if we were cancelled. */ + bool is_cancelled = false; + try + { + the_task.get(); + } + catch (const task_canceled& e) + { + (void) e; // Unused parameter + is_cancelled = true; + } + if (!is_cancelled) + { + for (int k = THUMB_PREADD; k < m_num_pages; k++) + SetThumb(k, false); + } + this->m_ren_status = REN_AVAILABLE; + }, task_continuation_context::use_current()); + +} + +void mupdf_cpp::MainPage::OpenDocumentPrep(StorageFile^ file) +{ + if (this->m_num_pages != -1) + { + m_init_done = false; + + /* Set the index to the start of the document */ + this->xaml_vert_flipView->SelectedIndex = 0; + this->xaml_horiz_flipView->SelectedIndex = 0; + + /* If the thumbnail thread is running then we need to end that first */ + RenderingStatus_t *ren_status = &m_ren_status; + cancellation_token_source *ThumbCancel = &m_ThumbCancel; + + /* Create a task to wait until the renderer is available, then clean up then open */ + auto t = create_task([ren_status, ThumbCancel]()->int + { + if (*ren_status == REN_THUMBS) + ThumbCancel->cancel(); + while (*ren_status != REN_AVAILABLE) { + } + return 0; + }).then([this](task<int> the_task) + { + CleanUp(); + return 0; + }, task_continuation_context::use_current()).then([this, file](task<int> the_task) + { + OpenDocument(file); + }, task_continuation_context::use_current()); + } + else + { + OpenDocument(file); + } +} + +void mupdf_cpp::MainPage::OpenDocument(StorageFile^ file) +{ + this->SetFlipView(); + + /* Open document and when open, push on */ + auto open_task = create_task(mu_doc->OpenFileAsync(file)); + open_task.then([this](int code) -> int + { + assert(IsMainThread()); + if (code != S_ISOK) + { + return code; + } + /* We need to check if password is required */ + if (mu_doc->RequiresPassword()) + { + xaml_PasswordStack->Visibility = Windows::UI::Xaml::Visibility::Visible; + return E_NEEDPASSWORD; + } + else + { + xaml_PasswordStack->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + return S_ISOK; + } + }).then([this](int code)->int + { + assert(IsMainThread()); + if (code == S_ISOK) + InitialRender(); + return code; + }, task_continuation_context::use_current()).then([this](int code) + { + if (code == S_ISOK) + RenderThumbs(); + else + { + if (code != E_NEEDPASSWORD) + { + NotifyUser("Sorry, an issue was encountered in opening file", + StatusMessage); + } + } + }, task_continuation_context::use_current()); +} + +void mupdf_cpp::MainPage::InitialRender() +{ + assert(IsMainThread()); + m_num_pages = mu_doc->GetNumPages(); + + if ((m_currpage) >= m_num_pages) + { + m_currpage = m_num_pages - 1; + } + else if (m_currpage < 0) + { + m_currpage = 0; + } + + /* Initialize all the flipvew items with blanks and the thumbnails. */ + for (int k = 0; k < m_num_pages; k++) + { + /* Blank pages */ + DocumentPage^ doc_page = ref new DocumentPage(); + doc_page->Image = m_BlankBmp; + doc_page->Height = BLANK_HEIGHT; + doc_page->Width = BLANK_WIDTH; + doc_page->Content = DUMMY; + doc_page->TextBox = nullptr; + doc_page->LinkBox = nullptr; + m_docPages->Append(doc_page); + m_thumbnails->Append(doc_page); + /* Create empty lists for our links and specify that they have + not been computed for these pages */ + Vector<RectList^>^ temp_link = ref new Vector<RectList^>(); + m_page_link_list->Append(temp_link); + m_linkset->Append(false); + } + + this->xaml_horiz_flipView->ItemsSource = m_docPages; + this->xaml_vert_flipView->ItemsSource = m_docPages; + + /* Do the first few pages, then start the thumbs */ + spatial_info_t spatial_info = InitSpatial(1); + for (int k = 0; k < LOOK_AHEAD + 2; k++) + { + if (m_num_pages > k ) + { + Point ras_size = ComputePageSize(spatial_info, k); + + auto render_task = + create_task(mu_doc->RenderPageAsync(k, ras_size.X, ras_size.Y, true)); + + render_task.then([this, k, ras_size] (InMemoryRandomAccessStream^ ras) + { + UpdatePage(k, ras, ras_size, FULL_RESOLUTION); + }, task_continuation_context::use_current()); + } + } + + /* Update the slider settings, if more than one page */ + if (m_num_pages > 1) + { + this->xaml_PageSlider->Maximum = m_num_pages; + this->xaml_PageSlider->Minimum = 1; + this->xaml_PageSlider->IsEnabled = true; + } + else + { + this->xaml_PageSlider->Maximum = 0; + this->xaml_PageSlider->Minimum = 0; + this->xaml_PageSlider->IsEnabled = false; + } + + /* All done with initial pages */ + this->m_init_done = true; +} + +void mupdf_cpp::MainPage::RenderRange(int curr_page) +{ + /* Render +/- the look ahead from where we are if blank page is present */ + spatial_info_t spatial_info = InitSpatial(1); + bool curr_page_rendered = true; + int range = LOOK_AHEAD; + + assert(IsMainThread()); + if (m_flip_from_searchlink) + range = 0; + for (int k = curr_page - LOOK_AHEAD; k <= curr_page + LOOK_AHEAD; k++) + { + if (k >= 0 && k < m_num_pages) + { + /* Check if page is already rendered */ + auto doc = this->m_docPages->GetAt(k); + if (doc->Content != FULL_RESOLUTION) + { + Point ras_size = ComputePageSize(spatial_info, k); + auto render_task = + create_task(mu_doc->RenderPageAsync(k, ras_size.X, ras_size.Y, true)); + + render_task.then([this, k, ras_size] (InMemoryRandomAccessStream^ ras) + { + UpdatePage(k, ras, ras_size, FULL_RESOLUTION); + }, task_continuation_context::use_current()).then([this, k, curr_page]() + { + if (k == curr_page && this->m_links_on) + AddLinkCanvas(); + if (k == curr_page && this->m_text_list->Size > 0 && + m_flip_from_searchlink) + { + AddTextCanvas(); + m_flip_from_searchlink = false; + } + },task_continuation_context::use_current()); + } + else + { + /* We did not need to render the curr_page, so add links below if + needed. Otherwise, we need to wait for the task above to + complete before we add the links. */ + if (k == curr_page) + curr_page_rendered = false; + } + } + } + m_currpage = curr_page; + if (this->m_links_on && !curr_page_rendered) + AddLinkCanvas(); + if (this->m_text_list->Size > 0 && !curr_page_rendered && m_flip_from_searchlink) + { + AddTextCanvas(); + m_flip_from_searchlink = false; + } +} + +void mupdf_cpp::MainPage::Slider_ValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e) +{ + int newValue = (int) this->xaml_PageSlider->Value - 1; /* zero based */ + + if (IsNotStandardView()) + return; + + if (m_update_flip) + { + m_update_flip = false; + return; + } + if (m_init_done && this->xaml_PageSlider->IsEnabled) + { + /* Make sure to clear any text search */ + auto doc_old = this->m_docPages->GetAt(m_currpage); + doc_old->TextBox = nullptr; + + auto doc = this->m_docPages->GetAt(newValue); + if (doc->Content != FULL_RESOLUTION) + { + spatial_info_t spatial_info = InitSpatial(1); + Point ras_size = ComputePageSize(spatial_info, newValue); + auto render_task = + create_task(mu_doc->RenderPageAsync(newValue, ras_size.X, ras_size.Y, true)); + + render_task.then([this, newValue, ras_size] (InMemoryRandomAccessStream^ ras) + { + UpdatePage(newValue, ras, ras_size, FULL_RESOLUTION); + this->m_currpage = newValue; + m_sliderchange = true; + this->m_curr_flipView->SelectedIndex = newValue; + }, task_continuation_context::use_current()); + } + else + { + this->m_curr_flipView->SelectedIndex = newValue; + } + } +} + +void mupdf_cpp::MainPage::FlipView_SelectionChanged(Object^ sender, SelectionChangedEventArgs^ e) +{ + if (m_init_done && !m_page_update) + { + int pos = this->m_curr_flipView->SelectedIndex; + + if (pos >= 0) + { + m_update_flip = true; + if (xaml_PageSlider->IsEnabled) + { + xaml_PageSlider->Value = pos; + } + if (m_sliderchange) + { + m_sliderchange = false; + return; + } + else + { + /* Make sure to clear any text search */ + auto doc_old = this->m_docPages->GetAt(m_currpage); + doc_old->TextBox = nullptr; + } + /* Get the current page */ + int curr_page = this->m_currpage; + this->RenderRange(pos); + this->ReleasePages(curr_page, pos); + } + } +} + +/* Search Related Code */ +void mupdf_cpp::MainPage::Searcher(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + ShowSearchBox(); + UpdateAppBarButtonViewState(); +} + +void mupdf_cpp::MainPage::ShowSearchBox() +{ + /* Update the app bar so that we can do the search */ + StackPanel^ leftPanel = (StackPanel^) this->TopAppBar->FindName("LeftPanel"); + + if (leftPanel != nullptr && m_insearch) + { + m_insearch = false; + FindBox->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + PrevSearch->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + NextSearch->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + } + else if (leftPanel != nullptr && !m_insearch) + { + /* Search is not going to work in snapped view for now to simplify UI + in this cramped case. So see if we can get out of snapped mode. */ + if (!EnsureUnsnapped()) + return; + + m_insearch = true; + FindBox->Visibility = Windows::UI::Xaml::Visibility::Visible; + PrevSearch->Visibility = Windows::UI::Xaml::Visibility::Visible; + NextSearch->Visibility = Windows::UI::Xaml::Visibility::Visible; + } +} + +void mupdf_cpp::MainPage::ClearTextSearch() +{ + /* Clear out any old search result */ + if (m_text_list->Size > 0) + m_text_list->Clear(); +} + +void mupdf_cpp::MainPage::ShowSearchResults(int page_num, int box_count) +{ + int old_page = this->m_currpage; + int new_page = page_num; + + ClearTextSearch(); + + /* Compute any scalings */ + Point screenSize; + Point pageSize; + Point scale; + + screenSize.Y = this->ActualHeight; + screenSize.X = this->ActualWidth; + screenSize.X *= screenScale; + screenSize.Y *= screenScale; + pageSize = mu_doc->GetPageSize(m_currpage); + scale = fitPageToScreen(pageSize, screenSize); + auto doc_page = this->m_docPages->GetAt(old_page); + + /* Construct our list of rectangles */ + for (int k = 0; k < box_count; k++) + { + RectList^ rect_item = ref new RectList(); + auto curr_box = mu_doc->GetTextSearch(k); + + rect_item->Color = m_textcolor; + rect_item->Height = curr_box->LowerRight.Y - curr_box->UpperLeft.Y; + rect_item->Width = curr_box->LowerRight.X - curr_box->UpperLeft.X; + rect_item->X = curr_box->UpperLeft.X * scale.X; + rect_item->Y = curr_box->UpperLeft.Y * scale.Y; + rect_item->Width *= (scale.X * doc_page->Zoom); + rect_item->Height *= (scale.Y * doc_page->Zoom); + rect_item->Index = k.ToString(); + m_text_list->Append(rect_item); + } + /* Make sure the current page has its text results cleared */ + doc_page->TextBox = nullptr; + + /* Go ahead and set our doc item to this in the vertical and horizontal view */ + m_searchpage = new_page; + m_flip_from_searchlink = true; + + if (old_page == new_page) + { + FlipView_SelectionChanged(nullptr, nullptr); + } + else + { + this->m_curr_flipView->SelectedIndex = new_page; + } + return; +} + +void mupdf_cpp::MainPage::SearchNext(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (IsNotStandardView()) + return; + + StackPanel^ leftPanel = (StackPanel^) this->TopAppBar->FindName("LeftPanel"); + TextBox^ findBox = (TextBox^) leftPanel->FindName("FindBox"); + String^ textToFind = findBox->Text; + + if (this->m_search_active == false && textToFind != nullptr) + SearchInDirection(1, textToFind); +} + +void mupdf_cpp::MainPage::SearchPrev(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (IsNotStandardView()) + return; + + StackPanel^ leftPanel = (StackPanel^) this->TopAppBar->FindName("LeftPanel"); + TextBox^ findBox = (TextBox^) leftPanel->FindName("FindBox"); + String^ textToFind = findBox->Text; + + if (this->m_search_active == false && textToFind != nullptr) + SearchInDirection(-1, textToFind); +} + +void mupdf_cpp::MainPage::CancelSearch(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + m_searchcts.cancel(); + xaml_ProgressStack->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + this->m_search_active = false; +} + +void mupdf_cpp::MainPage::AddTextCanvas() +{ + /* Go ahead and set our doc item to this in the vertical and horizontal view */ + auto doc_page = this->m_docPages->GetAt(m_currpage); + assert(doc_page->Content == FULL_RESOLUTION); + if (doc_page->Content == FULL_RESOLUTION) // We should not be doing links for thumbnails + { + doc_page->TextBox = m_text_list; + } + this->m_search_active = false; +} + +void mupdf_cpp::MainPage::SearchProgress(IAsyncOperationWithProgress<int, double>^ operation, double status) +{ + xaml_Progress->Value = status; +} + +void mupdf_cpp::MainPage::SearchInDirection(int dir, String^ textToFind) +{ + cancellation_token_source cts; + auto token = cts.get_token(); + m_searchcts = cts; + int pos = m_currpage; + int start; + + if (m_searchpage == pos) + start = pos + dir; + else + start = pos; + + if (start < 0) + return; + if (start > this->m_num_pages - 1) + return; + this->m_search_active = true; + + ProgressBar^ my_xaml_Progress = (ProgressBar^) (this->FindName("xaml_Progress")); + xaml_ProgressStack->Visibility = Windows::UI::Xaml::Visibility::Visible; + auto temp = mu_doc->SearchDocumentWithProgressAsync(textToFind, dir, start); + temp->Progress = ref new AsyncOperationProgressHandler<int, double>(this, &MainPage::SearchProgress); + + auto search_task = create_task(temp, token); + + /* Do the continuation on the ui thread */ + auto con_task = search_task.then([this, textToFind](int page_num) + { + xaml_ProgressStack->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + if (page_num == TEXT_NOT_FOUND) + { + auto str1 = "\"" + textToFind + "\" Was Not Found In The Search"; + NotifyUser(str1, StatusMessage); + this->m_search_active = false; + } + else + { + int box_count = mu_doc->TextSearchCount(); + + if (box_count > 0) + { + this->ShowSearchResults(page_num, box_count); + } + } + }, task_continuation_context::use_current()); +} + +/* This is here to handle when we rotate or go into the snapview mode */ +void mupdf_cpp::MainPage::GridSizeChanged() +{ + int height = this->ActualHeight; + int width = this->ActualWidth; + FlipView^ old_flip = m_curr_flipView; + + if (TopAppBar1->IsOpen) + { + UpdateAppBarButtonViewState(); + } + + if (height > width) + { + m_curr_flipView = this->xaml_vert_flipView; + this->xaml_zoomCanvas->Height = height; + this->xaml_zoomCanvas->Width = width; + this->m_curr_flipView->Height = height; + this->m_curr_flipView->Width = width; + + xaml_vert_flipView->IsEnabled = true; + xaml_vert_flipView->Opacity = 1; + xaml_horiz_flipView->IsEnabled = false; + xaml_horiz_flipView->Opacity = 0; + } + else + { + m_curr_flipView = this->xaml_horiz_flipView; + this->xaml_zoomCanvas->Height = height; + this->xaml_zoomCanvas->Width = width; + this->m_curr_flipView->Height = height; + this->m_curr_flipView->Width = width; + + xaml_horiz_flipView->IsEnabled = true; + xaml_horiz_flipView->Opacity = 1; + xaml_vert_flipView->IsEnabled = false; + xaml_vert_flipView->Opacity = 0; + } + + if (xaml_WebView->Visibility == Windows::UI::Xaml::Visibility::Visible) + { + int height = xaml_OutsideGrid->ActualHeight; + int height_app = TopAppBar1->ActualHeight; + + xaml_WebView->Height = height - height_app; + } + + UpDatePageSizes(); + + if (m_num_pages > 0 && old_flip != m_curr_flipView && old_flip != nullptr) + { + /* If links are on or off, we need to invalidate */ + ClearLinks(); + InvalidateLinks(); + auto doc = this->m_docPages->GetAt(m_currpage); + doc->Content = OLD_RESOLUTION; /* To force a rerender */ + this->m_curr_flipView->SelectedIndex = this->m_currpage; + FlipView_SelectionChanged(nullptr, nullptr); + } +} + +void mupdf_cpp::MainPage::UpDatePageSizes() +{ + /* Reset the thumb view scaling value */ + if (m_num_pages > 0) + { + int num_items = m_thumbnails->Size; + for (int i = 0; i < num_items; i++) + { + DocumentPage ^thumb_page = m_thumbnails->GetAt(i); + if (thumb_page != nullptr && thumb_page->Image != nullptr) + { + int curr_height = thumb_page->Height; + int curr_width = thumb_page->Width; + + double scale_x = (double) curr_height / (double) this->xaml_zoomCanvas->Height; + double scale_y = (double) curr_width / (double) this->xaml_zoomCanvas->Width; + + double min_scale = max(scale_x, scale_y); + thumb_page->Height = curr_height / min_scale; + thumb_page->Width = curr_width / min_scale; + } + } + } +}; + +/* Link related code */ +void mupdf_cpp::MainPage::Linker(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + m_links_on = !m_links_on; + + if (!m_init_done || IsNotStandardView()) + return; + if (m_links_on) + AddLinkCanvas(); + else + ClearLinks(); +} + +void mupdf_cpp::MainPage::ClearLinks() +{ + /* Make sure surrounding render pages lose their links */ + for (int k = m_currpage - LOOK_AHEAD; k <= m_currpage + LOOK_AHEAD; k++) + { + if (k >= 0 && k < m_num_pages) + { + auto doc_page = this->m_docPages->GetAt(k); + if (doc_page->Content == FULL_RESOLUTION) + { + doc_page->LinkBox = nullptr; + } + } + } +} + +void mupdf_cpp::MainPage::InvalidateLinks() +{ + for (int k = 0; k < m_num_pages; k++) + m_linkset->SetAt(k, false); +} + +/* Add in the link rects. If we have not already computed them then do that now */ +void mupdf_cpp::MainPage::AddLinkCanvas() +{ + /* See if the link object for this page has already been computed */ + int link_page = m_linkset->GetAt(m_currpage); + auto doc_page = this->m_docPages->GetAt(m_currpage); + + if (!link_page) + { + m_linkset->SetAt(m_currpage, true); + int num_links = mu_doc->ComputeLinks(m_currpage); + if (num_links == 0) return; + + Point screenSize; + Point pageSize; + Point scale; + + screenSize.Y = this->ActualHeight; + screenSize.X = this->ActualWidth; + screenSize.X *= screenScale; + screenSize.Y *= screenScale; + pageSize = mu_doc->GetPageSize(m_currpage); + scale = fitPageToScreen(pageSize, screenSize); + + /* Create a new RectList collection */ + auto link_list = ref new Platform::Collections::Vector<RectList^>(); + + /* Now add the rects */ + for (int k = 0; k < num_links; k++) + { + auto curr_link = mu_doc->GetLink(k); + if (curr_link->Type != NOT_SET) + { + RectList^ rect_item = ref new RectList(); + rect_item->Color = m_linkcolor; + rect_item->Height = curr_link->LowerRight.Y - curr_link->UpperLeft.Y; + rect_item->Width = curr_link->LowerRight.X - curr_link->UpperLeft.X; + rect_item->X = curr_link->UpperLeft.X * scale.X; + rect_item->Y = curr_link->UpperLeft.Y * scale.Y; + rect_item->Width *= (scale.X * doc_page->Zoom); + rect_item->Height *= (scale.Y * doc_page->Zoom); + rect_item->Type = curr_link->Type; + rect_item->Urilink = curr_link->Uri; + rect_item->PageNum = curr_link->PageNum; + rect_item->Index = k.ToString(); + link_list->Append(rect_item); + } + } + /* Now set it in our list of links */ + m_page_link_list->SetAt(m_currpage, link_list); + } + /* Go ahead and set our doc item to this in the vertical and horizontal view */ + if (doc_page->LinkBox == nullptr) + { + if (doc_page->Content == FULL_RESOLUTION) // We should not be doing links for thumbnails + { + doc_page->LinkBox = m_page_link_list->GetAt(m_currpage); + } + } +} + +/* A link was tapped */ +void mupdf_cpp::MainPage::LinkTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e) +{ + Rectangle^ rect = safe_cast<Rectangle^>(e->OriginalSource); + String^ str_index = safe_cast<String^>(rect->Tag); + int index = _wtof(str_index->Data()); + + if (index >= 0 && index < m_num_pages) + { + auto link_list = m_page_link_list->GetAt(m_currpage); + auto link = link_list->GetAt(index); + + if (link->Type == LINK_GOTO) + { + this->m_curr_flipView->SelectedIndex = link->PageNum; + } + else if (link->Type == LINK_URI) + { + // Set the option to show a warning + auto launchOptions = ref new Windows::System::LauncherOptions(); + launchOptions->TreatAsUntrusted = true; + + // Launch the URI with a warning prompt + concurrency::task<bool> launchUriOperation(Windows::System::Launcher::LaunchUriAsync(link->Urilink, launchOptions)); + launchUriOperation.then([](bool success) + { + if (success) + { + // URI launched + } + else + { + // URI launch failed + } + }); + } + } +} + +/* Bring up the contents */ +void mupdf_cpp::MainPage::ContentDisplay(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (this->m_num_pages < 0) + return; + + if (IsNotStandardView() && !this->xaml_ListView->IsEnabled) + return; + + if (this->xaml_ListView->IsEnabled) + { + this->xaml_ListView->Opacity = 0.0; + this->xaml_ListView->IsEnabled = false; + this->m_curr_flipView->Opacity = 1.0; + this->m_curr_flipView->IsEnabled = true; + this->xaml_PageSlider->IsEnabled = true; + } + else + { + if (xaml_ListView->Items->Size == 0) + { + int size_content = mu_doc->ComputeContents(); + /* Bring up the content now */ + for (int k = 0; k < size_content; k++) + { + ContentItem^ item = mu_doc->GetContent(k); + this->xaml_ListView->Items->Append(item); + } + if (size_content > 0) + { + this->xaml_ListView->Opacity = 1.0; + this->xaml_ListView->IsEnabled = true; + this->m_curr_flipView->Opacity = 0.0; + this->m_curr_flipView->IsEnabled = false; + this->xaml_PageSlider->IsEnabled = false; + } + } + else + { + this->xaml_ListView->Opacity = 1.0; + this->xaml_ListView->IsEnabled = true; + this->m_curr_flipView->Opacity = 0.0; + this->m_curr_flipView->IsEnabled = false; + this->xaml_PageSlider->IsEnabled = false; + } + } +} + +void mupdf_cpp::MainPage::ContentSelected(Platform::Object^ sender, Windows::UI::Xaml::Controls::ItemClickEventArgs^ e) +{ + ContentItem^ b = safe_cast<ContentItem^>(e->ClickedItem); + int newpage = b->Page; + + if (newpage > -1 && newpage < this->m_num_pages) + { + this->xaml_ListView->Opacity = 0.0; + this->xaml_ListView->IsEnabled = false; + this->m_curr_flipView->Opacity = 1.0; + this->m_curr_flipView->IsEnabled = true; + this->xaml_PageSlider->IsEnabled = true; + + int old_page = this->m_currpage; + this->m_curr_flipView->SelectedIndex = newpage; + this->m_currpage = newpage; + } +} + +void mupdf_cpp::MainPage::Reflower(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (this->m_num_pages < 0) return; + + if (xaml_WebView->Visibility == Windows::UI::Xaml::Visibility::Visible) + { + /* Go back to flip view */ + xaml_WebView->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + this->xaml_MainGrid->Opacity = 1.0; + this->m_curr_flipView->IsEnabled = true; + this->xaml_PageSlider->IsEnabled = true; + xaml_WebView->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + xaml_WebView->Opacity = 0.0; + + } + else if (this->m_curr_flipView->IsEnabled) + { + String^ html_string = mu_doc->ComputeHTML(this->m_currpage); + xaml_WebView->Visibility = Windows::UI::Xaml::Visibility::Visible; + this->xaml_MainGrid->Opacity = 0.0; + this->m_curr_flipView->IsEnabled = false; + this->xaml_PageSlider->IsEnabled = false; + this->xaml_WebView->NavigateToString(html_string); + this->xaml_WebView->Height = this->ActualHeight - 2 * this->BottomAppBar->ActualHeight; + /* Check if thumb rendering is done. If not then restart */ + } +} + +/* Need to handle resizing of app bar to make sure everything fits */ +void mupdf_cpp::MainPage::topAppBar_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + /* Remove search box in snapped view as we don't have the room for it */ + if (ApplicationView::Value == ApplicationViewState::Snapped && m_insearch) + ShowSearchBox(); + UpdateAppBarButtonViewState(); +} + +void mupdf_cpp::MainPage::UpdateAppBarButtonViewState() +{ + String ^viewState = Windows::UI::ViewManagement::ApplicationView::Value.ToString(); + VisualStateManager::GoToState(Search, viewState, true); + VisualStateManager::GoToState(Contents, viewState, true); + VisualStateManager::GoToState(Links, viewState, true); + VisualStateManager::GoToState(Reflow, viewState, true); + VisualStateManager::GoToState(ZoomIn, viewState, true); + VisualStateManager::GoToState(ZoomOut, viewState, true); + VisualStateManager::GoToState(PrevSearch, viewState, true); + VisualStateManager::GoToState(NextSearch, viewState, true); +} + +/* Manipulation zooming with touch input */ +void mupdf_cpp::MainPage::ScrollChanged(Platform::Object^ sender, + Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ e) +{ + ScrollViewer^ scrollviewer = safe_cast<ScrollViewer^> (sender); + auto doc_page = this->m_docPages->GetAt(m_currpage); + + if (scrollviewer->ZoomFactor == doc_page->Zoom) + return; + + if (!e->IsIntermediate) + { + doc_page->Zoom = scrollviewer->ZoomFactor; + int page = m_currpage; + + /* Render at new resolution */ + spatial_info_t spatial_info = InitSpatial(doc_page->Zoom); + Point ras_size = ComputePageSize(spatial_info, page); + + /* Go ahead and create display list if we dont have one for this page */ + auto render_task = + create_task(mu_doc->RenderPageAsync(page, ras_size.X, ras_size.Y, true)); + render_task.then([this, page, ras_size] (InMemoryRandomAccessStream^ ras) + { + ReplaceImage(page, ras, ras_size); + }, task_continuation_context::use_current()); + } +} + +/* Needed to find scrollviewer child from template of flipview item */ +Windows::UI::Xaml::FrameworkElement^ FindVisualChildByName(DependencyObject^ obj, String^ name) +{ + FrameworkElement^ ret; + if (obj == nullptr) return nullptr; + + int numChildren = VisualTreeHelper::GetChildrenCount(obj); + + for (int i = 0; i < numChildren; i++) + { + auto objChild = VisualTreeHelper::GetChild(obj, i); + auto child = safe_cast<FrameworkElement^>(objChild); + if (child != nullptr && child->Name == name) + { + return child; + } + ret = FindVisualChildByName(objChild, name); + if (ret != nullptr) + break; + } + return ret; +} + +void mupdf_cpp::MainPage::ZoomInPress(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (!m_init_done || IsNotStandardView()) return; + NonTouchZoom(ZOOM_IN); +} + +void mupdf_cpp::MainPage::ZoomOutPress(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + if (!m_init_done || IsNotStandardView()) return; + NonTouchZoom(ZOOM_OUT); +} + +void MainPage::NonTouchZoom(int zoom) +{ + ScrollViewer^ scrollviewer; + FlipViewItem^ item = safe_cast<FlipViewItem^> + (m_curr_flipView->ItemContainerGenerator->ContainerFromIndex(m_currpage)); + auto item2 = m_curr_flipView->ItemContainerGenerator->ContainerFromIndex(m_currpage); + + /* We don't know which one so check for both */ + ScrollViewer^ t1 = + safe_cast<ScrollViewer^> (FindVisualChildByName(item2, "xaml_ScrollView_v")); + ScrollViewer^ t2 = + safe_cast<ScrollViewer^> (FindVisualChildByName(item2, "xaml_ScrollView_h")); + + if (t1 != nullptr) + scrollviewer = t1; + else + scrollviewer = t2; + + if (scrollviewer == nullptr) + return; + + double curr_zoom = scrollviewer->ZoomFactor; + if (zoom == ZOOM_IN) + { + curr_zoom = curr_zoom + KEYBOARD_ZOOM_STEP; + if (curr_zoom > ZOOM_MAX) curr_zoom = ZOOM_MAX; + } + else if (zoom == ZOOM_OUT) + { + curr_zoom = curr_zoom - KEYBOARD_ZOOM_STEP; + if (curr_zoom < ZOOM_MIN) curr_zoom = ZOOM_MIN; + } else + return; + + scrollviewer->ZoomToFactor(curr_zoom); +} + +/* Zoom in and out for keyboard only case. */ +void MainPage::OnKeyDown(KeyRoutedEventArgs^ e) +{ + if (!m_init_done || IsNotStandardView()) return; + + long val = (long) (e->Key); + + if (val == KEY_PLUS) + NonTouchZoom(ZOOM_IN); + else if (val == KEY_MINUS) + NonTouchZoom(ZOOM_OUT); + else + return; +} + +void mupdf_cpp::MainPage::PasswordOK(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + /* If password checks out then go ahead and start rendering */ + if (mu_doc->ApplyPassword(xaml_password->Password)) + { + xaml_password->Password = nullptr; + xaml_PasswordStack->Visibility = Windows::UI::Xaml::Visibility::Collapsed; + InitialRender(); + RenderThumbs(); + } + else + NotifyUser("Incorrect Password", StatusMessage); +} + +/* So that we know if we are in a standard view case and not in reflow, or + * content type */ +bool mupdf_cpp::MainPage::IsNotStandardView() +{ + return (this->xaml_ListView->Opacity == 1.0 || + xaml_WebView->Visibility == Windows::UI::Xaml::Visibility::Visible); +} diff --git a/platform/winrt/mupdf_cpp/MainPage.xaml.h b/platform/winrt/mupdf_cpp/MainPage.xaml.h new file mode 100644 index 00000000..80978bc8 --- /dev/null +++ b/platform/winrt/mupdf_cpp/MainPage.xaml.h @@ -0,0 +1,177 @@ +// +// MainPage.xaml.h +// Declaration of the MainPage class. +// + +#pragma once + +#include "MainPage.g.h" +#include "ppl.h" +#include "ppltasks.h" +#include <collection.h> +#include <algorithm> +#include <assert.h> +#include "DocumentPage.h" +#include "status.h" + +using namespace Platform; +using namespace Concurrency; +using namespace Windows::Storage; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Media::Imaging; +using namespace Windows::Storage::Streams; +using namespace Windows::Foundation; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::UI::Xaml::Input; +using namespace Windows::UI::Xaml::Shapes; +using namespace Windows::Foundation::Collections; +using namespace Platform::Collections; +using namespace Windows::UI::ViewManagement; +using namespace Windows::UI::Popups; +using namespace Windows::UI::Xaml::Navigation; +using namespace Windows::ApplicationModel; +using namespace mupdfwinrt; + +typedef enum +{ + StatusMessage, + ErrorMessage +} NotifyType_t; + +typedef enum { + REN_AVAILABLE = 0, + REN_THUMBS, + REN_UPDATE_THUMB_CANVAS, + REN_PAGE /* Used to ignore value when source based setting */ +} RenderingStatus_t; + +typedef struct spatial_info_s +{ + Point size; + double scale_factor; +} spatial_info_t; + +namespace mupdf_cpp +{ + /// <summary> + /// An empty page that can be used on its own or navigated to within a Frame. + /// </summary> + public ref class MainPage sealed + { + public: + MainPage(); + + property Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ ProtocolEvent + { + Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ get() { return _protocolEventArgs; } + void set(Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ value) { _protocolEventArgs = value; } + } + + property Windows::ApplicationModel::Activation::FileActivatedEventArgs^ FileEvent + { + Windows::ApplicationModel::Activation::FileActivatedEventArgs^ get() { return _fileEventArgs; } + void set(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ value) { _fileEventArgs = value; } + } + + protected: + virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; + virtual void OnKeyDown(Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e) override; + + private: + Windows::Foundation::EventRegistrationToken _pageLoadedHandlerToken; + Vector<DocumentPage^>^ m_docPages; + Vector<DocumentPage^>^ m_thumbnails; + Vector<IVector<RectList^>^>^ m_page_link_list; + Vector<int>^ m_linkset; + Vector<RectList^>^ m_text_list; + int m_rectlist_page; + mudocument^ mu_doc; + bool m_file_open; + int m_currpage; + int m_searchpage; + int m_num_pages; + int m_slider_min; + int m_slider_max; + bool m_init_done; + bool m_flip_from_searchlink; + bool m_links_on; + int m_search_rect_count; + cancellation_token_source m_searchcts; + bool m_page_update; + long long m_memory_use; + WriteableBitmap ^m_BlankBmp; + String^ m_textcolor; + String^ m_linkcolor; + FlipView^ m_curr_flipView; + RenderingStatus_t m_ren_status; + cancellation_token_source m_ThumbCancel; + bool m_insearch; /* Used for UI display */ + bool m_search_active; /* Used to avoid multiple UI clicks */ + bool m_sliderchange; + bool m_update_flip; + double m_Progress; + + void ReplaceImage(int page_num, InMemoryRandomAccessStream^ ras, Point ras_size); + void Picker(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void Searcher(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void OpenDocumentPrep(StorageFile^ file); + void OpenDocument(StorageFile^ file); + void InitialRender(); + void RenderRange(int curr_page); + void CleanUp(); + void UpdatePage(int page_num, InMemoryRandomAccessStream^ ras, Point ras_size, Page_Content_t content_type); + void CreateBlank(int width, int height); + void HandleFileNotFoundException(Platform::COMException^ e); + void NotifyUserFileNotExist(); + void SetFlipView(); + void Slider_ValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e); + void Slider_Released(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e); + void FlipView_SelectionChanged(Object^ sender, SelectionChangedEventArgs^ e); + void SearchNext(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void SearchPrev(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void CancelSearch(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void SearchInDirection(int dir, String^ textToFind); + void ShowSearchResults(int page_num, int box_count); + void ClearTextSearch(); + void AddTextCanvas(); + void GridSizeChanged(); + void UpDatePageSizes(); + void ShowThumbnail(); + void Canvas_ManipulationCompleted(Platform::Object^ sender, Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ e); + void AddThumbNail(int page_num, FlipView^ flip_view); + spatial_info_t InitSpatial(double scale); + void RenderThumbs(); + void SetThumb(int page_num, bool replace); + void ReleasePages(int old_page, int new_page); + void Linker(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void AddLinkCanvas(); + void ClearLinks(); + void InvalidateLinks(); + void ContentDisplay(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void ListView_Single_Tap(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e); + void ContentSelected(Platform::Object^ sender, Windows::UI::Xaml::Controls::ItemClickEventArgs^ e); + void ContentChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e); + void Reflower(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void topAppBar_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void UpdateAppBarButtonViewState(); + bool EnsureUnsnapped(); + void NotifyUser(String^ strMessage, NotifyType_t type); + void ExitInvokedHandler(Windows::UI::Popups::IUICommand^ command); + void OKInvokedHandler(Windows::UI::Popups::IUICommand^ command); + Point ComputePageSize(spatial_info_t spatial_info, int page_num); + void ScrollChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ e); + void LinkTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e); + void SearchProgress(IAsyncOperationWithProgress<int, double>^ operation, double status); + void PasswordOK(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void App_Suspending(Object^ sender, SuspendingEventArgs^ e); + void ZoomInPress(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void ZoomOutPress(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void NonTouchZoom(int zoom); + void ShowSearchBox(); + bool IsNotStandardView(); + void Page_Loaded(Object^ sender, RoutedEventArgs^ e); + Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ _protocolEventArgs; + Windows::ApplicationModel::Activation::FileActivatedEventArgs^ _fileEventArgs; + }; +} diff --git a/platform/winrt/mupdf_cpp/Package.appxmanifest b/platform/winrt/mupdf_cpp/Package.appxmanifest new file mode 100644 index 00000000..862154f8 --- /dev/null +++ b/platform/winrt/mupdf_cpp/Package.appxmanifest @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest"> + <Identity Name="ArtifexSoftware.MuPDF" Publisher="CN=B93265AA-82AD-458A-A08E-7069B8ED88B5" Version="1.0.0.0" /> + <Properties> + <DisplayName>MuPDF</DisplayName> + <PublisherDisplayName>Artifex Software</PublisherDisplayName> + <Logo>Assets\StoreLogo.png</Logo> + </Properties> + <Prerequisites> + <OSMinVersion>6.2.1</OSMinVersion> + <OSMaxVersionTested>6.2.1</OSMaxVersionTested> + </Prerequisites> + <Resources> + <Resource Language="x-generate" /> + </Resources> + <Applications> + <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="mupdf_cpp.App"> + <VisualElements DisplayName="MuPDF" Logo="Assets\Logo.png" SmallLogo="assets/mupdf_smallogo.png" Description="A lightweight, high quality PDF/XPS/CBZ viewer for Windows 8 devices." ForegroundText="light" BackgroundColor="#464646"> + <DefaultTile ShowName="allLogos" /> + <SplashScreen Image="Assets\mupdf_splash.png" /> + </VisualElements> + <Extensions> + <Extension Category="windows.fileTypeAssociation"> + <FileTypeAssociation Name=".pdf"> + <EditFlags OpenIsSafe="true" /> + <SupportedFileTypes> + <FileType>.pdf</FileType> + <FileType>.xps</FileType> + <FileType>.cbz</FileType> + <FileType>.oxps</FileType> + </SupportedFileTypes> + </FileTypeAssociation> + </Extension> + </Extensions> + </Application> + </Applications> +</Package>
\ No newline at end of file diff --git a/platform/winrt/mupdf_cpp/RectList.cpp b/platform/winrt/mupdf_cpp/RectList.cpp new file mode 100644 index 00000000..b9c1560d --- /dev/null +++ b/platform/winrt/mupdf_cpp/RectList.cpp @@ -0,0 +1,9 @@ +#include "pch.h" +#include "RectList.h" + +namespace mupdf_cpp +{ + RectList::RectList(void) + { + } +} diff --git a/platform/winrt/mupdf_cpp/RectList.h b/platform/winrt/mupdf_cpp/RectList.h new file mode 100644 index 00000000..999fe3d2 --- /dev/null +++ b/platform/winrt/mupdf_cpp/RectList.h @@ -0,0 +1,153 @@ +#pragma once + +/* WinRT RectList class for binding a collection of rects to the xaml ui */ +using namespace Windows::UI::Xaml::Media::Imaging; +using namespace Windows::UI::Xaml::Controls; +using namespace Platform; /* For String */ + +namespace mupdf_cpp +{ + [Windows::UI::Xaml::Data::Bindable] // in c++, adding this attribute to ref classes enables data binding for more info search for 'Bindable' on the page http://go.microsoft.com/fwlink/?LinkId=254639 + + public ref class RectList sealed + { + private: + int height; + int width; + int x; + int y; + String^ color; + /* These are used to store the link infomation */ + int type; + int pagenum; + Windows::Foundation::Uri ^uri; + String^ index; // For identify which rectangle was tapped + public: + RectList(void); + + property String^ Index + { + String^ get() + { + return ((String^) index); + } + + void set(String^ value) + { + index = value; + } + } + + property String^ Color + { + String^ get() + { + return (color); + } + + void set(String^ value) + { + color = value; + } + } + + property int Height + { + int get() + { + return ((int) height); + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + height = value; + } + } + + property int Width + { + int get() + { + return width; + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + width = value; + } + } + + property int X + { + int get() + { + return x; + } + + void set(int value) + { + x = value; + } + } + + property int Y + { + int get() + { + return y; + } + + void set(int value) + { + y = value; + } + } + + property int Type + { + int get() + { + return type; + } + + void set(int value) + { + type = value; + } + } + + property int PageNum + { + int get() + { + return pagenum; + } + + void set(int value) + { + pagenum = value; + } + } + + property Windows::Foundation::Uri^ Urilink + { + Windows::Foundation::Uri^ get() + { + return uri; + } + + void set(Windows::Foundation::Uri^ value) + { + uri = value; + } + } + }; +} diff --git a/platform/winrt/mupdf_cpp/mupdf_cpp.rc b/platform/winrt/mupdf_cpp/mupdf_cpp.rc Binary files differnew file mode 100644 index 00000000..0d7c7a75 --- /dev/null +++ b/platform/winrt/mupdf_cpp/mupdf_cpp.rc diff --git a/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj b/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj new file mode 100644 index 00000000..b5da02da --- /dev/null +++ b/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj @@ -0,0 +1,269 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{0204a4e7-f1b8-4268-a67c-a2c674b4742d}</ProjectGuid> + <RootNamespace>mupdf_cpp</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <AppContainerApplication>true</AppContainerApplication> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <PackageCertificateKeyFile>mupdf_cpp_StoreKey.pfx</PackageCertificateKeyFile> + <PackageCertificateThumbprint>CD9F039F746ECFA4533010958399D3B0FFB6B3B5</PackageCertificateThumbprint> + <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <AdditionalOptions>/APPCONTAINER /SAFESEH %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <SectionAlignment> + </SectionAlignment> + <AdditionalOptions>/APPCONTAINER %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <AdditionalOptions>/APPCONTAINER /SAFESEH %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <SectionAlignment> + </SectionAlignment> + <AdditionalOptions>/APPCONTAINER /SAFESEH %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <AdditionalOptions>/APPCONTAINER /SAFESEH %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <DisableSpecificWarnings>4453</DisableSpecificWarnings> + <AdditionalIncludeDirectories>../../include/;../mupdfwinrt/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>kernel32.lib;%(AdditionalDependencies);../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib;../$(Platform)/$(Configuration)/mupdfwinrt.lib</AdditionalDependencies> + <SectionAlignment> + </SectionAlignment> + <AdditionalOptions>/APPCONTAINER %(AdditionalOptions)</AdditionalOptions> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\mupdfwinrt\status.h" /> + <ClInclude Include="DocumentPage.h" /> + <ClInclude Include="pch.h" /> + <ClInclude Include="App.xaml.h"> + <DependentUpon>App.xaml</DependentUpon> + </ClInclude> + <ClInclude Include="MainPage.xaml.h"> + <DependentUpon>MainPage.xaml</DependentUpon> + </ClInclude> + <ClInclude Include="RectList.h" /> + </ItemGroup> + <ItemGroup> + <ApplicationDefinition Include="App.xaml"> + <SubType>Designer</SubType> + </ApplicationDefinition> + <Page Include="Common\StandardStyles.xaml"> + <SubType>Designer</SubType> + </Page> + <Page Include="MainPage.xaml"> + <SubType>Designer</SubType> + </Page> + </ItemGroup> + <ItemGroup> + <AppxManifest Include="Package.appxmanifest"> + <SubType>Designer</SubType> + </AppxManifest> + <None Include="mupdf_cpp_StoreKey.pfx" /> + <None Include="mupdf_cpp_TemporaryKey.pfx" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="App.xaml.cpp"> + <DependentUpon>App.xaml</DependentUpon> + </ClCompile> + <ClCompile Include="DocumentPage.cpp" /> + <ClCompile Include="MainPage.xaml.cpp"> + <DependentUpon>MainPage.xaml</DependentUpon> + </ClCompile> + <ClCompile Include="pch.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> + </ClCompile> + <ClCompile Include="RectList.cpp" /> + </ItemGroup> + <ItemGroup> + <Image Include="Assets\Logo.Scale-100.png" /> + <Image Include="Assets\Logo.Scale-140.png" /> + <Image Include="Assets\Logo.Scale-180.png" /> + <Image Include="Assets\Logo.Scale-80.png"> + <DeploymentContent>true</DeploymentContent> + </Image> + <Image Include="Assets\mupdf_smallogo.png" /> + <Image Include="Assets\mupdf_splash.png" /> + <Image Include="Assets\StoreLogo.scale-100.png"> + <DeploymentContent>true</DeploymentContent> + </Image> + <Image Include="Assets\StoreLogo.scale-140.png"> + <DeploymentContent>true</DeploymentContent> + </Image> + <Image Include="Assets\StoreLogo.scale-180.png"> + <DeploymentContent>true</DeploymentContent> + </Image> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\mupdfwinrt\mupdfwinrt.vcxproj"> + <Project>{9e6ab41d-09a7-45a6-a53b-1e4bf3ac5b33}</Project> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="Package.StoreAssociation.xml" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj.filters b/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj.filters new file mode 100644 index 00000000..c1791b26 --- /dev/null +++ b/platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj.filters @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Common"> + <UniqueIdentifier>0204a4e7-f1b8-4268-a67c-a2c674b4742d</UniqueIdentifier> + </Filter> + <Filter Include="Assets"> + <UniqueIdentifier>a297f943-f0d7-4847-867e-a7aa1ef7f484</UniqueIdentifier> + </Filter> + <Page Include="Common\StandardStyles.xaml"> + <Filter>Common</Filter> + </Page> + </ItemGroup> + <ItemGroup> + <ApplicationDefinition Include="App.xaml" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="App.xaml.cpp" /> + <ClCompile Include="MainPage.xaml.cpp" /> + <ClCompile Include="pch.cpp" /> + <ClCompile Include="DocumentPage.cpp" /> + <ClCompile Include="RectList.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="pch.h" /> + <ClInclude Include="App.xaml.h" /> + <ClInclude Include="MainPage.xaml.h" /> + <ClInclude Include="DocumentPage.h" /> + <ClInclude Include="RectList.h" /> + <ClInclude Include="..\mupdfwinrt\status.h" /> + </ItemGroup> + <ItemGroup> + <AppxManifest Include="Package.appxmanifest" /> + </ItemGroup> + <ItemGroup> + <None Include="mupdf_cpp_TemporaryKey.pfx" /> + <None Include="Package.StoreAssociation.xml" /> + <None Include="mupdf_cpp_StoreKey.pfx" /> + </ItemGroup> + <ItemGroup> + <Page Include="MainPage.xaml" /> + </ItemGroup> + <ItemGroup> + <Image Include="Assets\mupdf_smallogo.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\Logo.Scale-80.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\Logo.Scale-100.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\Logo.Scale-140.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\Logo.Scale-180.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\mupdf_splash.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\StoreLogo.scale-100.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\StoreLogo.scale-140.png"> + <Filter>Assets</Filter> + </Image> + <Image Include="Assets\StoreLogo.scale-180.png"> + <Filter>Assets</Filter> + </Image> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/mupdf_cpp/pch.cpp b/platform/winrt/mupdf_cpp/pch.cpp new file mode 100644 index 00000000..01484ff5 --- /dev/null +++ b/platform/winrt/mupdf_cpp/pch.cpp @@ -0,0 +1,6 @@ +// +// pch.cpp +// Include the standard header and generate the precompiled header. +// + +#include "pch.h" diff --git a/platform/winrt/mupdf_cpp/pch.h b/platform/winrt/mupdf_cpp/pch.h new file mode 100644 index 00000000..fadf910d --- /dev/null +++ b/platform/winrt/mupdf_cpp/pch.h @@ -0,0 +1,9 @@ +// +// pch.h +// Header for standard system include files. +// + +#pragma once + +#include <collection.h> +#include "App.xaml.h" diff --git a/platform/winrt/mupdfwinrt/Cache.cpp b/platform/winrt/mupdfwinrt/Cache.cpp new file mode 100644 index 00000000..77e253f0 --- /dev/null +++ b/platform/winrt/mupdfwinrt/Cache.cpp @@ -0,0 +1,114 @@ +#include "pch.h" +#include "Cache.h" + +Cache::Cache(void) +{ + this->size = 0; + this->head = NULL; + this->tail = NULL; +} + +Cache::~Cache(void) +{ +} + +void Cache::Empty(fz_context *mu_ctx) +{ + if (this != nullptr) { + cache_entry_t *curr_entry = this->head; + + while (curr_entry != NULL) + { + cache_entry_t *old_entry = curr_entry; + curr_entry = old_entry->next; + fz_drop_display_list(mu_ctx, old_entry->dlist); + delete old_entry; + } + this->size = 0; + this->head = NULL; + this->tail = NULL; + } +} + +void Cache::AddEntry(int value, fz_display_list *dlist, fz_context *mu_ctx) +{ + std::lock_guard<std::mutex> lock(cache_lock); + + /* If full, then delete the tail */ + if (size >= MAX_DISPLAY_CACHE_SIZE) + { + cache_entry_t *curr_entry = this->tail; + cache_entry_t *prev_entry = curr_entry->prev; + + if (prev_entry != NULL) + prev_entry->next = NULL; + else + head = NULL; + + tail = prev_entry; + + /* Decrement the caches rc of this list */ + fz_drop_display_list(mu_ctx, curr_entry->dlist); + delete curr_entry; + size--; + } + + /* Make a new entry and stick at head */ + cache_entry_t *new_entry = new cache_entry_t; + + new_entry->dlist = dlist; + new_entry->index = value; + new_entry->prev = NULL; + if (head == NULL) + { + new_entry->next = NULL; + head = new_entry; + tail = new_entry; + } + else + { + new_entry->next = head; + head->prev = new_entry; + head = new_entry; + } + size++; + /* We are going to use this item now */ + fz_keep_display_list(mu_ctx, new_entry->dlist); +} + +fz_display_list* Cache::UseEntry(int value, fz_context *mu_ctx) +{ + std::lock_guard<std::mutex> lock(cache_lock); + cache_entry_t *curr_entry = this->head; + + while (curr_entry != NULL) + { + if (curr_entry->index == value) + break; + curr_entry = curr_entry->next; + } + if (curr_entry != NULL) + { + fz_keep_display_list(mu_ctx, curr_entry->dlist); + /* Move this to the front */ + if (curr_entry != head) + { + cache_entry_t *prev_entry = curr_entry->prev; + cache_entry_t *next_entry = curr_entry->next; + prev_entry->next = next_entry; + + if (next_entry != NULL) + next_entry->prev = prev_entry; + else + tail = prev_entry; + + curr_entry->prev = NULL; + curr_entry->next = head; + head->prev = curr_entry; + head = curr_entry; + } + return curr_entry->dlist; + } + else + return NULL; +} diff --git a/platform/winrt/mupdfwinrt/Cache.h b/platform/winrt/mupdfwinrt/Cache.h new file mode 100644 index 00000000..0763dba4 --- /dev/null +++ b/platform/winrt/mupdfwinrt/Cache.h @@ -0,0 +1,34 @@ +#pragma once + +#include <mutex> +extern "C" { + #include "mupdf/fitz.h" +} + +#define MAX_DISPLAY_CACHE_SIZE 3 + +typedef struct cache_entry_s cache_entry_t; + +struct cache_entry_s +{ + fz_display_list *dlist; + cache_entry_t *next; + cache_entry_t *prev; + int index; +}; + +class Cache +{ +private: + int size; + cache_entry_t *head; + cache_entry_t *tail; + std::mutex cache_lock; + +public: + Cache(void); + ~Cache(void); + fz_display_list* UseEntry(int value, fz_context *mu_ctx); + void AddEntry(int value, fz_display_list *dlist, fz_context *mu_ctx); + void Empty(fz_context *mu_ctx); +}; diff --git a/platform/winrt/mupdfwinrt/ContentItem.cpp b/platform/winrt/mupdfwinrt/ContentItem.cpp new file mode 100644 index 00000000..eff1f58b --- /dev/null +++ b/platform/winrt/mupdfwinrt/ContentItem.cpp @@ -0,0 +1,11 @@ +#include "pch.h" +#include "ContentItem.h" + +using namespace mupdfwinrt; + +ContentItem::ContentItem(void) +{ + StringOrig = nullptr; + StringMargin = nullptr; + Page = 0; +} diff --git a/platform/winrt/mupdfwinrt/ContentItem.h b/platform/winrt/mupdfwinrt/ContentItem.h new file mode 100644 index 00000000..90069459 --- /dev/null +++ b/platform/winrt/mupdfwinrt/ContentItem.h @@ -0,0 +1,58 @@ +#pragma once + +using namespace Platform; /* For String */ + +namespace mupdfwinrt { + [Windows::UI::Xaml::Data::Bindable] + public ref class ContentItem sealed + { + private: + int page; + String^ string_orig; + String^ string_margin; + + public: + ContentItem(void); + + property int Page + { + int get() + { + return (page); + } + + void set(int value) + { + if (value < 0) + throw ref new Platform::InvalidArgumentException(); + page = value; + } + } + + property String^ StringOrig + { + String^ get() + { + return (string_orig); + } + + void set(String^ value) + { + string_orig = value; + } + } + + property String^ StringMargin + { + String^ get() + { + return (string_margin); + } + + void set(String^ value) + { + string_margin = value; + } + } + }; +} diff --git a/platform/winrt/mupdfwinrt/Links.cpp b/platform/winrt/mupdfwinrt/Links.cpp new file mode 100644 index 00000000..50db8ff2 --- /dev/null +++ b/platform/winrt/mupdfwinrt/Links.cpp @@ -0,0 +1,12 @@ +#include "pch.h" +#include "Links.h" +#include "status.h" + +using namespace mupdfwinrt; + +Links::Links(void) +{ + this->uri = nullptr; + this->page_num = -1; + this->type = NOT_SET; +} diff --git a/platform/winrt/mupdfwinrt/Links.h b/platform/winrt/mupdfwinrt/Links.h new file mode 100644 index 00000000..39ebfc0b --- /dev/null +++ b/platform/winrt/mupdfwinrt/Links.h @@ -0,0 +1,88 @@ +#pragma once + +#include "utils.h" +#include "status.h" + +using namespace Windows::Foundation; + +namespace mupdfwinrt +{ + public ref class Links sealed + { + private: + int type; + Point upper_left; + Point lower_right; + Windows::Foundation::Uri ^uri; + int page_num; + public: + Links(void); + + property int Type + { + int get() + { + return (type); + } + + void set(int value) + { + if (value > NOT_SET) + throw ref new Platform::InvalidArgumentException(); + type = value; + } + } + + property Point UpperLeft + { + Point get() + { + return upper_left; + } + + void set(Point value) + { + upper_left = value; + } + } + + property Point LowerRight + { + Point get() + { + return lower_right; + } + + void set(Point value) + { + lower_right = value; + } + } + + property int PageNum + { + int get() + { + return page_num; + } + + void set(int value) + { + page_num = value; + } + } + + property Windows::Foundation::Uri^ Uri + { + Windows::Foundation::Uri^ get() + { + return uri; + } + + void set(Windows::Foundation::Uri^ value) + { + uri = value; + } + } + }; +} diff --git a/platform/winrt/mupdfwinrt/muctx.cpp b/platform/winrt/mupdfwinrt/muctx.cpp new file mode 100644 index 00000000..56c6f3a9 --- /dev/null +++ b/platform/winrt/mupdfwinrt/muctx.cpp @@ -0,0 +1,569 @@ +#pragma once + +#include "pch.h" +#include "muctx.h" + +/* This class interfaces to mupdf API with minimal windows objects + * (other than the file streaming stuff) */ + +/* File streaming set up for mupdf */ + +/* win_read_file etc. Reading of windows managed stream. This is + * not ideal as I have to read into a managed buffer and then transfer + * to the actual buffer I want. I would like a more direct approach. + * Alternate approach is to push this off outside the winrt and read + * from a memory buffer. */ +static int win_read_file(fz_stream *stm, unsigned char *buf, int len) +{ + void *temp = stm->state; + win_stream_struct *stream = reinterpret_cast <win_stream_struct*> (temp); + IRandomAccessStream^ Stream = stream->stream; + unsigned long long curr_pos = Stream->Position; + unsigned long long length = Stream->Size; + DataReader^ local_reader = ref new DataReader(Stream); + DataReaderLoadOperation^ result = local_reader->LoadAsync(len); + + /* Block on the Async call. This is not on the UI thread. */ + while(result->Status != AsyncStatus::Completed) { + + } + result->GetResults(); + int curr_len2 = local_reader->UnconsumedBufferLength; + if (curr_len2 < len) + len = curr_len2; + + Platform::Array<unsigned char>^ arrByte = ref new Platform::Array<unsigned char>(len); + local_reader->ReadBytes(arrByte); + + memcpy(buf, arrByte->Data, len); + local_reader->DetachStream(); + + return len; +} + +static void win_seek_file(fz_stream *stm, int offset, int whence) +{ + void *temp = stm->state; + win_stream_struct *stream = reinterpret_cast <win_stream_struct*> (temp); + IRandomAccessStream^ Stream = stream->stream; + unsigned long long curr_pos = Stream->Position; + unsigned long long length = Stream->Size; + unsigned long long n; + + if (whence == SEEK_END) + { + n = length + offset; + } + else if (whence == SEEK_CUR) + { + n = curr_pos + offset; + } + else if (whence == SEEK_SET) + { + n = offset; + } + Stream->Seek(n); + curr_pos = Stream->Position; + stm->pos = n; + stm->rp = stm->bp; + stm->wp = stm->bp; +} + +static void win_close_file(fz_context *ctx, void *state) +{ + win_stream_struct *win_stream = reinterpret_cast <win_stream_struct*> (state); + IRandomAccessStream^ stream = win_stream->stream; + delete stream; +} + +/* mutext functions see mupdf readme for details */ +static void lock_mutex(void *user, int lock) +{ + LPCRITICAL_SECTION locks = (LPCRITICAL_SECTION)user; + EnterCriticalSection(&locks[lock]); +} + +static void unlock_mutex(void *user, int lock) +{ + LPCRITICAL_SECTION locks = (LPCRITICAL_SECTION)user; + LeaveCriticalSection(&locks[lock]); +} + +void muctx::CleanUp(void) +{ + fz_free_outline(mu_ctx, mu_outline); + fz_close_document(mu_doc); + display_list_cache->Empty(mu_ctx); + fz_free_context(mu_ctx); + + delete display_list_cache; + display_list_cache = NULL; + this->mu_ctx = NULL; + this->mu_doc = NULL; + this->mu_outline = NULL; +} + +/* Set up the context, mutex and cookie */ +status_t muctx::InitializeContext() +{ + int i; + + /* Get the mutexes set up */ + for (i = 0; i < FZ_LOCK_MAX; i++) + InitializeCriticalSectionEx(&mu_criticalsec[i], 0, 0); + mu_locks.user = &mu_criticalsec[0]; + mu_locks.lock = lock_mutex; + mu_locks.unlock = unlock_mutex; + + /* Allocate the context */ + this->mu_ctx = fz_new_context(NULL, &mu_locks, FZ_STORE_DEFAULT); + if (this->mu_ctx == NULL) + { + return E_OUTOFMEM; + } + else + { + return S_ISOK; + } +} + +/* Initializer */ +muctx::muctx(void) +{ + mu_ctx = NULL; + mu_doc = NULL; + mu_outline = NULL; + display_list_cache = new Cache(); +} + +/* Destructor */ +muctx::~muctx(void) +{ + fz_free_outline(mu_ctx, mu_outline); + fz_close_document(mu_doc); + display_list_cache->Empty(mu_ctx); + fz_free_context(mu_ctx); + + mu_ctx = NULL; + mu_doc = NULL; + mu_outline = NULL; + delete display_list_cache; + display_list_cache = NULL; +} + +/* Set up the stream access */ +status_t muctx::InitializeStream(IRandomAccessStream^ readStream, char *ext) +{ + win_stream.stream = readStream; + fz_stream *mu_stream = fz_new_stream(mu_ctx, 0, win_read_file, win_close_file); + mu_stream->seek = win_seek_file; + mu_stream->state = reinterpret_cast <void*> (&win_stream); + + /* Now lets see if we can open the file */ + fz_try(mu_ctx) + { + mu_doc = fz_open_document_with_stream(mu_ctx, ext, mu_stream); + } + fz_always(mu_ctx) + { + fz_close(mu_stream); + } + fz_catch(mu_ctx) + { + return E_FAILURE; + } + return S_ISOK; +} + +/* Return the documents page count */ +int muctx::GetPageCount() +{ + if (this->mu_doc == NULL) + return -1; + else + return this->mu_doc->count_pages(this->mu_doc); +} + +/* Get page size */ +Point muctx::MeasurePage(int page_num) +{ + Point pageSize; + fz_rect rect; + fz_page *page; + fz_rect *bounds; + + page = fz_load_page(mu_doc, page_num); + bounds = fz_bound_page(mu_doc, page, &rect); + pageSize.X = bounds->x1 - bounds->x0; + pageSize.Y = bounds->y1 - bounds->y0; + + return pageSize; +} + +/* Get page size */ +Point muctx::MeasurePage(fz_page *page) +{ + Point pageSize; + fz_rect rect; + fz_rect *bounds; + + bounds = fz_bound_page(mu_doc, page, &rect); + pageSize.X = bounds->x1 - bounds->x0; + pageSize.Y = bounds->y1 - bounds->y0; + + return pageSize; +} + +void muctx::FlattenOutline(fz_outline *outline, int level, + sh_vector_content contents_vec) +{ + char indent[8*4+1]; + if (level > 8) + level = 8; + memset(indent, ' ', level * 4); + indent[level * 4] = 0; + + String^ indent_str = char_to_String(indent); + String^ str_indent; + + while (outline) + { + if (outline->dest.kind == FZ_LINK_GOTO) + { + int page = outline->dest.ld.gotor.page; + if (page >= 0 && outline->title) + { + /* Add to the contents std:vec */ + sh_content content_item(new content_t()); + content_item->page = page; + content_item->string_orig = char_to_String(outline->title); + content_item->string_margin = + str_indent->Concat(indent_str, content_item->string_orig); + contents_vec->push_back(content_item); + } + } + FlattenOutline(outline->down, level + 1, contents_vec); + outline = outline->next; + } +} + +int muctx::GetContents(sh_vector_content contents_vec) +{ + fz_outline *root = NULL; + fz_context *ctx_clone = NULL; + int has_content = 0; + + ctx_clone = fz_clone_context(mu_ctx); + + fz_var(root); + fz_try(ctx_clone) + { + root = fz_load_outline(mu_doc); + if (root != NULL) + { + has_content = 1; + FlattenOutline(root, 0, contents_vec); + } + } + fz_always(ctx_clone) + { + fz_free_outline(ctx_clone, root); + } + fz_catch(ctx_clone) + { + fz_free_context(ctx_clone); + return E_FAIL; + } + fz_free_context(ctx_clone); + return has_content; +} + +int muctx::GetTextSearch(int page_num, char* needle, sh_vector_text texts_vec) +{ + fz_page *page = NULL; + fz_text_sheet *sheet = NULL; + fz_device *dev = NULL; + fz_context *ctx_clone = NULL; + fz_text_page *text = NULL; + int hit_count = 0; + int k; + + ctx_clone = fz_clone_context(mu_ctx); + + fz_var(page); + fz_var(sheet); + fz_var(dev); + fz_try(ctx_clone) + { + page = fz_load_page(mu_doc, page_num); + sheet = fz_new_text_sheet(ctx_clone); + text = fz_new_text_page(ctx_clone); + dev = fz_new_text_device(ctx_clone, sheet, text); + fz_run_page(mu_doc, page, dev, &fz_identity, NULL); + fz_free_device(dev); /* Why does this need to be done here? Seems odd */ + dev = NULL; + hit_count = fz_search_text_page(ctx_clone, text, needle, mu_hit_bbox, nelem(mu_hit_bbox)); + + for (k = 0; k < hit_count; k++) + { + sh_text text_search(new text_search_t()); + text_search->upper_left.X = mu_hit_bbox[k].x0; + text_search->upper_left.Y = mu_hit_bbox[k].y0; + text_search->lower_right.X = mu_hit_bbox[k].x1; + text_search->lower_right.Y = mu_hit_bbox[k].y1; + texts_vec->push_back(text_search); + } + } + fz_always(ctx_clone) + { + fz_free_page(mu_doc, page); + fz_free_device(dev); + fz_free_text_sheet(ctx_clone, sheet); + fz_free_text_page(ctx_clone, text); + } + fz_catch(ctx_clone) + { + fz_free_context(ctx_clone); + return E_FAIL; + } + fz_free_context(ctx_clone); + return hit_count; +} + +/* Get the links and pack into a smart pointer structure */ +int muctx::GetLinks(int page_num, sh_vector_link links_vec) +{ + fz_page *page = NULL; + fz_link *links = NULL; + fz_context *ctx_clone = NULL; + int k = 0; + int num_links = 0; + + ctx_clone = fz_clone_context(mu_ctx); + + fz_var(page); + fz_var(links); + fz_try(ctx_clone) + { + page = fz_load_page(mu_doc, page_num); + links = fz_load_links(mu_doc, page); + + fz_link *curr_link = links; + if (curr_link != NULL) + { + /* Get our smart pointer structure filled */ + while (curr_link != NULL) + { + fz_rect curr_rect = curr_link->rect; + sh_link link(new document_link_t()); + + link->upper_left.X = curr_rect.x0; + link->upper_left.Y = curr_rect.y0; + link->lower_right.X = curr_rect.x1; + link->lower_right.Y = curr_rect.y1; + + switch (curr_link->dest.kind) + { + case FZ_LINK_GOTO: + + link->type = LINK_GOTO; + link->page_num = curr_link->dest.ld.gotor.page; + break; + + case FZ_LINK_URI: + { + int lenstr = strlen(curr_link->dest.ld.uri.uri); + std::unique_ptr<char[]> uri(new char[lenstr + 1]); + strcpy_s(uri.get(), lenstr + 1, curr_link->dest.ld.uri.uri); + link->uri.swap(uri); + link->type = LINK_URI; + break; + } + + default: + link->type = NOT_SET; + + } + links_vec->push_back(link); + curr_link = curr_link->next; + num_links += 1; + } + } + } + fz_always(ctx_clone) + { + fz_free_page(mu_doc, page); + fz_drop_link(ctx_clone, links); + } + fz_catch(ctx_clone) + { + fz_free_context(ctx_clone); + return E_FAIL; + } + fz_free_context(ctx_clone); + return num_links; +} + +fz_display_list * muctx::CreateDisplayList(int page_num) +{ + fz_context *ctx_clone = NULL; + fz_device *dev = NULL; + fz_page *page = NULL; + + ctx_clone = fz_clone_context(mu_ctx); + + /* First see if we have this one in the cache */ + fz_display_list *dlist = display_list_cache->UseEntry(page_num, ctx_clone); + if (dlist != NULL) + return dlist; + + /* Apparently not, lets go ahead and create and add to cache */ + fz_var(dev); + fz_var(page); + fz_var(dlist); + + fz_try(ctx_clone) + { + page = fz_load_page(mu_doc, page_num); + + /* Create a new list */ + dlist = fz_new_display_list(ctx_clone); + dev = fz_new_list_device(ctx_clone, dlist); + fz_run_page_contents(mu_doc, page, dev, &fz_identity, NULL); + /* Add it to the cache and set that it is in use */ + display_list_cache->AddEntry(page_num, dlist, ctx_clone); + } + fz_always(ctx_clone) + { + fz_free_device(dev); + fz_free_page(mu_doc, page); + } + fz_catch(ctx_clone) + { + fz_drop_display_list(ctx_clone, dlist); + fz_free_context(ctx_clone); + return NULL; + } + return dlist; +} + +/* Render page_num to size width by height into bmp_data buffer */ +status_t muctx::RenderPage(int page_num, int width, int height, + unsigned char *bmp_data, bool use_dlist) +{ + fz_device *dev = NULL; + fz_pixmap *pix = NULL; + fz_page *page = NULL; + fz_matrix ctm, *pctm = &ctm; + Point page_size; + fz_context *ctx_clone = NULL; + fz_display_list *dlist = NULL; + + if (use_dlist) + if ((dlist = CreateDisplayList(page_num)) == NULL) + return E_FAILURE; + + ctx_clone = fz_clone_context(mu_ctx); + + fz_var(dev); + fz_var(pix); + fz_var(page); + fz_var(dlist); + + fz_try(ctx_clone) + { + page = fz_load_page(mu_doc, page_num); + page_size = MeasurePage(page); + + /* Figure out scale factors so that we get the desired size */ + pctm = fz_scale(pctm, (float) width / page_size.X, (float) height / page_size.Y); + /* Flip on Y */ + ctm.f = height; + ctm.d = -ctm.d; + pix = fz_new_pixmap_with_data(ctx_clone, fz_device_bgr(ctx_clone), width, height, bmp_data); + fz_clear_pixmap_with_value(ctx_clone, pix, 255); + dev = fz_new_draw_device(ctx_clone, pix); + if (use_dlist) + fz_run_display_list(dlist, dev, pctm, NULL, NULL); + else + fz_run_page(mu_doc, page, dev, pctm, NULL); + } + fz_always(ctx_clone) + { + fz_free_device(dev); + fz_drop_pixmap(ctx_clone, pix); + fz_free_page(mu_doc, page); + if (use_dlist) + fz_drop_display_list(ctx_clone, dlist); + + } + fz_catch(ctx_clone) + { + fz_free_context(ctx_clone); + return E_FAILURE; + } + + fz_free_context(ctx_clone); + return S_ISOK; +} + +bool muctx::RequiresPassword(void) +{ + return fz_needs_password(mu_doc); +} + +bool muctx::ApplyPassword(char* password) +{ + return fz_authenticate_password(mu_doc, password); +} + +String^ muctx::GetHTML(int page_num) +{ + fz_output *out = NULL; + fz_device *dev = NULL; + fz_page *page = NULL; + fz_text_sheet *sheet = NULL; + fz_text_page *text = NULL; + fz_context *ctx_clone = NULL; + fz_buffer *buf = NULL; + String^ html; + + ctx_clone = fz_clone_context(mu_ctx); + + fz_var(dev); + fz_var(page); + fz_var(sheet); + fz_var(text); + fz_var(buf); + fz_try(ctx_clone) + { + page = fz_load_page(mu_doc, page_num); + sheet = fz_new_text_sheet(ctx_clone); + text = fz_new_text_page(ctx_clone); + dev = fz_new_text_device(ctx_clone, sheet, text); + fz_run_page(mu_doc, page, dev, &fz_identity, NULL); + fz_free_device(dev); + dev = NULL; + fz_analyze_text(ctx_clone, sheet, text); + buf = fz_new_buffer(ctx_clone, 256); + out = fz_new_output_with_buffer(ctx_clone, buf); + fz_print_text_page_html(ctx_clone, out, text); + html = char_to_String((char*) buf->data); + } + fz_always(ctx_clone) + { + fz_free_device(dev); + fz_free_page(mu_doc, page); + fz_free_text_sheet(ctx_clone, sheet); + fz_free_text_page(ctx_clone, text); + fz_drop_buffer(ctx_clone, buf); + } + fz_catch(ctx_clone) + { + fz_free_context(ctx_clone); + return nullptr; + } + + fz_free_context(ctx_clone); + return html; +} diff --git a/platform/winrt/mupdfwinrt/muctx.h b/platform/winrt/mupdfwinrt/muctx.h new file mode 100644 index 00000000..826fa45b --- /dev/null +++ b/platform/winrt/mupdfwinrt/muctx.h @@ -0,0 +1,99 @@ +#pragma once + +#include <memory> +#include <functional> +#include <vector> +#include <windows.h> +#include <mutex> +#include "utils.h" +#include "Cache.h" +#include "status.h" + +extern "C" { + #include "mupdf/fitz.h" +} + +#define MAX_SEARCH 500 + +using namespace Platform; /* For String */ +using namespace Windows::Foundation; /* For Point */ + +/* These are the std objects used to interface to muctx. We do use windows + String and Point types however */ + +/* Links */ +typedef struct document_link_s +{ + link_t type; + Point upper_left; + Point lower_right; + std::unique_ptr<char[]> uri; + int page_num; +} document_link_t; +#define sh_link std::shared_ptr<document_link_t> +#define sh_vector_link std::shared_ptr<std::vector<sh_link>> + +/* Text Search */ +typedef struct text_search_s +{ + Point upper_left; + Point lower_right; +} text_search_t; +#define sh_text std::shared_ptr<text_search_t> +#define sh_vector_text std::shared_ptr<std::vector<sh_text>> + +/* Content Results */ +typedef struct content_s +{ + int page; + String^ string_orig; + String^ string_margin; +} content_t; +#define sh_content std::shared_ptr<content_t> +#define sh_vector_content std::shared_ptr<std::vector<sh_content>> + +/* Used for HTML return */ +#define sh_vector_char std::shared_ptr<std::vector<char>> + +/* Needed for file handling */ +using namespace Windows::Storage::Streams; +using namespace Windows::Foundation; + +typedef struct win_stream_struct_s +{ + IRandomAccessStream^ stream; +} win_stream_struct; + +class muctx +{ +private: + CRITICAL_SECTION mu_criticalsec[FZ_LOCK_MAX]; + win_stream_struct win_stream; + fz_locks_context mu_locks; + fz_context *mu_ctx; + fz_document *mu_doc; + fz_outline *mu_outline; + fz_rect mu_hit_bbox[MAX_SEARCH]; + void FlattenOutline(fz_outline *outline, int level, + sh_vector_content contents_vec); + Cache *display_list_cache; + fz_display_list* CreateDisplayList(int page_num); + +public: + muctx(void); + ~muctx(void); + void CleanUp(void); + status_t InitializeStream(IRandomAccessStream^ readStream, char *ext); + int GetPageCount(); + status_t InitializeContext(); + status_t RenderPage(int page_num, int width, int height, unsigned char *bmp_data, + bool use_dlist); + Point MeasurePage(int page_num); + Point MeasurePage(fz_page *page); + int GetLinks(int page_num, sh_vector_link links_vec); + int GetTextSearch(int page_num, char* needle, sh_vector_text texts_vec); + int GetContents(sh_vector_content contents_vec); + String^ GetHTML(int page_num); + bool RequiresPassword(void); + bool ApplyPassword(char* password); +}; diff --git a/platform/winrt/mupdfwinrt/mudocument.cpp b/platform/winrt/mupdfwinrt/mudocument.cpp new file mode 100644 index 00000000..92c24e24 --- /dev/null +++ b/platform/winrt/mupdfwinrt/mudocument.cpp @@ -0,0 +1,320 @@ +// mudocument.cpp + +/* This file contains the interface between the muctx class, which + implements the mupdf calls and the WinRT objects enabling calling from + C#, C++, Visual Basic, JavaScript applications */ + +#include "pch.h" +#include "mudocument.h" +#include "status.h" + +using namespace mupdfwinrt; +using namespace concurrency; +using namespace Platform::Collections; + +mudocument::mudocument() +{ + this->mu_object.InitializeContext(); + this->links = nullptr; +} + +bool mudocument::RequiresPassword() +{ + return mu_object.RequiresPassword(); +} + +bool mudocument::ApplyPassword(String^ password) +{ + char* pass_char = String_to_char(password); + bool ok = mu_object.ApplyPassword(pass_char); + delete []pass_char; + return ok; +} + +void mudocument::CleanUp() +{ + this->mu_object.CleanUp(); +} + +int mudocument::GetNumPages() +{ + return this->mu_object.GetPageCount(); +} + +Point mudocument::GetPageSize(int page_num) +{ + std::lock_guard<std::mutex> lock(mutex_lock); + return this->mu_object.MeasurePage(page_num); +} + +Windows::Foundation::IAsyncOperation<int>^ mudocument::OpenFileAsync(StorageFile^ file) +{ + return create_async([this, file]() + { + String^ filetype = file->FileType; + const wchar_t *w = filetype->Data(); + int cb = WideCharToMultiByte(CP_UTF8, 0, w, -1, nullptr, 0, nullptr, nullptr); + char* name = new char[cb]; + + WideCharToMultiByte(CP_UTF8, 0, w ,-1 ,name ,cb ,nullptr, nullptr); + char *ext = strrchr(name, '.'); + + auto t = create_task(file->OpenAsync(FileAccessMode::Read)); + + return t.then([this, file, ext](task<IRandomAccessStream^> task) + { + try + { + IRandomAccessStream^ readStream = task.get(); + UINT64 const size = readStream->Size; + + if (size <= MAXUINT32) + { + status_t code = this->mu_object.InitializeStream(readStream, ext); + if (code != S_ISOK) + delete readStream; + return (int) code; + } + else + { + delete readStream; + return (int) E_FAILURE; + } + } + catch(COMException^ ex) { + /* Need to do something useful here */ + throw ex; + } + }); + }); +} + +/* Header info for bmp stream so that we can use the image brush */ +static void Prepare_bmp(int width, int height, DataWriter ^dw) +{ + int row_size = width * 4; + int bmp_size = row_size * height + 54; + + dw->WriteString("BM"); + dw->ByteOrder = ByteOrder::LittleEndian; + dw->WriteInt32(bmp_size); + dw->WriteInt16(0); + dw->WriteInt16(0); + dw->WriteInt32(54); + dw->WriteInt32(40); + dw->WriteInt32(width); + dw->WriteInt32(height); + dw->WriteInt16(1); + dw->WriteInt16(32); + dw->WriteInt32(0); + dw->WriteInt32(row_size * height); + dw->WriteInt32(2835); + dw->WriteInt32(2835); + dw->WriteInt32(0); + dw->WriteInt32(0); +} + +/* Do the search through the pages with an async task with progress callback */ +Windows::Foundation::IAsyncOperationWithProgress<int, double>^ + mudocument::SearchDocumentWithProgressAsync(String^ textToFind, int dir, int start_page) +{ + return create_async([this, textToFind, dir, start_page](progress_reporter<double> reporter) -> int + { + int num_pages = this->GetNumPages(); + double progress; + int box_count, result; + + for (int i = start_page; i >= 0 && i < num_pages; i += dir) + { + box_count = this->ComputeTextSearch(textToFind, i); + result = i; + if (dir == SEARCH_FORWARD) + { + progress = 100.0 * (double) (i + 1) / (double) num_pages; + } + else + { + progress = 100.0 * (double) (num_pages - i) / (double) num_pages; + } + /* We could have it only update with certain percentage changes but + we are just looping over the pages here so it is not too bad */ + reporter.report(progress); + + if (is_task_cancellation_requested()) + { + // Cancel the current task. + cancel_current_task(); + } + + if (box_count > 0) + { + return result; + } + if (is_task_cancellation_requested()) + { + } + } + reporter.report(100.0); + /* Todo no matches found alert */ + if (box_count == 0) + return TEXT_NOT_FOUND; + else + return result; + }); +} + +/* Pack the page into a bmp stream */ +Windows::Foundation::IAsyncOperation<InMemoryRandomAccessStream^>^ + mudocument::RenderPageAsync(int page_num, int width, int height, bool use_dlist) +{ + return create_async([this, width, height, page_num, use_dlist](cancellation_token ct) -> InMemoryRandomAccessStream^ + { + /* Allocate space for bmp */ + Array<unsigned char>^ bmp_data = ref new Array<unsigned char>(height * 4 * width); + /* Set up the memory stream */ + InMemoryRandomAccessStream ^ras = ref new InMemoryRandomAccessStream(); + DataWriter ^dw = ref new DataWriter(ras->GetOutputStreamAt(0)); + + /* Go ahead and write our header data into the memory stream */ + Prepare_bmp(width, height, dw); + + std::lock_guard<std::mutex> lock(mutex_lock); + + /* Get raster bitmap stream */ + status_t code = mu_object.RenderPage(page_num, width, height, &(bmp_data[0]), + use_dlist); + if (code != S_ISOK) + { + throw ref new FailureException("Page Rendering Failed"); + } + /* Now the data into the memory stream */ + dw->WriteBytes(bmp_data); + DataWriterStoreOperation^ result = dw->StoreAsync(); + /* Block on this Async call? */ + while(result->Status != AsyncStatus::Completed) { + } + /* Return raster stream */ + return ras; + }); +} + +int mudocument::ComputeLinks(int page_num) +{ + std::lock_guard<std::mutex> lock(mutex_lock); + /* We get back a standard smart pointer from muctx interface and go to WinRT + type here */ + sh_vector_link link_smart_ptr_vec(new std::vector<sh_link>()); + int num_items = mu_object.GetLinks(page_num, link_smart_ptr_vec); + if (num_items == 0) + return 0; + /* Pack into winRT type*/ + this->links = ref new Platform::Collections::Vector<Links^>(); + for (int k = 0; k < num_items; k++) + { + auto new_link = ref new Links(); + sh_link muctx_link = link_smart_ptr_vec->at(k); + new_link->LowerRight = muctx_link->lower_right; + new_link->UpperLeft = muctx_link->upper_left; + new_link->PageNum = muctx_link->page_num; + new_link->Type = muctx_link->type; + if (new_link->Type == LINK_URI) + { + String^ str = char_to_String(muctx_link->uri.get()); + // The URI to launch + new_link->Uri = ref new Windows::Foundation::Uri(str); + } + this->links->Append(new_link); + } + return num_items; +} + +Links^ mudocument::GetLink(int k) +{ + if (k >= this->links->Size) + return nullptr; + return this->links->GetAt(k); +} + +int mudocument::ComputeTextSearch(String^ text, int page_num) +{ + std::lock_guard<std::mutex> lock(mutex_lock); + /* We get back a standard smart pointer from muctx interface and go to + * WinRT type here */ + char* text_char = String_to_char(text); + sh_vector_text text_smart_ptr_vec(new std::vector<sh_text>()); + + int num_items = mu_object.GetTextSearch(page_num, text_char, text_smart_ptr_vec); + if (num_items == 0) + return 0; + /* Pack into winRT type*/ + this->textsearch = ref new Platform::Collections::Vector<Links^>(); + for (int k = 0; k < num_items; k++) + { + auto new_link = ref new Links(); + sh_text muctx_text = text_smart_ptr_vec->at(k); + new_link->LowerRight = muctx_text->lower_right; + new_link->UpperLeft = muctx_text->upper_left; + new_link->Type = TEXTBOX; + this->textsearch->Append(new_link); + } + delete []text_char; + return num_items; +} + +/* Return number of hits found on most recent page */ +int mudocument::TextSearchCount(void) +{ + if (this->textsearch != nullptr) + return this->textsearch->Size; + else + return 0; +} + +/* Returns the kth item for a page after a text search query */ +Links^ mudocument::GetTextSearch(int k) +{ + if (k >= this->textsearch->Size) + return nullptr; + return this->textsearch->GetAt(k); +} + +int mudocument::ComputeContents() +{ + std::lock_guard<std::mutex> lock(mutex_lock); + /* We get back a standard smart pointer from muctx interface and go to + * WinRT type here */ + + sh_vector_content content_smart_ptr_vec(new std::vector<sh_content>()); + + int has_content = mu_object.GetContents(content_smart_ptr_vec); + + if (!has_content) + return 0; + /* Pack into winRT type*/ + this->contents = ref new Platform::Collections::Vector<ContentItem^>(); + int num_items = content_smart_ptr_vec->size(); + + for (int k = 0; k < num_items; k++) + { + auto new_content = ref new ContentItem(); + sh_content muctx_content = content_smart_ptr_vec->at(k); + new_content->Page = muctx_content->page; + new_content->StringMargin = muctx_content->string_margin; + new_content->StringOrig = muctx_content->string_orig; + this->contents->Append(new_content); + } + return num_items; +} + +ContentItem^ mudocument::GetContent(int k) +{ + if (k >= this->contents->Size) + return nullptr; + return this->contents->GetAt(k); +} + +String^ mudocument::ComputeHTML(int page_num) +{ + std::lock_guard<std::mutex> lock(mutex_lock); + return mu_object.GetHTML(page_num); +} diff --git a/platform/winrt/mupdfwinrt/mudocument.h b/platform/winrt/mupdfwinrt/mudocument.h new file mode 100644 index 00000000..bb4de722 --- /dev/null +++ b/platform/winrt/mupdfwinrt/mudocument.h @@ -0,0 +1,50 @@ +#pragma once + +/* This file contains the interface between the muctx class, which + implements the mupdf calls and the WinRT objects enabling calling from + C#, C++, and JavaScript applications */ + +#include "muctx.h" +#include "Links.h" +#include "ppltasks.h" +#include "ContentItem.h" +#include <winnt.h> +#include <collection.h> + +using namespace Windows::Storage; +using namespace Platform; +using namespace Concurrency; +using namespace Platform::Collections; + +namespace mupdfwinrt +{ + public ref class mudocument sealed + { + private: + muctx mu_object; + std::mutex mutex_lock; + Platform::Collections::Vector<Links^>^ links; + Platform::Collections::Vector<Links^>^ textsearch; + Platform::Collections::Vector<ContentItem^>^ contents; + public: + mudocument(); + void CleanUp(); + Windows::Foundation::IAsyncOperation<int>^ OpenFileAsync(StorageFile^ file); + int GetNumPages(void); + Point GetPageSize(int page_num); + Windows::Foundation::IAsyncOperation<InMemoryRandomAccessStream^>^ + RenderPageAsync(int page_num, int width, int height, bool use_dlist); + Windows::Foundation::IAsyncOperationWithProgress<int, double>^ + SearchDocumentWithProgressAsync(String^ textToFind, int dir, int start_page); + String^ ComputeHTML(int page_num); + int ComputeTextSearch(String^ text, int page_num); + Links^ GetTextSearch(int k); + int TextSearchCount(void); + int ComputeContents(void); + ContentItem^ GetContent(int k); + int ComputeLinks(int page_num); + Links^ GetLink(int k); + bool RequiresPassword(); + bool ApplyPassword(String^ password); + }; +} diff --git a/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj b/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj new file mode 100644 index 00000000..01b99ea6 --- /dev/null +++ b/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{9e6ab41d-09a7-45a6-a53b-1e4bf3ac5b33}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <ProjectName>mupdfwinrt</ProjectName> + <RootNamespace>mupdfwinrt</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <AppContainerApplication>true</AppContainerApplication> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <GenerateManifest>false</GenerateManifest> + <OutDir>..\$(Platform)\$(Configuration)\</OutDir> + <IntDir>..\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> + <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> + <AdditionalIncludeDirectories>../../include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <AdditionalDependencies>runtimeobject.lib;../$(Platform)/$(Configuration)/libmupdf_winRT.lib;../$(Platform)/$(Configuration)/libthirdparty_winRT.lib;../$(Platform)/$(Configuration)/libmupdf-nov8_winRT.lib</AdditionalDependencies> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="Cache.h" /> + <ClInclude Include="Links.h" /> + <ClInclude Include="ContentItem.h" /> + <ClInclude Include="muctx.h" /> + <ClInclude Include="pch.h" /> + <ClInclude Include="mudocument.h" /> + <ClInclude Include="status.h" /> + <ClInclude Include="utils.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="Cache.cpp" /> + <ClCompile Include="Links.cpp" /> + <ClCompile Include="ContentItem.cpp" /> + <ClCompile Include="muctx.cpp" /> + <ClCompile Include="pch.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> + </ClCompile> + <ClCompile Include="mudocument.cpp" /> + <ClCompile Include="utils.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj.filters b/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj.filters new file mode 100644 index 00000000..7598f3e5 --- /dev/null +++ b/platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj.filters @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Resources"> + <UniqueIdentifier>16ec6626-1276-4cf1-b7af-8d28de2c8f75</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="pch.cpp" /> + <ClCompile Include="mudocument.cpp" /> + <ClCompile Include="muctx.cpp" /> + <ClCompile Include="Links.cpp" /> + <ClCompile Include="ContentItem.cpp" /> + <ClCompile Include="utils.cpp" /> + <ClCompile Include="Cache.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="pch.h" /> + <ClInclude Include="mudocument.h" /> + <ClInclude Include="muctx.h" /> + <ClInclude Include="Links.h" /> + <ClInclude Include="utils.h" /> + <ClInclude Include="ContentItem.h" /> + <ClInclude Include="Cache.h" /> + <ClInclude Include="status.h" /> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/platform/winrt/mupdfwinrt/pch.cpp b/platform/winrt/mupdfwinrt/pch.cpp new file mode 100644 index 00000000..01484ff5 --- /dev/null +++ b/platform/winrt/mupdfwinrt/pch.cpp @@ -0,0 +1,6 @@ +// +// pch.cpp +// Include the standard header and generate the precompiled header. +// + +#include "pch.h" diff --git a/platform/winrt/mupdfwinrt/pch.h b/platform/winrt/mupdfwinrt/pch.h new file mode 100644 index 00000000..f815ac97 --- /dev/null +++ b/platform/winrt/mupdfwinrt/pch.h @@ -0,0 +1,6 @@ +// +// pch.h +// Header for standard system include files. +// + +#pragma once diff --git a/platform/winrt/mupdfwinrt/utils.cpp b/platform/winrt/mupdfwinrt/utils.cpp new file mode 100644 index 00000000..38e11ada --- /dev/null +++ b/platform/winrt/mupdfwinrt/utils.cpp @@ -0,0 +1,28 @@ +#include "pch.h" +#include "utils.h" + +/* Window string hurdles.... */ +String^ char_to_String(char *char_in) +{ + size_t size = MultiByteToWideChar(CP_UTF8, 0, char_in, -1, NULL, 0); + wchar_t *pw; + pw = new wchar_t[size]; + if (!pw) + { + delete []pw; + return nullptr; + } + MultiByteToWideChar(CP_UTF8, 0, char_in, -1, pw, size ); + String^ str_out = ref new String(pw); + delete []pw; + return str_out; +} + +char* String_to_char(String^ text) +{ + const wchar_t *w = text->Data(); + int cb = WideCharToMultiByte(CP_UTF8, 0, text->Data(), -1, nullptr, 0, nullptr, nullptr); + char* charout = new char[cb]; + WideCharToMultiByte(CP_UTF8, 0, text->Data() ,-1 ,charout ,cb ,nullptr, nullptr); + return charout; +} diff --git a/platform/winrt/mupdfwinrt/utils.h b/platform/winrt/mupdfwinrt/utils.h new file mode 100644 index 00000000..6ffc7e20 --- /dev/null +++ b/platform/winrt/mupdfwinrt/utils.h @@ -0,0 +1,7 @@ +#pragma once + +#include "Windows.h" +using namespace Platform; + +String^ char_to_String(char *char_in); +char* String_to_char(String^ text); |