]> git.saurik.com Git - wxWidgets.git/blob - src/stc/scintilla/src/ContractionState.h
ba629751280e69030e2430b104001f0830403402
[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 and wrapping.
4 **/
5 // Copyright 1998-2007 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 #ifdef SCI_NAMESPACE
12 namespace Scintilla {
13 #endif
14
15 /**
16 */
17 class ContractionState {
18 // These contain 1 element for every document line.
19 RunStyles *visible;
20 RunStyles *expanded;
21 RunStyles *heights;
22 Partitioning *displayLines;
23 int linesInDocument;
24
25 void EnsureData();
26
27 bool OneToOne() const {
28 // True when each document line is exactly one display line so need for
29 // complex data structures.
30 return visible == 0;
31 }
32
33 public:
34 ContractionState();
35 virtual ~ContractionState();
36
37 void Clear();
38
39 int LinesInDoc() const;
40 int LinesDisplayed() const;
41 int DisplayFromDoc(int lineDoc) const;
42 int DocFromDisplay(int lineDisplay) const;
43
44 void InsertLine(int lineDoc);
45 void InsertLines(int lineDoc, int lineCount);
46 void DeleteLine(int lineDoc);
47 void DeleteLines(int lineDoc, int lineCount);
48
49 bool GetVisible(int lineDoc) const;
50 bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
51
52 bool GetExpanded(int lineDoc) const;
53 bool SetExpanded(int lineDoc, bool expanded);
54
55 int GetHeight(int lineDoc) const;
56 bool SetHeight(int lineDoc, int height);
57
58 void ShowAll();
59 void Check() const;
60 };
61
62 #ifdef SCI_NAMESPACE
63 }
64 #endif
65
66 #endif