File indexing completed on 2024-05-12 16:06:33
0001 /* 0002 SPDX-FileCopyrightText: 2005 Piotr SzymaĆski <niedakh@gmail.com> 0003 SPDX-FileCopyrightText: 2008 Albert Astals Cid <aacid@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef _OKULAR_GENERATOR_CHM_H_ 0009 #define _OKULAR_GENERATOR_CHM_H_ 0010 0011 #include <core/document.h> 0012 #include <core/generator.h> 0013 0014 #include "lib/ebook_chm.h" 0015 0016 #include <QBitArray> 0017 0018 class KHTMLPart; 0019 0020 namespace Okular 0021 { 0022 class TextPage; 0023 } 0024 0025 namespace DOM 0026 { 0027 class Node; 0028 } 0029 0030 class CHMGenerator : public Okular::Generator 0031 { 0032 Q_OBJECT 0033 Q_INTERFACES(Okular::Generator) 0034 public: 0035 CHMGenerator(QObject *parent, const QVariantList &args); 0036 ~CHMGenerator() override; 0037 bool loadDocument(const QString &fileName, QVector<Okular::Page *> &pagesVector) override; 0038 0039 Okular::DocumentInfo generateDocumentInfo(const QSet<Okular::DocumentInfo::Key> &keys) const override; 0040 const Okular::DocumentSynopsis *generateDocumentSynopsis() override; 0041 0042 bool canGeneratePixmap() const override; 0043 void generatePixmap(Okular::PixmapRequest *request) override; 0044 0045 QVariant metaData(const QString &key, const QVariant &option) const override; 0046 0047 public Q_SLOTS: 0048 void slotCompleted(); 0049 0050 protected: 0051 bool doCloseDocument() override; 0052 Okular::TextPage *textPage(Okular::TextRequest *request) override; 0053 0054 private: 0055 void additionalRequestData(); 0056 void recursiveExploreNodes(DOM::Node node, Okular::TextPage *tp); 0057 void preparePageForSyncOperation(const QString &url); 0058 QMap<QString, int> m_urlPage; 0059 QVector<QString> m_pageUrl; 0060 Okular::DocumentSynopsis m_docSyn; 0061 EBook *m_file; 0062 KHTMLPart *m_syncGen; 0063 QString m_fileName; 0064 QString m_chmUrl; 0065 Okular::PixmapRequest *m_request; 0066 QBitArray m_textpageAddedList; 0067 QBitArray m_rectsGenerated; 0068 }; 0069 0070 #endif