diff options
Diffstat (limited to 'platform/windows/mupdfnet')
-rw-r--r-- | platform/windows/mupdfnet/mupdfnet.cpp | 471 | ||||
-rw-r--r-- | platform/windows/mupdfnet/mupdfnet.h | 77 | ||||
-rw-r--r-- | platform/windows/mupdfnet/mupdfnet.vcxproj | 221 | ||||
-rw-r--r-- | platform/windows/mupdfnet/mupdfnet.vcxproj.filters | 42 |
4 files changed, 811 insertions, 0 deletions
diff --git a/platform/windows/mupdfnet/mupdfnet.cpp b/platform/windows/mupdfnet/mupdfnet.cpp new file mode 100644 index 00000000..6a59aec9 --- /dev/null +++ b/platform/windows/mupdfnet/mupdfnet.cpp @@ -0,0 +1,471 @@ +#include "mupdfnet.h" +#include <strsafe.h> +#include "muctx.h" + +BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + +std::shared_ptr<std::vector<sh_content>> gContents; +std::shared_ptr<std::vector<sh_text>> gTextResults; +std::shared_ptr<std::vector<sh_link>> gLinkResults; + +char* String_to_char(PCWSTR text) +{ + int cb = WideCharToMultiByte(CP_UTF8, 0, text, -1, nullptr, 0, nullptr, nullptr); + char* charout = new char[cb]; + if (!charout) + { + return nullptr; + } + WideCharToMultiByte(CP_UTF8, 0, text, -1, charout, cb, nullptr, nullptr); + return charout; +} + +PCWSTR char_to_String(const 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) + { + return nullptr; + } + MultiByteToWideChar(CP_UTF8, 0, char_in, -1, pw, size); + return pw; +} + +/* We have to have a C-Style API to access the C++ code */ +SYMBOL_DECLSPEC void* __stdcall mInitialize() +{ + muctx *mu_ctx = new muctx; + status_t result = mu_ctx->InitializeContext(); + + if (result == S_ISOK) + return static_cast<void*>(mu_ctx); + else + return nullptr; +} + +SYMBOL_DECLSPEC int __stdcall mOpenDocument(void *ctx, PCWSTR filename) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + + mReleaseContents(); + return mu_ctx->OpenDocument(String_to_char(filename)); +} + +SYMBOL_DECLSPEC void __stdcall mCleanUp(void *ctx) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + + mReleaseContents(); + mu_ctx->CleanUp(); +} + +SYMBOL_DECLSPEC int __stdcall mGetPageCount(void *ctx) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + return mu_ctx->GetPageCount(); +} + +SYMBOL_DECLSPEC bool __stdcall mRequiresPassword(void *ctx) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + return mu_ctx->RequiresPassword(); +} + +SYMBOL_DECLSPEC bool __stdcall mApplyPassword(void *ctx, PCWSTR password) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + return mu_ctx->ApplyPassword(String_to_char(password)); +} + +SYMBOL_DECLSPEC int __stdcall mRenderPage(void *ctx, int page_num, + byte* bmp_data, int bmp_width, + int bmp_height, double scale, bool flipy) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + int code = mu_ctx->RenderPage(page_num, &(bmp_data[0]), bmp_width, + bmp_height, scale, flipy); + + return code; +} + +SYMBOL_DECLSPEC int __stdcall mMeasurePage(void *ctx, int page_num, + double *width, double *height) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + point_t size; + + int code = mu_ctx->MeasurePage(page_num, &size); + *width = size.X; + *height = size.Y; + + return code; +} + +SYMBOL_DECLSPEC int __stdcall mGetContents(void *ctx) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + int has_content; + sh_vector_content content_smart_ptr_vec(new std::vector<sh_content>()); + gContents = content_smart_ptr_vec; + has_content = mu_ctx->GetContents(gContents); + if (has_content) + return gContents->size(); + else + return 0; +} + +SYMBOL_DECLSPEC void __stdcall mReleaseContents() +{ + if (gContents != nullptr) + gContents.reset(); +} + +SYMBOL_DECLSPEC char* __stdcall mGetContentsItem(int k, int *len, int *page) +{ + char* retstr = NULL; + + sh_content muctx_content = gContents->at(k); + const char* str = (muctx_content->string_margin.c_str()); + *len = strlen(str); + *page = muctx_content->page; + + /* This allocation ensures that Marshal will release in the managed code */ + retstr = (char*)::CoTaskMemAlloc(*len + 1); + strcpy(retstr, str); + return retstr; +} + +SYMBOL_DECLSPEC char * __stdcall mGetText(void *ctx, int pagenum, int type) +{ + char* retstr = NULL; + muctx *mu_ctx = static_cast<muctx*>(ctx); + std::string text_cstr; + int len; + + text_cstr = mu_ctx->GetText(pagenum, type); + if (text_cstr.size() > 0) + { + auto text = text_cstr.c_str(); + len = strlen(text); + retstr = (char*)::CoTaskMemAlloc(len + 1); + strcpy(retstr, text); + } + return retstr; +} + +SYMBOL_DECLSPEC int __stdcall mTextSearchPage(void *ctx, int page_num, PCWSTR needle) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + + sh_vector_text text_smart_ptr_vec(new std::vector<sh_text>()); + gTextResults = text_smart_ptr_vec; + + return mu_ctx->GetTextSearch(page_num, String_to_char(needle), gTextResults); +} + +SYMBOL_DECLSPEC bool __stdcall mGetTextSearchItem(int k, double *top_x, double + *top_y, double *height, double *width) +{ + char* retstr = NULL; + + if (k < 0 || k > gTextResults->size()) + return false; + sh_text muctx_search = gTextResults->at(k); + *top_x = muctx_search->upper_left.X; + *top_y = muctx_search->upper_left.Y; + *width = muctx_search->lower_right.X - muctx_search->upper_left.X; + *height = muctx_search->lower_right.Y - muctx_search->upper_left.Y; + return true; +} + +SYMBOL_DECLSPEC void __stdcall mReleaseTextSearch() +{ + if (gTextResults != nullptr) + gTextResults.reset(); +} + +SYMBOL_DECLSPEC int __stdcall mGetLinksPage(void *ctx, int page_num) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + + sh_vector_link link_smart_ptr_vec(new std::vector<sh_link>()); + gLinkResults = link_smart_ptr_vec; + + return mu_ctx->GetLinks(page_num, gLinkResults); +} + +SYMBOL_DECLSPEC void __stdcall mSetAA(void *ctx, int level) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + mu_ctx->SetAA(level); +} + +SYMBOL_DECLSPEC char* __stdcall mGetVers() +{ + int len = strlen(FZ_VERSION); + char* retstr = NULL; + + if (len > 0) + { + /* This allocation ensures that Marshal will release in the managed code */ + retstr = (char*)::CoTaskMemAlloc(len + 1); + strcpy(retstr, FZ_VERSION); + } + return retstr; +} + +SYMBOL_DECLSPEC char* __stdcall mGetLinkItem(int k, double *top_x, double + *top_y, double *height, double *width, int *topage, int *type) +{ + char* retstr = NULL; + + if (k < 0 || k > gLinkResults->size()) + return false; + sh_link muctx_link = gLinkResults->at(k); + *top_x = muctx_link->upper_left.X; + *top_y = muctx_link->upper_left.Y; + *width = muctx_link->lower_right.X - muctx_link->upper_left.X; + *height = muctx_link->lower_right.Y - muctx_link->upper_left.Y; + *topage = muctx_link->page_num; + *type = (int) muctx_link->type; + + if (muctx_link->type == LINK_URI) + { + const char* str = muctx_link->uri.get(); + int len = strlen(str); + if (len > 0) + { + /* This allocation ensures that Marshal will release in the managed code */ + retstr = (char*)::CoTaskMemAlloc(len + 1); + strcpy(retstr, str); + } + muctx_link->uri.release(); + } + return retstr; +} + +SYMBOL_DECLSPEC void __stdcall mReleaseLink() +{ + if (gTextResults != nullptr) + gTextResults.reset(); +} + +SYMBOL_DECLSPEC void* __stdcall mCreateDisplayList(void *ctx, int page_num, + int *page_width, int *page_height) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + return (void*)mu_ctx->CreateDisplayList(page_num, page_width, page_height); +} + +SYMBOL_DECLSPEC void* __stdcall mCreateDisplayListAnnot(void *ctx, int page_num) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + return (void*)mu_ctx->CreateAnnotationList(page_num); +} + +SYMBOL_DECLSPEC void* __stdcall mCreateDisplayListText(void *ctx, int page_num, + int *page_width, int *page_height, void **text_out, int *length) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + fz_text_page *text; + void *text_ptr = (void*)mu_ctx->CreateDisplayListText(page_num, page_width, page_height, + &text, length); + *text_out = (void*) text; + return text_ptr; +} + +SYMBOL_DECLSPEC int __stdcall mRenderPageMT(void *ctx, void *dlist, + void *annot_dlist, int page_width, int page_height, byte *bmp_data, int bmp_width, + int bmp_height, double scale, bool flipy) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + + return (int) mu_ctx->RenderPageMT(dlist, annot_dlist, page_width, page_height, + &(bmp_data[0]), bmp_width, bmp_height, + scale, flipy, false, { 0, 0 }, { 0, 0 }); +} + +SYMBOL_DECLSPEC void __stdcall mReleaseText(void *ctx, void *page) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + mu_ctx->ReleaseText(page); +} + +/* Information about a block of text */ +SYMBOL_DECLSPEC int __stdcall mGetTextBlock(void *page, int block_num, + double *top_x, double *top_y, double *height, double *width) +{ + fz_text_page *text = (fz_text_page*) page; + fz_text_block *block; + + if (text->blocks[block_num].type != FZ_PAGE_BLOCK_TEXT) + return 0; + block = text->blocks[block_num].u.text; + + *top_x = block->bbox.x0; + *top_y = block->bbox.y0; + *height = block->bbox.y1 - *top_y; + *width = block->bbox.x1 - *top_x; + return block->len; +} + +/* Information about a line of text */ +SYMBOL_DECLSPEC int __stdcall mGetTextLine(void *page, int block_num, int line_num, + double *top_x, double *top_y, double *height, double *width) +{ + int len = 0; + fz_text_block *block; + fz_text_line line; + fz_text_span *span; + fz_text_page *text = (fz_text_page*)page; + + block = text->blocks[block_num].u.text; + line = block->lines[line_num]; + + *top_x = line.bbox.x0; + *top_y = line.bbox.y0; + *height = line.bbox.y1 - *top_y; + *width = line.bbox.x1 - *top_x; + + for (span = line.first_span; span; span = span->next) + { + len += span->len; + } + return len; +} + +/* Information down to the character level */ +SYMBOL_DECLSPEC int __stdcall mGetTextCharacter(void *page, int block_num, int line_num, + int item_num, double *top_x, double *top_y, double *height, double *width) +{ + fz_text_block *block; + fz_text_line line; + fz_text_span *span; + fz_text_page *text = (fz_text_page*)page; + fz_char_and_box cab; + int index = item_num; + + block = text->blocks[block_num].u.text; + line = block->lines[line_num]; + + span = line.first_span; + while (index >= span->len) + { + index = index - span->len; /* Reset to start of next span */ + span = span->next; /* Get next span */ + } + + cab.c = span->text[index].c; + fz_text_char_bbox(&(cab.bbox), span, index); + *top_x = cab.bbox.x0; + *top_y = cab.bbox.y0; + *height = cab.bbox.y1 - *top_y; + *width = cab.bbox.x1 - *top_x; + + return cab.c; +} + +/* pdf clean methods */ +SYMBOL_DECLSPEC int __stdcall mExtractPages(PCWSTR infile, PCWSTR outfile, + PCWSTR password, bool has_password, bool linearize, int num_pages, void *pages) +{ + int argc = 3 + ((has_password) ? (2) : (0)) + ((linearize) ? (1) : (0)) + ((num_pages > 0) ? (1) : (0)); + char **argv; + int size_pages; + char *infilechar = String_to_char(infile); + char *outfilechar = String_to_char(outfile); + char *passchar; + int *pagenum = (int*) pages; + char *pagenums; + char* num; + int num_size; + int result; + int pos = 1; + + argv = new char*[argc]; + + if (has_password) + { + passchar = String_to_char(password); + argv[pos++] = "-p"; + argv[pos++] = passchar; + } + if (linearize) + { + argv[pos++] = "-l"; + } + + argv[pos++] = infilechar; + argv[pos++] = outfilechar; + + if (num_pages > 0) + { + /* Get last page, for number length and number of pages */ + int last = pagenum[num_pages - 1]; + if (last == 0) + { + num_size = 1; + size_pages = num_size; + } + else + { + num_size = floor(log10(last)) + 1; + size_pages = (num_size + 1) * num_pages; + } + + /* Create the list of page numbers */ + pagenums = new char[size_pages + 1]; + pagenums[0] = '\0'; + num = new char[num_size + 2]; + for (int kk = 0; kk < num_pages; kk++) + { + if (kk < num_pages - 1) + sprintf(num, "%d,", pagenum[kk]); + else + sprintf(num, "%d", pagenum[kk]); + strcat(pagenums, num); + } + argv[pos++] = pagenums; + } + + fz_optind = 1; + result = pdfclean_main(argc, argv); + + delete(num); + delete(infilechar); + delete(outfilechar); + if (has_password) + delete(passchar); + if (num_pages > 0) + delete(pagenums); + delete(argv); + return result; +} + +/* output methods */ +SYMBOL_DECLSPEC int __stdcall mSavePage(void *ctx, PCWSTR outfile, int page_num, + int resolution, int type, bool append) +{ + muctx *mu_ctx = static_cast<muctx*>(ctx); + char *outfilechar = String_to_char(outfile); + status_t result = mu_ctx->SavePage(outfilechar, page_num, resolution, type, + append); + delete(outfilechar); + if (result == S_ISOK) + return 0; + else + return -1; +} diff --git a/platform/windows/mupdfnet/mupdfnet.h b/platform/windows/mupdfnet/mupdfnet.h new file mode 100644 index 00000000..99d23062 --- /dev/null +++ b/platform/windows/mupdfnet/mupdfnet.h @@ -0,0 +1,77 @@ + +#pragma once + +#include <windows.h> +#include<string> +using namespace std; + +#ifdef __cplusplus +#define EXTERNC extern "C" +#else +#define EXTERNC +#endif + +typedef struct sharp_content_s +{ + int page; + PCWSTR string_margin; +} sharp_content_t; + +#define SYMBOL_DECLSPEC __declspec(dllexport) + +EXTERN_C SYMBOL_DECLSPEC void* __stdcall mInitialize(); +EXTERN_C SYMBOL_DECLSPEC void __stdcall mCleanUp(void *ctx); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetPageCount(void *ctx); +EXTERN_C SYMBOL_DECLSPEC bool __stdcall mRequiresPassword(void *ctx); +EXTERN_C SYMBOL_DECLSPEC bool __stdcall mApplyPassword(void *ctx, PCWSTR password); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mOpenDocument(void *ctx, PCWSTR filename); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mMeasurePage(void *ctx, int page_num, double *width, double *height); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mRenderPage(void *ctx, int page_num, + byte *bmp_data, int bmp_width, + int bmp_height, double scale, bool flipy); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetContents(void *ctx); +EXTERN_C SYMBOL_DECLSPEC char* __stdcall mGetContentsItem(int k, int *len, int *page); +EXTERN_C SYMBOL_DECLSPEC void __stdcall mReleaseContents(); +EXTERN_C SYMBOL_DECLSPEC int __stdcall mTextSearchPage(void *ctx, int page_num, PCWSTR needle); +EXTERN_C SYMBOL_DECLSPEC bool __stdcall mGetTextSearchItem(int k, double *top_x, double + *top_y, double *height, double *width); +EXTERN_C SYMBOL_DECLSPEC void __stdcall mReleaseTextSearch(); +EXTERN_C SYMBOL_DECLSPEC char* __stdcall mGetVers(); +EXTERN_C SYMBOL_DECLSPEC char * __stdcall mGetText(void *ctx, int pagenum, int type); + +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetLinksPage(void *ctx, int page_num); +EXTERN_C SYMBOL_DECLSPEC char* __stdcall mGetLinkItem(int k, double *top_x, double + *top_y, double *height, double *width, int *topage, int *type); +EXTERN_C SYMBOL_DECLSPEC void __stdcall mReleaseLink(); + +EXTERN_C SYMBOL_DECLSPEC void* __stdcall mCreateDisplayList(void *ctx, int page_num, + int *page_width, int *page_height); +EXTERN_C SYMBOL_DECLSPEC void* __stdcall mCreateDisplayListText(void *ctx, int page_num, + int *page_width, int *page_height, void **textptr, int *length); +EXTERN_C SYMBOL_DECLSPEC void* __stdcall mCreateDisplayListAnnot(void *ctx, + int page_num); + +EXTERN_C SYMBOL_DECLSPEC int __stdcall mRenderPageMT(void *ctx, void *dlist, + void *annot_dlist, int page_width, int page_height, byte *bmp_data, int bmp_width, + int bmp_height, double scale, bool flipy); + +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetTextBlock(void *text, int block_num, + double *top_x, double *top_y, double *height, double *width); + +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetTextLine(void *text, int block_num, + int line_num, double *top_x, double *top_y, double *height, double *width); + +EXTERN_C SYMBOL_DECLSPEC int __stdcall mGetTextCharacter(void *text, int block_num, + int line_num, int item_num, double *top_x, double *top_y, double *height, + double *width); + +EXTERN_C SYMBOL_DECLSPEC void __stdcall mReleaseText(void *ctx, void *page); + +EXTERN_C SYMBOL_DECLSPEC void __stdcall mSetAA(void *ctx, int level); + +/* pdfclean methods */ +EXTERN_C SYMBOL_DECLSPEC int __stdcall mExtractPages(PCWSTR infile, PCWSTR outfile, + PCWSTR password, bool has_password, bool linearize, int num_pages, void *pages); +/* output */ +EXTERN_C SYMBOL_DECLSPEC int __stdcall mSavePage(void *ctx, PCWSTR outfile, int page_num, + int resolution, int type, bool append); diff --git a/platform/windows/mupdfnet/mupdfnet.vcxproj b/platform/windows/mupdfnet/mupdfnet.vcxproj new file mode 100644 index 00000000..2db67449 --- /dev/null +++ b/platform/windows/mupdfnet/mupdfnet.vcxproj @@ -0,0 +1,221 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <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|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{4468C2E0-6C90-4FA5-8A48-0A9629776167}</ProjectGuid> + <RootNamespace>CppDynamicLinkLibrary</RootNamespace> + <Keyword>Win32Proj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <PlatformToolset>v120</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </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)'=='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)'=='Release|x64'" 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|x64'" 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>10.0.40219.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\gsview\bin\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\gsview\bin\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\gsview\bin\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)\gsview\bin\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental> + <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> + <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" /> + <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> + <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" /> + <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> + <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> + <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet> + <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> + <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <TargetName>$(ProjectName)64</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <TargetName>$(ProjectName)64</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <TargetName>$(ProjectName)32</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <TargetName>$(ProjectName)32</TargetName> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPDYNAMICLINKLIBRARY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <AdditionalIncludeDirectories>../../../include/;../mupdfwinrt;</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile> + </ModuleDefinitionFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Windows</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + <AdditionalDependencies>../$(Platform)/$(Configuration)/libmupdf.lib;../$(Platform)/$(Configuration)/libthirdparty.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Midl> + <TargetEnvironment>X64</TargetEnvironment> + </Midl> + <ClCompile> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPDYNAMICLINKLIBRARY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <AdditionalIncludeDirectories>../../../include/;../mupdfwinrt;</AdditionalIncludeDirectories> + <CompileAsManaged>false</CompileAsManaged> + </ClCompile> + <Link> + <ModuleDefinitionFile> + </ModuleDefinitionFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Windows</SubSystem> + <TargetMachine>MachineX64</TargetMachine> + <AdditionalDependencies>../$(Platform)/$(Configuration)/libmupdf.lib;../$(Platform)/$(Configuration)/libthirdparty.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <Optimization>MaxSpeed</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPDYNAMICLINKLIBRARY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <AdditionalIncludeDirectories>../../../include/;../mupdfwinrt;</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile> + </ModuleDefinitionFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Windows</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <TargetMachine>MachineX86</TargetMachine> + <AdditionalDependencies>../$(Platform)/$(Configuration)/libmupdf.lib;../$(Platform)/$(Configuration)/libthirdparty.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Midl> + <TargetEnvironment>X64</TargetEnvironment> + </Midl> + <ClCompile> + <Optimization>MaxSpeed</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPDYNAMICLINKLIBRARY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <AdditionalIncludeDirectories>../../../include/;../mupdfwinrt;</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile> + </ModuleDefinitionFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Windows</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <TargetMachine>MachineX64</TargetMachine> + <AdditionalDependencies>../$(Platform)/$(Configuration)/libmupdf.lib;../$(Platform)/$(Configuration)/libthirdparty.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="Documentation\ReadMe.htm"> + <DeploymentContent>true</DeploymentContent> + </None> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\mupdfwinrt\Cache.cpp" /> + <ClCompile Include="..\mupdfwinrt\muctx.cpp" /> + <ClCompile Include="mupdfnet.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\mupdfwinrt\Cache.h" /> + <ClInclude Include="..\mupdfwinrt\muctx.h" /> + <ClInclude Include="mupdfnet.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/platform/windows/mupdfnet/mupdfnet.vcxproj.filters b/platform/windows/mupdfnet/mupdfnet.vcxproj.filters new file mode 100644 index 00000000..e06c17d7 --- /dev/null +++ b/platform/windows/mupdfnet/mupdfnet.vcxproj.filters @@ -0,0 +1,42 @@ +<?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="Resource Files"> + <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> + </ItemGroup> + <ItemGroup> + <None Include="Documentation\ReadMe.htm" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\mupdfwinrt\Cache.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\mupdfwinrt\muctx.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="mupdfnet.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\mupdfwinrt\Cache.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\mupdfwinrt\muctx.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="mupdfnet.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file |