aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Decoration.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Decoration.h')
-rw-r--r--src/Decoration.h84
1 files changed, 33 insertions, 51 deletions
diff --git a/src/Decoration.h b/src/Decoration.h
index 86397fde1..76f00ec55 100644
--- a/src/Decoration.h
+++ b/src/Decoration.h
@@ -9,68 +9,50 @@
namespace Scintilla {
-class Decoration {
- int indicator;
+class IDecoration {
public:
- RunStyles<Sci::Position, int> rs;
-
- explicit Decoration(int indicator_);
- ~Decoration();
-
- bool Empty() const;
- int Indicator() const {
- return indicator;
- }
+ virtual ~IDecoration() {}
+ virtual bool Empty() const = 0;
+ virtual int Indicator() const = 0;
+ virtual Sci::Position Length() const = 0;
+ virtual int ValueAt(Sci::Position position) const = 0;
+ virtual Sci::Position StartRun(Sci::Position position) const = 0;
+ virtual Sci::Position EndRun(Sci::Position position) const = 0;
+ virtual void SetValueAt(Sci::Position position, int value) = 0;
+ virtual void InsertSpace(Sci::Position position, Sci::Position insertLength) = 0;
+ virtual Sci::Position Runs() const = 0;
};
-class DecorationList {
- int currentIndicator;
- int currentValue;
- Decoration *current; // Cached so FillRange doesn't have to search for each call.
- Sci::Position lengthDocument;
- // Ordered by indicator
- std::vector<std::unique_ptr<Decoration>> decorationList;
- std::vector<const Decoration*> decorationView; // Read-only view of decorationList
- bool clickNotified;
-
- Decoration *DecorationFromIndicator(int indicator);
- Decoration *Create(int indicator, Sci::Position length);
- void Delete(int indicator);
- void DeleteAnyEmpty();
- void SetView();
+class IDecorationList {
public:
+ virtual ~IDecorationList() {}
- DecorationList();
- ~DecorationList();
-
- const std::vector<const Decoration*> &View() const { return decorationView; }
+ virtual const std::vector<const IDecoration*> &View() const =0;
- void SetCurrentIndicator(int indicator);
- int GetCurrentIndicator() const { return currentIndicator; }
+ virtual void SetCurrentIndicator(int indicator) = 0;
+ virtual int GetCurrentIndicator() const = 0;
- void SetCurrentValue(int value);
- int GetCurrentValue() const { return currentValue; }
+ virtual void SetCurrentValue(int value) = 0;
+ virtual int GetCurrentValue() const = 0;
// Returns with changed=true if some values may have changed
- FillResult<Sci::Position> FillRange(Sci::Position position, int value, Sci::Position fillLength);
-
- void InsertSpace(Sci::Position position, Sci::Position insertLength);
- void DeleteRange(Sci::Position position, Sci::Position deleteLength);
-
- void DeleteLexerDecorations();
+ virtual FillResult<Sci::Position> FillRange(Sci::Position position, int value, Sci::Position fillLength) = 0;
+ virtual void InsertSpace(Sci::Position position, Sci::Position insertLength) = 0;
+ virtual void DeleteRange(Sci::Position position, Sci::Position deleteLength) = 0;
+ virtual void DeleteLexerDecorations() = 0;
+
+ virtual int AllOnFor(Sci::Position position) const = 0;
+ virtual int ValueAt(int indicator, Sci::Position position) = 0;
+ virtual Sci::Position Start(int indicator, Sci::Position position) = 0;
+ virtual Sci::Position End(int indicator, Sci::Position position) = 0;
+
+ virtual bool ClickNotified() const = 0;
+ virtual void SetClickNotified(bool notified) = 0;
+};
- int AllOnFor(Sci::Position position) const;
- int ValueAt(int indicator, Sci::Position position);
- Sci::Position Start(int indicator, Sci::Position position);
- Sci::Position End(int indicator, Sci::Position position);
+std::unique_ptr<IDecoration> DecorationCreate(int indicator);
- bool ClickNotified() const {
- return clickNotified;
- }
- void SetClickNotified(bool notified) {
- clickNotified = notified;
- }
-};
+std::unique_ptr<IDecorationList> DecorationListCreate();
}