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

0001 /*
0002     SPDX-FileCopyrightText: 2007 Albert Astals Cid <aacid@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef _OKULAR_GENERATOR_GHOSTVIEW_H_
0008 #define _OKULAR_GENERATOR_GHOSTVIEW_H_
0009 
0010 #include <core/generator.h>
0011 #include <interfaces/configinterface.h>
0012 
0013 #include <libspectre/spectre.h>
0014 
0015 class GSGenerator : public Okular::Generator, public Okular::ConfigInterface
0016 {
0017     Q_OBJECT
0018     Q_INTERFACES(Okular::Generator)
0019     Q_INTERFACES(Okular::ConfigInterface)
0020 
0021 public:
0022     /** virtual methods to reimplement **/
0023     // load a document and fill up the pagesVector
0024     bool loadDocument(const QString &fileName, QVector<Okular::Page *> &pagesVector) override;
0025 
0026     // Document description and Table of contents
0027     Okular::DocumentInfo generateDocumentInfo(const QSet<Okular::DocumentInfo::Key> &keys) const override;
0028     const Okular::DocumentSynopsis *generateDocumentSynopsis() override
0029     {
0030         return nullptr;
0031     }
0032     const Okular::DocumentFonts *generateDocumentFonts()
0033     {
0034         return nullptr;
0035     }
0036 
0037     // page contents generation
0038     bool canGeneratePixmap() const override;
0039     void generatePixmap(Okular::PixmapRequest *request) override;
0040 
0041     QVariant metaData(const QString &key, const QVariant &option) const override;
0042 
0043     // print document using already configured kprinter
0044     Okular::Document::PrintError print(QPrinter & /*printer*/) override;
0045     QString fileName() const;
0046 
0047     bool reparseConfig() override;
0048     void addPages(KConfigDialog *dlg) override;
0049 
0050     /** constructor **/
0051     GSGenerator(QObject *parent, const QVariantList &args);
0052     ~GSGenerator() override;
0053 
0054 public Q_SLOTS:
0055     void slotImageGenerated(QImage *img, Okular::PixmapRequest *request);
0056 
0057 protected:
0058     bool doCloseDocument() override;
0059 
0060 private:
0061     bool loadPages(QVector<Okular::Page *> &pagesVector);
0062     Okular::Rotation orientation(SpectreOrientation orientation) const;
0063 
0064     // backendish stuff
0065     SpectreDocument *m_internalDocument;
0066 
0067     Okular::PixmapRequest *m_request;
0068 
0069     bool cache_AAtext;
0070     bool cache_AAgfx;
0071 };
0072 
0073 #endif