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