1 /** @file Decoration.h 2 ** Visual elements added over text. 3 **/ 4 // Copyright 1998-2007 by Neil Hodgson <[email protected]> 5 // The License.txt file describes the conditions under which this software may be distributed. 6 7 #ifndef DECORATION_H 8 #define DECORATION_H 9 10 namespace Scintilla { 11 12 class IDecoration { 13 public: 14 virtual ~IDecoration() {} 15 virtual bool Empty() const noexcept = 0; 16 virtual int Indicator() const noexcept = 0; 17 virtual Sci::Position Length() const noexcept = 0; 18 virtual int ValueAt(Sci::Position position) const noexcept = 0; 19 virtual Sci::Position StartRun(Sci::Position position) const noexcept = 0; 20 virtual Sci::Position EndRun(Sci::Position position) const noexcept = 0; 21 virtual void SetValueAt(Sci::Position position, int value) = 0; 22 virtual void InsertSpace(Sci::Position position, Sci::Position insertLength) = 0; 23 virtual Sci::Position Runs() const noexcept = 0; 24 }; 25 26 class IDecorationList { 27 public: 28 virtual ~IDecorationList() {} 29 30 virtual const std::vector<const IDecoration*> &View() const noexcept = 0; 31 32 virtual void SetCurrentIndicator(int indicator) = 0; 33 virtual int GetCurrentIndicator() const noexcept = 0; 34 35 virtual void SetCurrentValue(int value) = 0; 36 virtual int GetCurrentValue() const noexcept = 0; 37 38 // Returns with changed=true if some values may have changed 39 virtual FillResult<Sci::Position> FillRange(Sci::Position position, int value, Sci::Position fillLength) = 0; 40 virtual void InsertSpace(Sci::Position position, Sci::Position insertLength) = 0; 41 virtual void DeleteRange(Sci::Position position, Sci::Position deleteLength) = 0; 42 virtual void DeleteLexerDecorations() = 0; 43 44 virtual int AllOnFor(Sci::Position position) const noexcept = 0; 45 virtual int ValueAt(int indicator, Sci::Position position) noexcept = 0; 46 virtual Sci::Position Start(int indicator, Sci::Position position) noexcept = 0; 47 virtual Sci::Position End(int indicator, Sci::Position position) noexcept = 0; 48 49 virtual bool ClickNotified() const noexcept = 0; 50 virtual void SetClickNotified(bool notified) noexcept = 0; 51 }; 52 53 std::unique_ptr<IDecoration> DecorationCreate(bool largeDocument, int indicator); 54 55 std::unique_ptr<IDecorationList> DecorationListCreate(bool largeDocument); 56 57 } 58 59 #endif 60