summaryrefslogtreecommitdiff
path: root/winrt/mupdfwinrt/mudocument.h
blob: 48b8c301aa6f41e8e7046dd5a8bffb34057cb70f (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
#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++, Visual Basic, 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::IAsyncAction^ OpenFile(StorageFile^ file);
            int GetNumPages(void);
            Point GetPageSize(int page_num);
            Windows::Foundation::IAsyncOperation<InMemoryRandomAccessStream^>^  
                RenderPage(int page_num, int width, int height);
            String^ ComputeHTML(int page_num);            
            int ComputeTextSearch(String^ text, int page_num);
            Links^ GetTextSearch(int k);
            int ComputeContents(void);
            ContentItem^ GetContent(int k);
            int ComputeLinks(int page_num);
            Links^ GetLink(int k);
    };
}