LeechCraft Monocle  %{LEECHCRAFT_VERSION}
Modular document viewer for LeechCraft
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
idocument.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2013 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 Author_;
60 
63  QStringList Genres_;
66  QStringList Keywords_;
67 
70  QDateTime Date_;
71  };
72 
95  class IDocument
96  {
97  public:
100  virtual ~IDocument () {}
101 
111  virtual QObject* GetBackendPlugin () const = 0;
112 
120  virtual QObject* GetQObject () = 0;
121 
129  virtual bool IsValid () const = 0;
130 
135  virtual DocumentInfo GetDocumentInfo () const = 0;
136 
141  virtual int GetNumPages () const = 0;
142 
155  virtual QSize GetPageSize (int page) const = 0;
156 
174  virtual QImage RenderPage (int page, double xScale, double yScale) = 0;
175 
185  virtual QList<ILink_ptr> GetPageLinks (int page) = 0;
186 
192  virtual QUrl GetDocURL () const = 0;
193  protected:
213  virtual void navigateRequested (const QString& filename, int pageNum, double x, double y) = 0;
214 
223  virtual void printRequested (const QList<int>& pages) = 0;
224  };
225 
228  typedef std::shared_ptr<IDocument> IDocument_ptr;
229 }
230 }
231 
233  "org.LeechCraft.Monocle.IDocument/1.0");
virtual QList< ILink_ptr > GetPageLinks(int page)=0
Returns the links found at the given page.
QStringList Genres_
Genres of this document.
Definition: idocument.h:63
virtual bool IsValid() const =0
Returns whether this document is valid.
Basic interface for documents.
Definition: idocument.h:95
virtual void printRequested(const QList< int > &pages)=0
Emitted when printing is requested.
std::shared_ptr< IDocument > IDocument_ptr
Shared pointer to a document.
Definition: idocument.h:228
virtual QImage RenderPage(int page, double xScale, double yScale)=0
Renders the given page at the given scale.
virtual ~IDocument()
Virtual destructor.
Definition: idocument.h:100
virtual QObject * GetBackendPlugin() const =0
Returns the parent backend plugin.
Q_DECLARE_INTERFACE(LeechCraft::Monocle::IAnnotation,"org.LeechCraft.Monocle.IAnnotation/1.0")
virtual QUrl GetDocURL() const =0
Returns the URL of the document.
QStringList Keywords_
Keywords corresponding to this document.
Definition: idocument.h:66
QString Author_
The author of the document.
Definition: idocument.h:59
QString Subject_
The subject line of this document.
Definition: idocument.h:56
virtual DocumentInfo GetDocumentInfo() const =0
Returns the document metadata.
virtual int GetNumPages() const =0
Returns the number of pages i this document.
virtual void navigateRequested(const QString &filename, int pageNum, double x, double y)=0
Emitted when navigation is requested.
virtual QObject * GetQObject()=0
Returns this object as a QObject.
QString Title_
Document title.
Definition: idocument.h:53
QDateTime Date_
Date this document was created.
Definition: idocument.h:70
virtual QSize GetPageSize(int page) const =0
Returns the size in pixels of the given page.