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

0001 /*
0002     SPDX-FileCopyrightText: 2017 Julian Wolff <wolff@julianwolff.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef MARKDOWN_CONVERTER_H
0008 #define MARKDOWN_CONVERTER_H
0009 
0010 #include <core/textdocumentgenerator.h>
0011 
0012 #include <QDir>
0013 #include <QTextFragment>
0014 
0015 class QTextBlock;
0016 class QTextFrame;
0017 
0018 namespace Markdown
0019 {
0020 class Converter : public Okular::TextDocumentConverter
0021 {
0022     Q_OBJECT
0023 
0024 public:
0025     Converter();
0026     ~Converter() override;
0027 
0028     QTextDocument *convert(const QString &fileName) override;
0029 
0030     void convertAgain();
0031 
0032     void setFancyPantsEnabled(bool b)
0033     {
0034         m_isFancyPantsEnabled = b;
0035     }
0036     bool isFancyPantsEnabled() const
0037     {
0038         return m_isFancyPantsEnabled;
0039     }
0040 
0041     QTextDocument *convertOpenFile();
0042 
0043 private:
0044     void extractLinks(QTextFrame *parent, QHash<QString, QTextFragment> &internalLinks, QHash<QString, QTextBlock> &documentAnchors);
0045     void extractLinks(const QTextBlock &parent, QHash<QString, QTextFragment> &internalLinks, QHash<QString, QTextBlock> &documentAnchors);
0046     void convertImages(QTextFrame *parent, const QDir &dir, QTextDocument *textDocument);
0047     void convertImages(const QTextBlock &parent, const QDir &dir, QTextDocument *textDocument);
0048     void setImageSize(QTextImageFormat &format, const qreal specifiedWidth, const qreal specifiedHeight, const qreal originalWidth, const qreal originalHeight);
0049 
0050     FILE *m_markdownFile;
0051     QDir m_fileDir;
0052     bool m_isFancyPantsEnabled;
0053 };
0054 
0055 }
0056 
0057 #endif