From 7ea99e3a8951e265d1437a77dcfee069de0edf76 Mon Sep 17 00:00:00 2001 From: Michael Vrhel Date: Tue, 9 Sep 2014 16:31:31 -0700 Subject: Rename of winrt to windows due to presence on gsview in this folder. The contents of this folder will contain both winrt and gsview projects which are shared in a common visual studio 2013 solution. --- platform/windows/mupdf_cpp/DocumentPage.h | 231 ++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 platform/windows/mupdf_cpp/DocumentPage.h (limited to 'platform/windows/mupdf_cpp/DocumentPage.h') diff --git a/platform/windows/mupdf_cpp/DocumentPage.h b/platform/windows/mupdf_cpp/DocumentPage.h new file mode 100644 index 00000000..383d63d1 --- /dev/null +++ b/platform/windows/mupdf_cpp/DocumentPage.h @@ -0,0 +1,231 @@ +#pragma once + +#include "RectList.h" +#include + +/* 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, + PRINT_PREVIEW, + 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 page_zoom; + int native_height; + int native_width; + WriteableBitmap^ image; + Page_Content_t content; + IVector^ textbox; + IVector^ linkbox; + public: + DocumentPage(void); + + /* Note IVector needed for WinRT interface */ + property IVector^ TextBox + { + IVector^ get() + { + return (textbox); + } + + void set(IVector^ value) + { + textbox = value; + DocumentPage::OnPropertyChanged("TextBox"); + } + } + + property IVector^ LinkBox + { + IVector^ get() + { + return (linkbox); + } + + void set(IVector^ 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 int NativeHeight + { + int get() + { + return native_height; + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + native_height = value; + } + } + + property int NativeWidth + { + int get() + { + return native_width; + } + + void set(int value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + native_width = value; + } + } + + property double PageZoom + { + double get() + { + return page_zoom; + } + + void set(double value) + { + if (value < 0) + { + throw ref new Platform::InvalidArgumentException(); + } + page_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: + /// + /// Notifies listeners that a property value has changed. + /// + /// Name of the property used to notify listeners. + 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 + }; +} -- cgit v1.2.3