LeechCraft Monocle  0.6.70-13729-g7046a9d2a7
Modular document viewer for LeechCraft
idocument.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Boost Software License - Version 1.0 - August 17th, 2003
6  *
7  * Permission is hereby granted, free of charge, to any person or organization
8  * obtaining a copy of the software and accompanying documentation covered by
9  * this license (the "Software") to use, reproduce, display, distribute,
10  * execute, and transmit the Software, and to prepare derivative works of the
11  * Software, and to permit third-parties to whom the Software is furnished to
12  * do so, all subject to the following:
13  *
14  * The copyright notices in the Software and this entire statement, including
15  * the above license grant, this restriction and the following disclaimer,
16  * must be included in all copies of the Software, in whole or in part, and
17  * all derivative works of the Software, unless such copies or derivative
18  * works are solely in the form of machine-executable object code generated by
19  * a source language processor.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24  * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25  * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  **********************************************************************/
29 
30 #pragma once
31 
32 #include <memory>
33 #include <QImage>
34 #include <QMetaType>
35 #include <QStringList>
36 #include <QDateTime>
37 #include "ilink.h"
38 
39 class QUrl;
40 
41 template<typename>
42 class QFuture;
43 
44 namespace LC
45 {
46 namespace Monocle
47 {
52  struct DocumentInfo
53  {
56  QString Title_;
59  QString Subject_;
62  QString Description_;
65  QString Author_;
66 
69  QStringList Genres_;
72  QStringList Keywords_;
73 
76  QDateTime Date_;
77  };
78 
101  class IDocument
102  {
103  public:
106  virtual ~IDocument () {}
107 
117  virtual QObject* GetBackendPlugin () const = 0;
118 
126  virtual QObject* GetQObject () = 0;
127 
135  virtual bool IsValid () const = 0;
136 
141  virtual DocumentInfo GetDocumentInfo () const = 0;
142 
147  virtual int GetNumPages () const = 0;
148 
161  virtual QSize GetPageSize (int page) const = 0;
162 
180  virtual QFuture<QImage> RenderPage (int page, double xScale, double yScale) = 0;
181 
194  virtual QList<ILink_ptr> GetPageLinks (int page) = 0;
195 
204  virtual QUrl GetDocURL () const = 0;
205 
208  struct Position
209  {
212  int Page_;
213 
219  QPointF PagePosition_;
220  };
221 
238  virtual void navigateRequested (const QString& filename, const Position& position) = 0;
239 
248  virtual void printRequested (const QList<int>& pages) = 0;
249  };
250 
253  typedef std::shared_ptr<IDocument> IDocument_ptr;
254 }
255 }
256 
257 Q_DECLARE_INTERFACE (LC::Monocle::IDocument,
258  "org.LeechCraft.Monocle.IDocument/1.0")
259 Q_DECLARE_METATYPE (LC::Monocle::IDocument::Position)
virtual ~IDocument()
Virtual destructor.
Definition: idocument.h:106
virtual QSize GetPageSize(int page) const =0
Returns the size in pixels of the given page.
Document metadata.
Definition: idocument.h:52
virtual QObject * GetQObject()=0
Returns this object as a QObject.
virtual DocumentInfo GetDocumentInfo() const =0
Returns the document metadata.
virtual void navigateRequested(const QString &filename, const Position &position)=0
Emitted when navigation is requested.
Basic interface for documents.
Definition: idocument.h:101
virtual int GetNumPages() const =0
Returns the number of pages in this document.
QString Subject_
The subject line of this document.
Definition: idocument.h:59
Describes a position within a document.
Definition: idocument.h:208
QString Author_
The author of the document.
Definition: idocument.h:65
QString Title_
Document title.
Definition: idocument.h:56
virtual QObject * GetBackendPlugin() const =0
Returns the parent backend plugin.
std::shared_ptr< IDocument > IDocument_ptr
Shared pointer to a document.
Definition: idocument.h:253
int Page_
The index of the page in question.
Definition: idocument.h:212
virtual bool IsValid() const =0
Returns whether this document is valid.
QString Description_
Description of the document.
Definition: idocument.h:62
QPointF PagePosition_
The position within the page.
Definition: idocument.h:219
QStringList Keywords_
Keywords corresponding to this document.
Definition: idocument.h:72
QStringList Genres_
Genres of this document.
Definition: idocument.h:69
Definition: iannotation.h:41
virtual QUrl GetDocURL() const =0
Returns the URL of the document.
virtual QList< ILink_ptr > GetPageLinks(int page)=0
Returns the links found at the given page.
virtual QFuture< QImage > RenderPage(int page, double xScale, double yScale)=0
Renders the given page at the given scale.
QDateTime Date_
Date this document was created.
Definition: idocument.h:76
virtual void printRequested(const QList< int > &pages)=0
Emitted when printing is requested.