File indexing completed on 2024-05-12 16:06:38
0001 /* 0002 SPDX-FileCopyrightText: 2006 Luigi Toscano <luigi.toscano@tiscali.it> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef _DVI_GENERATOR_H_ 0008 #define _DVI_GENERATOR_H_ 0009 0010 #include <core/generator.h> 0011 0012 #include <QBitArray> 0013 0014 class dviRenderer; 0015 class dviPageInfo; 0016 class Anchor; 0017 0018 namespace Okular 0019 { 0020 class DocumentViewport; 0021 class ObjectRect; 0022 } 0023 0024 class DviGenerator : public Okular::Generator 0025 { 0026 Q_OBJECT 0027 Q_INTERFACES(Okular::Generator) 0028 public: 0029 DviGenerator(QObject *parent, const QVariantList &args); 0030 bool loadDocument(const QString &fileName, QVector<Okular::Page *> &pagesVector) override; 0031 0032 // document information 0033 Okular::DocumentInfo generateDocumentInfo(const QSet<Okular::DocumentInfo::Key> &keys) const override; 0034 0035 // table of contents 0036 const Okular::DocumentSynopsis *generateDocumentSynopsis() override; 0037 0038 // list of fonts 0039 Okular::FontInfo::List fontsForPage(int page) override; 0040 0041 Okular::Document::PrintError print(QPrinter &printer) override; 0042 0043 QVariant metaData(const QString &key, const QVariant &option) const override; 0044 0045 protected: 0046 bool doCloseDocument() override; 0047 QImage image(Okular::PixmapRequest *request) override; 0048 Okular::TextPage *textPage(Okular::TextRequest *request) override; 0049 0050 private: 0051 double m_resolution; 0052 bool m_fontExtracted; 0053 0054 Okular::DocumentSynopsis *m_docSynopsis; 0055 0056 dviRenderer *m_dviRenderer; 0057 QBitArray m_linkGenerated; 0058 0059 void loadPages(QVector<Okular::Page *> &pagesVector); 0060 Okular::TextPage *extractTextFromPage(const dviPageInfo &pageInfo); 0061 void fillViewportFromAnchor(Okular::DocumentViewport &vp, const Anchor anch, int pW, int pH) const; 0062 void fillViewportFromAnchor(Okular::DocumentViewport &vp, const Anchor anch, const Okular::Page *page) const; 0063 QList<Okular::ObjectRect *> generateDviLinks(const dviPageInfo *pageInfo); 0064 }; 0065 0066 #endif