File indexing completed on 2024-05-12 16:06:34

0001 /*
0002     SPDX-FileCopyrightText: 2006 Pino Toscano <toscano.pino@tiscali.it>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef _GENERATOR_DJVU_H_
0008 #define _GENERATOR_DJVU_H_
0009 
0010 #include <core/generator.h>
0011 
0012 #include <QVector>
0013 
0014 #include "kdjvu.h"
0015 
0016 namespace Okular
0017 {
0018 class Annotation;
0019 class ObjectRect;
0020 }
0021 
0022 class DjVuGenerator : public Okular::Generator
0023 {
0024     Q_OBJECT
0025     Q_INTERFACES(Okular::Generator)
0026 public:
0027     DjVuGenerator(QObject *parent, const QVariantList &args);
0028     ~DjVuGenerator() override;
0029     bool loadDocument(const QString &fileName, QVector<Okular::Page *> &pagesVector) override;
0030 
0031     // document information
0032     Okular::DocumentInfo generateDocumentInfo(const QSet<Okular::DocumentInfo::Key> &keys) const override;
0033     const Okular::DocumentSynopsis *generateDocumentSynopsis() override;
0034 
0035     // printing
0036     Okular::Document::PrintError print(QPrinter &printer) override;
0037 
0038     QVariant metaData(const QString &key, const QVariant &option) const override;
0039 
0040 protected:
0041     bool doCloseDocument() override;
0042     // pixmap generation
0043     QImage image(Okular::PixmapRequest *request) override;
0044     Okular::TextPage *textPage(Okular::TextRequest *request) override;
0045 
0046 private:
0047     void loadPages(QVector<Okular::Page *> &pagesVector, int rotation);
0048     Okular::ObjectRect *convertKDjVuLink(int page, KDjVu::Link *link) const;
0049     Okular::Annotation *convertKDjVuAnnotation(int w, int h, KDjVu::Annotation *ann) const;
0050 
0051     KDjVu *m_djvu;
0052 
0053     Okular::DocumentSynopsis *m_docSyn;
0054 };
0055 
0056 #endif