mirror of
https://github.com/fralx/LimeReport.git
synced 2024-12-24 08:34:38 +03:00
51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#ifndef LRSCRIPTHIGHLIGHTER_H
|
|
#define LRSCRIPTHIGHLIGHTER_H
|
|
|
|
#include <QSyntaxHighlighter>
|
|
|
|
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<ParenthesisInfo *> parentheses();
|
|
void insert(ParenthesisInfo *info);
|
|
|
|
private:
|
|
QVector<ParenthesisInfo *> 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
|