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