summaryrefslogtreecommitdiffstats
path: root/scintilla/src/ContractionState.h
diff options
context:
space:
mode:
Diffstat (limited to 'scintilla/src/ContractionState.h')
-rw-r--r--scintilla/src/ContractionState.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/scintilla/src/ContractionState.h b/scintilla/src/ContractionState.h
new file mode 100644
index 0000000..20a9856
--- /dev/null
+++ b/scintilla/src/ContractionState.h
@@ -0,0 +1,66 @@
+// Scintilla source code edit control
+/** @file ContractionState.h
+ ** Manages visibility of lines for folding and wrapping.
+ **/
+// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#ifndef CONTRACTIONSTATE_H
+#define CONTRACTIONSTATE_H
+
+#ifdef SCI_NAMESPACE
+namespace Scintilla {
+#endif
+
+/**
+ */
+class ContractionState {
+ // These contain 1 element for every document line.
+ RunStyles *visible;
+ RunStyles *expanded;
+ RunStyles *heights;
+ Partitioning *displayLines;
+ int linesInDocument;
+
+ void EnsureData();
+
+ bool OneToOne() const {
+ // True when each document line is exactly one display line so need for
+ // complex data structures.
+ return visible == 0;
+ }
+
+public:
+ ContractionState();
+ virtual ~ContractionState();
+
+ void Clear();
+
+ int LinesInDoc() const;
+ int LinesDisplayed() const;
+ int DisplayFromDoc(int lineDoc) const;
+ int DocFromDisplay(int lineDisplay) const;
+
+ void InsertLine(int lineDoc);
+ void InsertLines(int lineDoc, int lineCount);
+ void DeleteLine(int lineDoc);
+ void DeleteLines(int lineDoc, int lineCount);
+
+ bool GetVisible(int lineDoc) const;
+ bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
+
+ bool GetExpanded(int lineDoc) const;
+ bool SetExpanded(int lineDoc, bool expanded);
+
+ int GetHeight(int lineDoc) const;
+ bool SetHeight(int lineDoc, int height);
+
+ void ShowAll();
+ void Check() const;
+};
+
+#ifdef SCI_NAMESPACE
+}
+#endif
+
+#endif