summaryrefslogtreecommitdiff
path: root/platform/windows/mupdfwinrt/mudocument.h
blob: 9ab37ed77b90fe026749dd1e18b369bda288a09f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#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, float scale);
			int RenderPageBitmapSync(int page_num, int bmp_width, int bmp_height,
				float scale, bool use_dlist, bool flipy, bool tiling, Point top_left,
				Point bottom_right, Array<unsigned char>^* bit_map);
			Windows::Foundation::IAsyncOperationWithProgress<int, double>^
				SearchDocumentWithProgressAsync(String^ textToFind, int dir, 
												int start_page, int num_pages);
			String^ ComputeHTML(int page_num);
			int ComputeTextSearch(String^ text, int page_num);
			Links^ GetTextSearch(unsigned int k);
			int TextSearchCount(void);
			unsigned int ComputeContents(void);
			ContentItem^ GetContent(unsigned int k);
			unsigned int ComputeLinks(int page_num);
			Links^ GetLink(unsigned int k);
			bool RequiresPassword();
			bool ApplyPassword(String^ password);
	};
}