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