#ifndef LRSCRIPTHIGHLIGHTER_H #define LRSCRIPTHIGHLIGHTER_H #include namespace LimeReport{ enum ParenthesisType {LeftParenthesis, RightParenthesis, ParenthesisTypeCount}; #define PARENHEIS_COUNT 3 const QChar parenthesisCharacters[ParenthesisTypeCount][PARENHEIS_COUNT] = { {'(', '{', '['}, {')', '}', ']'} }; struct ParenthesisInfo { char character; int position; }; class TextBlockData : public QTextBlockUserData { public: TextBlockData(){} QVector parentheses(); void insert(ParenthesisInfo *info); private: QVector m_parentheses; }; class ScriptHighlighter : QSyntaxHighlighter{ public: ScriptHighlighter(QTextDocument* parent); protected: void highlightBlock(const QString& text); enum ScriptFormats { NumberFormat, StringFormat, KeywordFormat, CommentFormat, FormatsCount }; QTextCharFormat m_formats[FormatsCount]; bool isKeyWord(const QString& word); bool isDark(QColor color); void createParentheisisInfo(const char& literal, TextBlockData *data, const QString& text); }; } #endif // LRSCRIPTHIGHLIGHTER_H