LeechCraft Monocle  0.6.70-6645-gcd10d7e
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 namespace LeechCraft
42 {
43 namespace Monocle
44 {
49  struct DocumentInfo
50  {
53  QString Title_;
56  QString Subject_;
59  QString Description_;
62  QString Author_;
63 
66  QStringList Genres_;
69  QStringList Keywords_;
70 
73  QDateTime Date_;
74  };
75 
98  class IDocument
99  {
100  public:
103  virtual ~IDocument () {}
104 
114  virtual QObject* GetBackendPlugin () const = 0;
115 
123  virtual QObject* GetQObject () = 0;
124 
132  virtual bool IsValid () const = 0;
133 
138  virtual DocumentInfo GetDocumentInfo () const = 0;
139 
144  virtual int GetNumPages () const = 0;
145 
158  virtual QSize GetPageSize (int page) const = 0;
159 
177  virtual QImage RenderPage (int page, double xScale, double yScale) = 0;
178 
191  virtual QList<ILink_ptr> GetPageLinks (int page) = 0;
192 
201  virtual QUrl GetDocURL () const = 0;
202  protected:
222  virtual void navigateRequested (const QString& filename, int pageNum, double x, double y) = 0;
223 
232  virtual void printRequested (const QList<int>& pages) = 0;
233  };
234 
237  typedef std::shared_ptr<IDocument> IDocument_ptr;
238 }
239 }
240 
242  "org.LeechCraft.Monocle.IDocument/1.0");
QStringList Genres_
Genres of this document.
Definition: idocument.h:66
Basic interface for documents.
Definition: idocument.h:98
std::shared_ptr< IDocument > IDocument_ptr
Shared pointer to a document.
Definition: idocument.h:237
virtual ~IDocument()
Virtual destructor.
Definition: idocument.h:103
QStringList Keywords_
Keywords corresponding to this document.
Definition: idocument.h:69
QString Author_
The author of the document.
Definition: idocument.h:62
QString Subject_
The subject line of this document.
Definition: idocument.h:56
QString Description_
Description of the document.
Definition: idocument.h:59
QString Title_
Document title.
Definition: idocument.h:53
QDateTime Date_
Date this document was created.
Definition: idocument.h:73
Q_DECLARE_INTERFACE(LeechCraft::Monocle::IDocument,"org.LeechCraft.Monocle.IDocument/1.0")