diff options
Diffstat (limited to 'src/ViewStyle.cxx')
| -rw-r--r-- | src/ViewStyle.cxx | 71 | 
1 files changed, 34 insertions, 37 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 5645e47fc..d4de3a6f5 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -198,9 +198,9 @@ void ViewStyle::Init(size_t stylesSize_) {  	// There are no image markers by default, so no need for calling CalcLargestMarkerHeight()  	largestMarkerHeight = 0; -	indicators[0] = Indicator(INDIC_SQUIGGLE, ColourDesired(0, 0x7f, 0)); -	indicators[1] = Indicator(INDIC_TT, ColourDesired(0, 0, 0xff)); -	indicators[2] = Indicator(INDIC_PLAIN, ColourDesired(0xff, 0, 0)); +	indicators[0] = Indicator(INDIC_SQUIGGLE, ColourAlpha(0, 0x7f, 0)); +	indicators[1] = Indicator(INDIC_TT, ColourAlpha(0, 0, 0xff)); +	indicators[2] = Indicator(INDIC_PLAIN, ColourAlpha(0xff, 0, 0));  	technology = SC_TECHNOLOGY_DEFAULT;  	indicatorsDynamic = false; @@ -213,40 +213,40 @@ void ViewStyle::Init(size_t stylesSize_) {  	spaceWidth = 8;  	tabWidth = spaceWidth * 8; -	selColours.fore = ColourOptional(ColourDesired(0xff, 0, 0)); -	selColours.back = ColourOptional(ColourDesired(0xc0, 0xc0, 0xc0), true); -	selAdditionalForeground = ColourDesired(0xff, 0, 0); -	selAdditionalBackground = ColourDesired(0xd7, 0xd7, 0xd7); -	selBackground2 = ColourDesired(0xb0, 0xb0, 0xb0); +	selColours.fore.reset(); +	selColours.back = ColourAlpha(0xc0, 0xc0, 0xc0); +	selAdditionalForeground = ColourAlpha(0xff, 0, 0); +	selAdditionalBackground = ColourAlpha(0xd7, 0xd7, 0xd7); +	selBackground2 = ColourAlpha(0xb0, 0xb0, 0xb0);  	selAlpha = SC_ALPHA_NOALPHA;  	selAdditionalAlpha = SC_ALPHA_NOALPHA;  	selEOLFilled = false; -	foldmarginColour = ColourOptional(ColourDesired(0xff, 0, 0)); -	foldmarginHighlightColour = ColourOptional(ColourDesired(0xc0, 0xc0, 0xc0)); +	foldmarginColour.reset(); +	foldmarginHighlightColour.reset(); -	whitespaceColours.fore = ColourOptional(); -	whitespaceColours.back = ColourOptional(ColourDesired(0xff, 0xff, 0xff)); +	whitespaceColours.fore.reset(); +	whitespaceColours.back.reset();  	controlCharSymbol = 0;	/* Draw the control characters */  	controlCharWidth = 0;  	selbar = Platform::Chrome();  	selbarlight = Platform::ChromeHighlight(); -	styles[STYLE_LINENUMBER].fore = ColourDesired(0, 0, 0); +	styles[STYLE_LINENUMBER].fore = ColourAlpha(0, 0, 0);  	styles[STYLE_LINENUMBER].back = Platform::Chrome(); -	caretcolour = ColourDesired(0, 0, 0); -	additionalCaretColour = ColourDesired(0x7f, 0x7f, 0x7f); +	caretcolour = ColourAlpha(0, 0, 0); +	additionalCaretColour = ColourAlpha(0x7f, 0x7f, 0x7f);  	caretLineFrame = 0;  	showCaretLineBackground = false;  	alwaysShowCaretLineBackground = false; -	caretLineBackground = ColourDesired(0xff, 0xff, 0); +	caretLineBackground = ColourAlpha(0xff, 0xff, 0);  	caretLineAlpha = SC_ALPHA_NOALPHA;  	caretStyle = CARETSTYLE_LINE;  	caretWidth = 1;  	someStylesProtected = false;  	someStylesForceCase = false; -	hotspotColours.fore = ColourOptional(ColourDesired(0, 0, 0xff)); -	hotspotColours.back = ColourOptional(ColourDesired(0xff, 0xff, 0xff)); +	hotspotColours.fore.reset(); +	hotspotColours.back.reset();  	hotspotUnderline = true;  	hotspotSingleLine = true; @@ -279,7 +279,7 @@ void ViewStyle::Init(size_t stylesSize_) {  	braceBadLightIndicator = 0;  	edgeState = EDGE_NONE; -	theEdge = EdgeProperties(0, ColourDesired(0xc0, 0xc0, 0xc0)); +	theEdge = EdgeProperties(0, ColourAlpha(0xc0, 0xc0, 0xc0));  	marginNumberPadding = 3;  	ctrlCharPadding = 3; // +3 For a blank on front and rounded edge each side @@ -381,8 +381,8 @@ void ViewStyle::EnsureStyle(size_t index) {  }  void ViewStyle::ResetDefaultStyle() { -	styles[STYLE_DEFAULT].Clear(ColourDesired(0,0,0), -	        ColourDesired(0xff,0xff,0xff), +	styles[STYLE_DEFAULT].Clear(ColourAlpha(0,0,0), +	        ColourAlpha(0xff,0xff,0xff),  	        Platform::DefaultFontSize() * SC_FONT_SIZE_MULTIPLIER, fontNames.Save(Platform::DefaultFont()),  	        SC_CHARSET_DEFAULT,  	        SC_WEIGHT_NORMAL, false, false, false, Style::CaseForce::mixed, true, true, false); @@ -398,8 +398,8 @@ void ViewStyle::ClearStyles() {  	styles[STYLE_LINENUMBER].back = Platform::Chrome();  	// Set call tip fore/back to match the values previously set for call tips -	styles[STYLE_CALLTIP].back = ColourDesired(0xff, 0xff, 0xff); -	styles[STYLE_CALLTIP].fore = ColourDesired(0x80, 0x80, 0x80); +	styles[STYLE_CALLTIP].back = ColourAlpha(0xff, 0xff, 0xff); +	styles[STYLE_CALLTIP].fore = ColourAlpha(0x80, 0x80, 0x80);  }  void ViewStyle::SetStyleFontName(int styleIndex, const char *name) { @@ -464,29 +464,29 @@ bool ViewStyle::IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) cons  // display itself (as long as it's not an SC_MARK_EMPTY marker).  These are checked in order  // with the earlier taking precedence.  When multiple markers cause background override,  // the colour for the highest numbered one is used. -ColourOptional ViewStyle::Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const noexcept { -	ColourOptional background; +std::optional<ColourAlpha> ViewStyle::Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const { +	std::optional<ColourAlpha> background;  	if (!caretLineFrame && (caretActive || alwaysShowCaretLineBackground) && showCaretLineBackground &&  		(caretLineAlpha == SC_ALPHA_NOALPHA) && lineContainsCaret) { -		background = ColourOptional(caretLineBackground, true); +		background = caretLineBackground;  	} -	if (!background.isSet && marksOfLine) { +	if (!background && marksOfLine) {  		int marks = marksOfLine;  		for (int markBit = 0; (markBit < 32) && marks; markBit++) {  			if ((marks & 1) && (markers[markBit].markType == SC_MARK_BACKGROUND) &&  				(markers[markBit].alpha == SC_ALPHA_NOALPHA)) { -				background = ColourOptional(markers[markBit].back, true); +				background = markers[markBit].back;  			}  			marks >>= 1;  		}  	} -	if (!background.isSet && maskInLine) { +	if (!background && maskInLine) {  		int marksMasked = marksOfLine & maskInLine;  		if (marksMasked) {  			for (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {  				if ((marksMasked & 1) &&  					(markers[markBit].alpha == SC_ALPHA_NOALPHA)) { -					background = ColourOptional(markers[markBit].back, true); +					background = markers[markBit].back;  				}  				marksMasked >>= 1;  			} @@ -496,12 +496,12 @@ ColourOptional ViewStyle::Background(int marksOfLine, bool caretActive, bool lin  }  bool ViewStyle::SelectionBackgroundDrawn() const noexcept { -	return selColours.back.isSet && +	return selColours.back &&  		((selAlpha == SC_ALPHA_NOALPHA) || (selAdditionalAlpha == SC_ALPHA_NOALPHA));  }  bool ViewStyle::WhitespaceBackgroundDrawn() const noexcept { -	return (viewWhitespace != WhiteSpace::invisible) && (whitespaceColours.back.isSet); +	return (viewWhitespace != WhiteSpace::invisible) && (whitespaceColours.back);  }  bool ViewStyle::WhiteSpaceVisible(bool inIndent) const noexcept { @@ -510,11 +510,8 @@ bool ViewStyle::WhiteSpaceVisible(bool inIndent) const noexcept {  		viewWhitespace == WhiteSpace::visibleAlways;  } -ColourDesired ViewStyle::WrapColour() const noexcept { -	if (whitespaceColours.fore.isSet) -		return whitespaceColours.fore; -	else -		return styles[STYLE_DEFAULT].fore; +ColourAlpha ViewStyle::WrapColour() const noexcept { +	return whitespaceColours.fore.value_or(styles[STYLE_DEFAULT].fore);  }  // Insert new edge in sorted order.  | 
