]> git.saurik.com Git - wxWidgets.git/blob - src/stc/scintilla/src/ContractionState.h
0d7881c7b227c1ae2dc93ff23d51dca471c4a8c9
[wxWidgets.git] / src / stc / scintilla / src / ContractionState.h
1 // Scintilla source code edit control
2 /** @file ContractionState.h
3 ** Manages visibility of lines for folding.
4 **/
5 // Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
7
8 #ifndef CONTRACTIONSTATE_H
9 #define CONTRACTIONSTATE_H
10
11 /**
12 */
13 class OneLine {
14 public:
15 int displayLine; ///< Position within set of visible lines
16 int docLine; ///< Inverse of @a displayLine
17 bool visible;
18 bool expanded;
19
20 OneLine();
21 virtual ~OneLine() {}
22 };
23
24 /**
25 */
26 class ContractionState {
27 void Grow(int sizeNew);
28 enum { growSize = 4000 };
29 int linesInDoc;
30 int linesInDisplay;
31 mutable OneLine *lines;
32 int size;
33 mutable bool valid;
34 void MakeValid() const;
35
36 public:
37 ContractionState();
38 virtual ~ContractionState();
39
40 void Clear();
41
42 int LinesInDoc() const;
43 int LinesDisplayed() const;
44 int DisplayFromDoc(int lineDoc) const;
45 int DocFromDisplay(int lineDisplay) const;
46
47 void InsertLines(int lineDoc, int lineCount);
48 void DeleteLines(int lineDoc, int lineCount);
49
50 bool GetVisible(int lineDoc) const;
51 bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
52
53 bool GetExpanded(int lineDoc) const;
54 bool SetExpanded(int lineDoc, bool expanded);
55
56 void ShowAll();
57 };
58
59 #endif