#pragma once #include #include // Inspired by https://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html class Highlighter : public QSyntaxHighlighter { Q_OBJECT public: explicit Highlighter(QTextDocument *parent = nullptr); protected: void highlightBlock(const QString &text) override; void addRule(const QString &pattern, const QBrush &brush); struct HighlightingRule { QRegularExpression pattern; QTextCharFormat format; }; QVector highlightingRules; QRegularExpression commentStartExpression; QRegularExpression commentEndExpression; QTextCharFormat multiLineCommentFormat; }; class LogHighlighter : public Highlighter { Q_OBJECT public: explicit LogHighlighter(QTextDocument* parent = nullptr); }; class AsmHighlighter : public Highlighter { Q_OBJECT public: explicit AsmHighlighter(QTextDocument *parent = nullptr); }; class GlslHighlighter : public Highlighter { Q_OBJECT public: explicit GlslHighlighter(QTextDocument *parent = nullptr); };