1 // Scintilla source code edit control
2 /** @file Indicator.h
3  ** Defines the style of indicators which are text decorations such as underlining.
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 INDICATOR_H
9 #define INDICATOR_H
10 
11 namespace Scintilla {
12 
13 struct StyleAndColour {
14 	int style;
15 	ColourDesired fore;
StyleAndColourStyleAndColour16 	StyleAndColour() noexcept : style(INDIC_PLAIN), fore(0, 0, 0) {
17 	}
styleStyleAndColour18 	StyleAndColour(int style_, ColourDesired fore_ = ColourDesired(0, 0, 0)) noexcept : style(style_), fore(fore_) {
19 	}
20 	bool operator==(const StyleAndColour &other) const noexcept {
21 		return (style == other.style) && (fore == other.fore);
22 	}
23 };
24 
25 /**
26  */
27 class Indicator {
28 public:
29 	enum class State { normal, hover };
30 	StyleAndColour sacNormal;
31 	StyleAndColour sacHover;
32 	bool under;
33 	int fillAlpha;
34 	int outlineAlpha;
35 	int attributes;
Indicator()36 	Indicator() noexcept : under(false), fillAlpha(30), outlineAlpha(50), attributes(0) {
37 	}
38 	Indicator(int style_, ColourDesired fore_=ColourDesired(0,0,0), bool under_=false, int fillAlpha_=30, int outlineAlpha_=50) noexcept :
sacNormal(style_,fore_)39 		sacNormal(style_, fore_), sacHover(style_, fore_), under(under_), fillAlpha(fillAlpha_), outlineAlpha(outlineAlpha_), attributes(0) {
40 	}
41 	void Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, State drawState, int value) const;
IsDynamic()42 	bool IsDynamic() const noexcept {
43 		return !(sacNormal == sacHover);
44 	}
OverridesTextFore()45 	bool OverridesTextFore() const noexcept {
46 		return sacNormal.style == INDIC_TEXTFORE || sacHover.style == INDIC_TEXTFORE;
47 	}
Flags()48 	int Flags() const noexcept {
49 		return attributes;
50 	}
51 	void SetFlags(int attributes_) noexcept;
52 };
53 
54 }
55 
56 #endif
57