]> git.saurik.com Git - wxWidgets.git/blob - src/stc/scintilla/src/ViewStyle.h
Initial copy of Scintilla 3.21 code
[wxWidgets.git] / src / stc / scintilla / src / ViewStyle.h
1 // Scintilla source code edit control
2 /** @file ViewStyle.h
3 ** Store information on how the document is to be viewed.
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 VIEWSTYLE_H
9 #define VIEWSTYLE_H
10
11 #ifdef SCI_NAMESPACE
12 namespace Scintilla {
13 #endif
14
15 /**
16 */
17 class MarginStyle {
18 public:
19 int style;
20 int width;
21 int mask;
22 bool sensitive;
23 int cursor;
24 MarginStyle();
25 };
26
27 /**
28 */
29 class FontNames {
30 private:
31 char **names;
32 int size;
33 int max;
34
35 public:
36 FontNames();
37 ~FontNames();
38 void Clear();
39 const char *Save(const char *name);
40 };
41
42 class FontRealised : public FontSpecification, public FontMeasurements {
43 // Private so FontRealised objects can not be copied
44 FontRealised(const FontRealised &);
45 FontRealised &operator=(const FontRealised &);
46 public:
47 Font font;
48 FontRealised *frNext;
49 FontRealised(const FontSpecification &fs);
50 virtual ~FontRealised();
51 void Realise(Surface &surface, int zoomLevel, int technology);
52 FontRealised *Find(const FontSpecification &fs);
53 void FindMaxAscentDescent(unsigned int &maxAscent, unsigned int &maxDescent);
54 };
55
56 enum IndentView {ivNone, ivReal, ivLookForward, ivLookBoth};
57
58 enum WhiteSpaceVisibility {wsInvisible=0, wsVisibleAlways=1, wsVisibleAfterIndent=2};
59
60 /**
61 */
62 class ViewStyle {
63 public:
64 FontNames fontNames;
65 FontRealised *frFirst;
66 size_t stylesSize;
67 Style *styles;
68 LineMarker markers[MARKER_MAX + 1];
69 int largestMarkerHeight;
70 Indicator indicators[INDIC_MAX + 1];
71 int technology;
72 int lineHeight;
73 unsigned int maxAscent;
74 unsigned int maxDescent;
75 XYPOSITION aveCharWidth;
76 XYPOSITION spaceWidth;
77 bool selforeset;
78 ColourDesired selforeground;
79 ColourDesired selAdditionalForeground;
80 bool selbackset;
81 ColourDesired selbackground;
82 ColourDesired selAdditionalBackground;
83 ColourDesired selbackground2;
84 int selAlpha;
85 int selAdditionalAlpha;
86 bool selEOLFilled;
87 bool whitespaceForegroundSet;
88 ColourDesired whitespaceForeground;
89 bool whitespaceBackgroundSet;
90 ColourDesired whitespaceBackground;
91 ColourDesired selbar;
92 ColourDesired selbarlight;
93 bool foldmarginColourSet;
94 ColourDesired foldmarginColour;
95 bool foldmarginHighlightColourSet;
96 ColourDesired foldmarginHighlightColour;
97 bool hotspotForegroundSet;
98 ColourDesired hotspotForeground;
99 bool hotspotBackgroundSet;
100 ColourDesired hotspotBackground;
101 bool hotspotUnderline;
102 bool hotspotSingleLine;
103 /// Margins are ordered: Line Numbers, Selection Margin, Spacing Margin
104 enum { margins=5 };
105 int leftMarginWidth; ///< Spacing margin on left of text
106 int rightMarginWidth; ///< Spacing margin on right of text
107 int maskInLine; ///< Mask for markers to be put into text because there is nowhere for them to go in margin
108 MarginStyle ms[margins];
109 int fixedColumnWidth;
110 int zoomLevel;
111 WhiteSpaceVisibility viewWhitespace;
112 int whitespaceSize;
113 IndentView viewIndentationGuides;
114 bool viewEOL;
115 ColourDesired caretcolour;
116 ColourDesired additionalCaretColour;
117 bool showCaretLineBackground;
118 ColourDesired caretLineBackground;
119 int caretLineAlpha;
120 ColourDesired edgecolour;
121 int edgeState;
122 int caretStyle;
123 int caretWidth;
124 bool someStylesProtected;
125 bool someStylesForceCase;
126 int extraFontFlag;
127 int extraAscent;
128 int extraDescent;
129 int marginStyleOffset;
130 int annotationVisible;
131 int annotationStyleOffset;
132 bool braceHighlightIndicatorSet;
133 int braceHighlightIndicator;
134 bool braceBadLightIndicatorSet;
135 int braceBadLightIndicator;
136
137 ViewStyle();
138 ViewStyle(const ViewStyle &source);
139 ~ViewStyle();
140 void Init(size_t stylesSize_=64);
141 void CreateFont(const FontSpecification &fs);
142 void Refresh(Surface &surface);
143 void AllocStyles(size_t sizeNew);
144 void EnsureStyle(size_t index);
145 void ResetDefaultStyle();
146 void ClearStyles();
147 void SetStyleFontName(int styleIndex, const char *name);
148 bool ProtectionActive() const;
149 bool ValidStyle(size_t styleIndex) const;
150 void CalcLargestMarkerHeight();
151 };
152
153 #ifdef SCI_NAMESPACE
154 }
155 #endif
156
157 #endif