summaryrefslogtreecommitdiff
path: root/platform/winrt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/winrt')
-rw-r--r--platform/winrt/README.txt39
-rw-r--r--platform/winrt/generate.bat45
-rw-r--r--platform/winrt/generated.vcxproj319
-rw-r--r--platform/winrt/generated.vcxproj.filters568
-rw-r--r--platform/winrt/libmupdf-nov8_winRT.vcxproj297
-rw-r--r--platform/winrt/libmupdf-nov8_winRT.vcxproj.filters13
-rw-r--r--platform/winrt/libmupdf_winRT.vcxproj430
-rw-r--r--platform/winrt/libmupdf_winRT.vcxproj.filters399
-rw-r--r--platform/winrt/libthirdparty_winRT.vcxproj524
-rw-r--r--platform/winrt/libthirdparty_winRT.vcxproj.filters684
-rw-r--r--platform/winrt/mupdf.sln266
-rw-r--r--platform/winrt/mupdf_cpp/App.xaml20
-rw-r--r--platform/winrt/mupdf_cpp/App.xaml.cpp125
-rw-r--r--platform/winrt/mupdf_cpp/App.xaml.h24
-rw-r--r--platform/winrt/mupdf_cpp/Assets/Logo.Scale-100.pngbin0 -> 14183 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.pngbin0 -> 19150 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.pngbin0 -> 24211 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.pngbin0 -> 11656 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.pngbin0 -> 5816 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.pngbin0 -> 7512 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.pngbin0 -> 9262 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.pngbin0 -> 30014 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.pngbin0 -> 51342 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.pngbin0 -> 68929 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.pngbin0 -> 22486 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.pngbin0 -> 4299 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Assets/mupdf_splash.pngbin0 -> 28390 bytes
-rw-r--r--platform/winrt/mupdf_cpp/Common/StandardStyles.xaml1889
-rw-r--r--platform/winrt/mupdf_cpp/DocumentPage.cpp15
-rw-r--r--platform/winrt/mupdf_cpp/DocumentPage.h195
-rw-r--r--platform/winrt/mupdf_cpp/MainPage.xaml276
-rw-r--r--platform/winrt/mupdf_cpp/MainPage.xaml.cpp1479
-rw-r--r--platform/winrt/mupdf_cpp/MainPage.xaml.h177
-rw-r--r--platform/winrt/mupdf_cpp/Package.appxmanifest37
-rw-r--r--platform/winrt/mupdf_cpp/RectList.cpp9
-rw-r--r--platform/winrt/mupdf_cpp/RectList.h153
-rw-r--r--platform/winrt/mupdf_cpp/mupdf_cpp.rcbin0 -> 2664 bytes
-rw-r--r--platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj269
-rw-r--r--platform/winrt/mupdf_cpp/mupdf_cpp.vcxproj.filters72
-rw-r--r--platform/winrt/mupdf_cpp/pch.cpp6
-rw-r--r--platform/winrt/mupdf_cpp/pch.h9
-rw-r--r--platform/winrt/mupdfwinrt/Cache.cpp114
-rw-r--r--platform/winrt/mupdfwinrt/Cache.h34
-rw-r--r--platform/winrt/mupdfwinrt/ContentItem.cpp11
-rw-r--r--platform/winrt/mupdfwinrt/ContentItem.h58
-rw-r--r--platform/winrt/mupdfwinrt/Links.cpp12
-rw-r--r--platform/winrt/mupdfwinrt/Links.h88
-rw-r--r--platform/winrt/mupdfwinrt/muctx.cpp569
-rw-r--r--platform/winrt/mupdfwinrt/muctx.h99
-rw-r--r--platform/winrt/mupdfwinrt/mudocument.cpp320
-rw-r--r--platform/winrt/mupdfwinrt/mudocument.h50
-rw-r--r--platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj248
-rw-r--r--platform/winrt/mupdfwinrt/mupdfwinrt.vcxproj.filters28
-rw-r--r--platform/winrt/mupdfwinrt/pch.cpp6
-rw-r--r--platform/winrt/mupdfwinrt/pch.h6
-rw-r--r--platform/winrt/mupdfwinrt/utils.cpp28
-rw-r--r--platform/winrt/mupdfwinrt/utils.h7
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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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
new file mode 100644
index 00000000..821cb7d9
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-100.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png
new file mode 100644
index 00000000..94eb9b67
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-140.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png
new file mode 100644
index 00000000..44354901
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-180.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png
new file mode 100644
index 00000000..165bda7a
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/Logo.Scale-80.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png
new file mode 100644
index 00000000..5b5635e9
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-100.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png
new file mode 100644
index 00000000..2813a863
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-140.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png
new file mode 100644
index 00000000..1908837d
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/StoreLogo.scale-180.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png
new file mode 100644
index 00000000..9497ffb5
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-100.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png
new file mode 100644
index 00000000..1c6cd7a0
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-140.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png
new file mode 100644
index 00000000..7d3391f8
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-180.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png
new file mode 100644
index 00000000..471efbda
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/WideLogo.scale-80.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png b/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png
new file mode 100644
index 00000000..48746c87
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/mupdf_smallogo.png
Binary files differ
diff --git a/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png b/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png
new file mode 100644
index 00000000..624f9ae9
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/Assets/mupdf_splash.png
Binary files differ
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">&#xE071;</x:String>
+ <x:String x:Key="BackButtonSnappedGlyph">&#xE0BA;</x:String>
+ </ResourceDictionary>
+
+ <ResourceDictionary x:Key="HighContrast">
+ <x:String x:Key="BackButtonGlyph">&#xE071;</x:String>
+ <x:String x:Key="BackButtonSnappedGlyph">&#xE0C4;</x:String>
+ </ResourceDictionary>
+ </ResourceDictionary.ThemeDictionaries>
+
+ <x:String x:Key="ChevronGlyph">&#xE26B;</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="&#xE0A8;" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0" Foreground="{StaticResource AppBarItemBackgroundThemeBrush}"/>
+ <TextBlock x:Name="OutlineGlyph" Text="&#xE0A7;" 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="&#xE11B;"/>
+ </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="&#xE11A;"/>
+ </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="&#xE1A5;"/>
+ </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="&#xE111;"/>
+ </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="&#xE112;"/>
+ </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="&#xE10A;"/>
+ </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="&#xE115;"/>
+ </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="&#xE167;"/>
+ </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="&#xE179;"/>
+ </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="&#xE18B;"/>
+ </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="&#xE12E;"/>
+ </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="&#xE1A4;"/>
+ </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="&#xE100;"/>
+ </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="&#xE101;"/>
+ </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="&#xE102;"/>
+ </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="&#xE103;"/>
+ </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="&#xE104;"/>
+ </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="&#xE105;"/>
+ </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="&#xE106;"/>
+ </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="&#xE107;"/>
+ </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="&#xE108;"/>
+ </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="&#xE109;"/>
+ </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="&#xE10A;"/>
+ </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="&#xE10B;"/>
+ </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="&#xE10C;"/>
+ </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="&#xE10D;"/>
+ </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="&#xE10E;"/>
+ </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="&#xE10F;"/>
+ </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="&#xE110;"/>
+ </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="&#xE111;"/>
+ </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="&#xE112;"/>
+ </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="&#xE113;"/>
+ </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="&#xE114;"/>
+ </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="&#xE115;"/>
+ </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="&#xE116;"/>
+ </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="&#xE117;"/>
+ </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="&#xE118;"/>
+ </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="&#xE119;"/>
+ </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="&#xE11A;"/>
+ </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="&#xE11B;"/>
+ </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="&#xE11C;"/>
+ </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="&#xE11D;"/>
+ </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="&#xE11E;"/>
+ </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="&#xE11F;"/>
+ </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="&#xE120;"/>
+ </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="&#xE121;"/>
+ </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="&#xE122;"/>
+ </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="&#xE123;"/>
+ </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="&#xE124;"/>
+ </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="&#xE125;"/>
+ </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="&#xE126;"/>
+ </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="&#xE127;"/>
+ </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="&#xE128;"/>
+ </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="&#xE129;"/>
+ </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="&#xE12A;"/>
+ </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="&#xE12B;"/>
+ </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="&#xE12C;"/>
+ </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="&#xE12D;"/>
+ </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="&#xE12E;"/>
+ </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="&#xE12F;"/>
+ </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="&#xE130;"/>
+ </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="&#xE131;"/>
+ </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="&#xE132;"/>
+ </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="&#xE133;"/>
+ </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="&#xE134;"/>
+ </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="&#xE135;"/>
+ </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="&#xE136;"/>
+ </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="&#xE137;"/>
+ </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="&#xE138;"/>
+ </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="&#xE139;"/>
+ </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="&#xE13A;"/>
+ </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="&#xE13B;"/>
+ </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="&#xE13C;"/>
+ </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="&#xE13D;"/>
+ </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="&#xE13E;"/>
+ </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="&#xE141;"/>
+ </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="&#xE142;"/>
+ </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="&#xE143;"/>
+ </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="&#xE144;"/>
+ </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="&#xE145;"/>
+ </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="&#xE146;"/>
+ </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="&#xE147;"/>
+ </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="&#xE148;"/>
+ </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="&#xE149;"/>
+ </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="&#xE14A;"/>
+ </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="&#xE14B;"/>
+ </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="&#xE14C;"/>
+ </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="&#xE14D;"/>
+ </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="&#xE14E;"/>
+ </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="&#xE14F;"/>
+ </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="&#xE150;"/>
+ </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="&#xE151;"/>
+ </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="&#xE155;"/>
+ </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="&#xE156;"/>
+ </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="&#xE158;"/>
+ </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="&#xE159;"/>
+ </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="&#xE15A;"/>
+ </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="&#xE15B;"/>
+ </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="&#xE15C;"/>
+ </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="&#xE15D;"/>
+ </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="&#xE15E;"/>
+ </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="&#xE15F;"/>
+ </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="&#xE160;"/>
+ </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="&#xE161;"/>
+ </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="&#xE162;"/>
+ </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="&#xE163;"/>
+ </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="&#xE164;"/>
+ </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="&#xE165;"/>
+ </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="&#xE166;"/>
+ </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="&#xE167;"/>
+ </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="&#xE168;"/>
+ </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="&#xE169;"/>
+ </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="&#xE16A;"/>
+ </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="&#xE16B;"/>
+ </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="&#xE16C;"/>
+ </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="&#xE16D;"/>
+ </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="&#xE16E;"/>
+ </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="&#xE16F;"/>
+ </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="&#xE170;"/>
+ </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="&#xE171;"/>
+ </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="&#xE172;"/>
+ </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="&#xE173;"/>
+ </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="&#xE174;"/>
+ </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="&#xE178;"/>
+ </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="&#xE179;"/>
+ </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="&#xE17A;"/>
+ </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="&#xE17B;"/>
+ </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="&#xE17C;"/>
+ </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="&#xE17D;"/>
+ </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="&#xE181;"/>
+ </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="&#xE182;"/>
+ </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="&#xE183;"/>
+ </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="&#xE184;"/>
+ </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="&#xE185;"/>
+ </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="&#xE186;"/>
+ </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="&#xE187;"/>
+ </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="&#xE188;"/>
+ </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="&#xE189;"/>
+ </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="&#xE18A;"/>
+ </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="&#xE18B;"/>
+ </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="&#xE18C;"/>
+ </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="&#xE18D;"/>
+ </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="&#xE190;"/>
+ </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="&#xE191;"/>
+ </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="&#xE192;"/>
+ </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="&#xE193;"/>
+ </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="&#xE194;"/>
+ </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="&#xE195;"/>
+ </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="&#xE196;"/>
+ </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="&#xE197;"/>
+ </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="&#xE198;"/>
+ </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="&#xE199;"/>
+ </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="&#xE19A;"/>
+ </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="&#xE19B;"/>
+ </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="&#xE19C;"/>
+ </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="&#xE19D;"/>
+ </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="&#xE19E;"/>
+ </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="&#xE19F;"/>
+ </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="&#xE1A0;"/>
+ </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="&#xE1A1;"/>
+ </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="&#xE1A2;"/>
+ </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="&#xE1A3;"/>
+ </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="&#xE1A4;"/>
+ </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="&#xE1A5;"/>
+ </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="&#xE1A6;"/>
+ </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="&#xE1A7;"/>
+ </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="&#xE1C3;"/>
+ </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="&#xE1C4;"/>
+ </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="&#xE1C5;"/>
+ </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="&#xE1C6;"/>
+ </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="&#xE1C7;"/>
+ </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="&#xE1C8;"/>
+ </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="&#xE1C9;"/>
+ </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="&#xE1CA;"/>
+ </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="&#xE1CB;"/>
+ </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="&#xE1CC;"/>
+ </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="&#xE1CD;"/>
+ </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="&#xE1CE;"/>
+ </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="&#xE1CF;"/>
+ </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="&#xE1D0;"/>
+ </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="&#xE1D1;"/>
+ </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="&#xE1D2;"/>
+ </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="&#xE1D3;"/>
+ </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="&#xE1D4;"/>
+ </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="&#xE1D5;"/>
+ </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="&#xE1D6;"/>
+ </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="&#xE1D7;"/>
+ </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="&#xE1D8;"/>
+ </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="&#xE1D9;"/>
+ </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="&#xE1DA;"/>
+ </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="&#xE1DB;"/>
+ </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="&#xE1DD;"/>
+ </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="&#xE1DE;"/>
+ </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="&#xE1DF;"/>
+ </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="&#xE1E0;"/>
+ </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="&#xE1E1;"/>
+ </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="&#xE1E2;"/>
+ </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="&#xE1E3;"/>
+ </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="&#xE1E4;"/>
+ </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="&#xE1E5;"/>
+ </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="&#xE1E6;"/>
+ </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="&#xE1E7;"/>
+ </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="&#xE1E8;"/>
+ </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="&#xE1E9;"/>
+ </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="&#xE0A8;" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/>
+ <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/>
+ <TextBlock x:Name="ArrowGlyph" Text="&#xE0A6;" 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="&#xE0D4;" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/>
+ <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonSnappedGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/>
+ <TextBlock x:Name="ArrowGlyph" Text="&#xE0C4;" 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
new file mode 100644
index 00000000..0d7c7a75
--- /dev/null
+++ b/platform/winrt/mupdf_cpp/mupdf_cpp.rc
Binary files differ
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);