]>
git.saurik.com Git - wxWidgets.git/blob - src/stc/scintilla/src/PerLine.h
1 // Scintilla source code edit control
3 ** Manages data associated with each line of the document
5 // Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
16 * This holds the marker identifier and the marker type to display.
17 * MarkerHandleNumbers are members of lists.
19 struct MarkerHandleNumber
{
22 MarkerHandleNumber
*next
;
26 * A marker handle set contains any number of MarkerHandleNumbers.
28 class MarkerHandleSet
{
29 MarkerHandleNumber
*root
;
35 int NumberFromHandle(int handle
) const;
36 int MarkValue() const; ///< Bit set of marker numbers.
37 bool Contains(int handle
) const;
38 bool InsertHandle(int handle
, int markerNum
);
39 void RemoveHandle(int handle
);
40 bool RemoveNumber(int markerNum
, bool all
);
41 void CombineWith(MarkerHandleSet
*other
);
44 class LineMarkers
: public PerLine
{
45 SplitVector
<MarkerHandleSet
*> markers
;
46 /// Handles are allocated sequentially and should never have to be reused as 32 bit ints are very big.
49 LineMarkers() : handleCurrent(0) {
51 virtual ~LineMarkers();
53 virtual void InsertLine(int line
);
54 virtual void RemoveLine(int line
);
56 int MarkValue(int line
);
57 int MarkerNext(int lineStart
, int mask
) const;
58 int AddMark(int line
, int marker
, int lines
);
59 void MergeMarkers(int pos
);
60 bool DeleteMark(int line
, int markerNum
, bool all
);
61 void DeleteMarkFromHandle(int markerHandle
);
62 int LineFromHandle(int markerHandle
);
65 class LineLevels
: public PerLine
{
66 SplitVector
<int> levels
;
68 virtual ~LineLevels();
70 virtual void InsertLine(int line
);
71 virtual void RemoveLine(int line
);
73 void ExpandLevels(int sizeNew
=-1);
75 int SetLevel(int line
, int level
, int lines
);
76 int GetLevel(int line
);
79 class LineState
: public PerLine
{
80 SplitVector
<int> lineStates
;
86 virtual void InsertLine(int line
);
87 virtual void RemoveLine(int line
);
89 int SetLineState(int line
, int state
);
90 int GetLineState(int line
);
91 int GetMaxLineState();
94 class LineAnnotation
: public PerLine
{
95 SplitVector
<char *> annotations
;
99 virtual ~LineAnnotation();
101 virtual void InsertLine(int line
);
102 virtual void RemoveLine(int line
);
105 bool MultipleStyles(int line
) const;
107 const char *Text(int line
) const;
108 const unsigned char *Styles(int line
) const;
109 void SetText(int line
, const char *text
);
111 void SetStyle(int line
, int style
);
112 void SetStyles(int line
, const unsigned char *styles
);
113 int Length(int line
) const;
114 int Lines(int line
) const;