/* * Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SYNHIGHLIGHTCOMPOSITION_H #define SYNHIGHLIGHTCOMPOSITION_H #include "base.h" #include #include class SynSchema; using PSynSchema = std::shared_ptr; using OnCheckMarker = std::function& MarkerText , int Line)>; class SynScheme : public QObject { Q_OBJECT public: explicit SynScheme(QObject* parent=nullptr); QString endExpr() const; void setEndExpr(const QString &endExpr); QString getStartExpr() const; void setStartExpr(const QString &value); PSynHighlighter getHighlighter() const; void setHighlighter(const PSynHighlighter &highlighter); PSynHighlighterAttribute getMarkerAttribute() const; QString getSchemeName() const; void setSchemeName(const QString &schemeName); int getCaseSensitive() const; void setCaseSensitive(int caseSensitive); private: QString mEndExpr; QString StartExpr; PSynHighlighter mHighlighter; PSynHighlighterAttribute mMarkerAttribute; QString mSchemeName; int mCaseSensitive; OnCheckMarker mOnCheckStartMarker; OnCheckMarker mOnCheckEndMarker; QString ConvertExpression(const QString& Value); private slots: void MarkerAttriChanged(); }; class SynHighlightComposition : public SynHighlighter { public: explicit SynHighlightComposition(); // SynHighligterBase interface public: SynHighlighterClass getClass() const override; QString getName() const override; }; #endif // SYNHIGHLIGHTCOMPOSITION_H