xref: /MusicPlayer2/scintilla/src/Indicator.h (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
1*8af74909SZhong Yang // Scintilla source code edit control
2*8af74909SZhong Yang /** @file Indicator.h
3*8af74909SZhong Yang  ** Defines the style of indicators which are text decorations such as underlining.
4*8af74909SZhong Yang  **/
5*8af74909SZhong Yang // Copyright 1998-2001 by Neil Hodgson <[email protected]>
6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
7*8af74909SZhong Yang 
8*8af74909SZhong Yang #ifndef INDICATOR_H
9*8af74909SZhong Yang #define INDICATOR_H
10*8af74909SZhong Yang 
11*8af74909SZhong Yang namespace Scintilla {
12*8af74909SZhong Yang 
13*8af74909SZhong Yang struct StyleAndColour {
14*8af74909SZhong Yang 	int style;
15*8af74909SZhong Yang 	ColourDesired fore;
StyleAndColourStyleAndColour16*8af74909SZhong Yang 	StyleAndColour() noexcept : style(INDIC_PLAIN), fore(0, 0, 0) {
17*8af74909SZhong Yang 	}
styleStyleAndColour18*8af74909SZhong Yang 	StyleAndColour(int style_, ColourDesired fore_ = ColourDesired(0, 0, 0)) noexcept : style(style_), fore(fore_) {
19*8af74909SZhong Yang 	}
20*8af74909SZhong Yang 	bool operator==(const StyleAndColour &other) const noexcept {
21*8af74909SZhong Yang 		return (style == other.style) && (fore == other.fore);
22*8af74909SZhong Yang 	}
23*8af74909SZhong Yang };
24*8af74909SZhong Yang 
25*8af74909SZhong Yang /**
26*8af74909SZhong Yang  */
27*8af74909SZhong Yang class Indicator {
28*8af74909SZhong Yang public:
29*8af74909SZhong Yang 	enum class State { normal, hover };
30*8af74909SZhong Yang 	StyleAndColour sacNormal;
31*8af74909SZhong Yang 	StyleAndColour sacHover;
32*8af74909SZhong Yang 	bool under;
33*8af74909SZhong Yang 	int fillAlpha;
34*8af74909SZhong Yang 	int outlineAlpha;
35*8af74909SZhong Yang 	int attributes;
Indicator()36*8af74909SZhong Yang 	Indicator() noexcept : under(false), fillAlpha(30), outlineAlpha(50), attributes(0) {
37*8af74909SZhong Yang 	}
38*8af74909SZhong Yang 	Indicator(int style_, ColourDesired fore_=ColourDesired(0,0,0), bool under_=false, int fillAlpha_=30, int outlineAlpha_=50) noexcept :
sacNormal(style_,fore_)39*8af74909SZhong Yang 		sacNormal(style_, fore_), sacHover(style_, fore_), under(under_), fillAlpha(fillAlpha_), outlineAlpha(outlineAlpha_), attributes(0) {
40*8af74909SZhong Yang 	}
41*8af74909SZhong Yang 	void Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, State drawState, int value) const;
IsDynamic()42*8af74909SZhong Yang 	bool IsDynamic() const noexcept {
43*8af74909SZhong Yang 		return !(sacNormal == sacHover);
44*8af74909SZhong Yang 	}
OverridesTextFore()45*8af74909SZhong Yang 	bool OverridesTextFore() const noexcept {
46*8af74909SZhong Yang 		return sacNormal.style == INDIC_TEXTFORE || sacHover.style == INDIC_TEXTFORE;
47*8af74909SZhong Yang 	}
Flags()48*8af74909SZhong Yang 	int Flags() const noexcept {
49*8af74909SZhong Yang 		return attributes;
50*8af74909SZhong Yang 	}
51*8af74909SZhong Yang 	void SetFlags(int attributes_) noexcept;
52*8af74909SZhong Yang };
53*8af74909SZhong Yang 
54*8af74909SZhong Yang }
55*8af74909SZhong Yang 
56*8af74909SZhong Yang #endif
57