aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ContractionState.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ContractionState.h')
-rw-r--r--src/ContractionState.h74
1 files changed, 25 insertions, 49 deletions
diff --git a/src/ContractionState.h b/src/ContractionState.h
index eb141ea33..a951e0a0c 100644
--- a/src/ContractionState.h
+++ b/src/ContractionState.h
@@ -10,67 +10,43 @@
namespace Scintilla {
-template<class T>
-class SparseVector;
-
/**
- */
-class ContractionState {
- // These contain 1 element for every document line.
- std::unique_ptr<RunStyles<Sci::Line, char>> visible;
- std::unique_ptr<RunStyles<Sci::Line, char>> expanded;
- std::unique_ptr<RunStyles<Sci::Line, int>> heights;
- std::unique_ptr<SparseVector<UniqueString>> foldDisplayTexts;
- std::unique_ptr<Partitioning<Sci::Line>> displayLines;
- Sci::Line linesInDocument;
-
- void EnsureData();
-
- bool OneToOne() const {
- // True when each document line is exactly one display line so need for
- // complex data structures.
- return visible == nullptr;
- }
-
+*/
+class IContractionState {
public:
- ContractionState();
- // Deleted so ContractionState objects can not be copied.
- ContractionState(const ContractionState &) = delete;
- void operator=(const ContractionState &) = delete;
- virtual ~ContractionState();
+ virtual ~IContractionState() {};
- void Clear();
+ virtual void Clear()=0;
- Sci::Line LinesInDoc() const;
- Sci::Line LinesDisplayed() const;
- Sci::Line DisplayFromDoc(Sci::Line lineDoc) const;
- Sci::Line DisplayLastFromDoc(Sci::Line lineDoc) const;
- Sci::Line DocFromDisplay(Sci::Line lineDisplay) const;
+ virtual Sci::Line LinesInDoc() const=0;
+ virtual Sci::Line LinesDisplayed() const=0;
+ virtual Sci::Line DisplayFromDoc(Sci::Line lineDoc) const=0;
+ virtual Sci::Line DisplayLastFromDoc(Sci::Line lineDoc) const=0;
+ virtual Sci::Line DocFromDisplay(Sci::Line lineDisplay) const=0;
- void InsertLine(Sci::Line lineDoc);
- void InsertLines(Sci::Line lineDoc, Sci::Line lineCount);
- void DeleteLine(Sci::Line lineDoc);
- void DeleteLines(Sci::Line lineDoc, Sci::Line lineCount);
+ virtual void InsertLines(Sci::Line lineDoc, Sci::Line lineCount)=0;
+ virtual void DeleteLines(Sci::Line lineDoc, Sci::Line lineCount)=0;
- bool GetVisible(Sci::Line lineDoc) const;
- bool SetVisible(Sci::Line lineDocStart, Sci::Line lineDocEnd, bool isVisible);
- bool HiddenLines() const;
+ virtual bool GetVisible(Sci::Line lineDoc) const=0;
+ virtual bool SetVisible(Sci::Line lineDocStart, Sci::Line lineDocEnd, bool isVisible)=0;
+ virtual bool HiddenLines() const=0;
- const char *GetFoldDisplayText(Sci::Line lineDoc) const;
- bool SetFoldDisplayText(Sci::Line lineDoc, const char *text);
+ virtual const char *GetFoldDisplayText(Sci::Line lineDoc) const=0;
+ virtual bool GetFoldDisplayTextShown(Sci::Line lineDoc) const=0;
+ virtual bool SetFoldDisplayText(Sci::Line lineDoc, const char *text)=0;
- bool GetExpanded(Sci::Line lineDoc) const;
- bool SetExpanded(Sci::Line lineDoc, bool isExpanded);
- bool GetFoldDisplayTextShown(Sci::Line lineDoc) const;
- Sci::Line ContractedNext(Sci::Line lineDocStart) const;
+ virtual bool GetExpanded(Sci::Line lineDoc) const=0;
+ virtual bool SetExpanded(Sci::Line lineDoc, bool isExpanded)=0;
+ virtual Sci::Line ContractedNext(Sci::Line lineDocStart) const=0;
- int GetHeight(Sci::Line lineDoc) const;
- bool SetHeight(Sci::Line lineDoc, int height);
+ virtual int GetHeight(Sci::Line lineDoc) const=0;
+ virtual bool SetHeight(Sci::Line lineDoc, int height)=0;
- void ShowAll();
- void Check() const;
+ virtual void ShowAll()=0;
};
+std::unique_ptr<IContractionState> ContractionStateCreate();
+
}
#endif