diff options
Diffstat (limited to 'src/Indicator.cxx')
| -rw-r--r-- | src/Indicator.cxx | 66 | 
1 files changed, 35 insertions, 31 deletions
diff --git a/src/Indicator.cxx b/src/Indicator.cxx index c93855af5..0dd9ba7c2 100644 --- a/src/Indicator.cxx +++ b/src/Indicator.cxx @@ -15,20 +15,22 @@  #include <algorithm>  #include <memory> +#include "ScintillaTypes.h" +  #include "Debugging.h"  #include "Geometry.h"  #include "Platform.h" -#include "Scintilla.h"  #include "Indicator.h"  #include "XPM.h"  using namespace Scintilla; +using namespace Scintilla::Internal;  void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, State state, int value) const {  	StyleAndColour sacDraw = sacNormal; -	if (Flags() & SC_INDICFLAG_VALUEFORE) { -		sacDraw.fore = ColourRGBA::FromRGB(value & SC_INDICVALUEMASK); +	if (FlagSet(Flags(), IndicFlag::ValueFore)) { +		sacDraw.fore = ColourRGBA::FromRGB(value & static_cast<int>(IndicValue::Mask));  	}  	if (state == State::hover) {  		sacDraw = sacHover; @@ -50,7 +52,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  	rcClip.bottom = rcFullHeightAligned.bottom;  	switch (sacDraw.style) { -	case INDIC_SQUIGGLE: { +	case IndicatorStyle::Squiggle: {  			surface->SetClip(rcClip);  			XYPOSITION x = rcAligned.left + halfWidth;  			const XYPOSITION top = rcAligned.top + halfWidth; @@ -69,7 +71,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_SQUIGGLEPIXMAP: { +	case IndicatorStyle::SquigglePixmap: {  			const PRectangle rcSquiggle = PixelAlign(rc, 1);  			const int width = std::min(4000, static_cast<int>(rcSquiggle.Width())); @@ -93,7 +95,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_SQUIGGLELOW: { +	case IndicatorStyle::SquiggleLow: {  			std::vector<Point> pts;  			const XYPOSITION top = rcAligned.top + halfWidth;  			int y = 0; @@ -112,7 +114,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_TT: { +	case IndicatorStyle::TT: {  			surface->SetClip(rcClip);  			const XYPOSITION yLine = ymid;  			XYPOSITION x = rcAligned.left + 5.0f; @@ -129,7 +131,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_DIAGONAL: { +	case IndicatorStyle::Diagonal: {  			surface->SetClip(rcClip);  			XYPOSITION x = rcAligned.left + halfWidth;  			const XYPOSITION top = rcAligned.top + halfWidth; @@ -144,7 +146,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_STRIKE: { +	case IndicatorStyle::Strike: {  			const XYPOSITION yStrike = std::round(rcLine.Centre().y);  			const PRectangle rcStrike(  				rcAligned.left, yStrike, rcAligned.right, yStrike + strokeWidth); @@ -152,12 +154,12 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_HIDDEN: -	case INDIC_TEXTFORE: +	case IndicatorStyle::Hidden: +	case IndicatorStyle::TextFore:  		// Draw nothing  		break; -	case INDIC_BOX: { +	case IndicatorStyle::Box: {  			PRectangle rcBox = rcFullHeightAligned;  			rcBox.top = rcBox.top + 1.0f;  			rcBox.bottom = ymid + 1.0f; @@ -165,19 +167,19 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_ROUNDBOX: -	case INDIC_STRAIGHTBOX: -	case INDIC_FULLBOX: { +	case IndicatorStyle::RoundBox: +	case IndicatorStyle::StraightBox: +	case IndicatorStyle::FullBox: {  			PRectangle rcBox = rcFullHeightAligned; -			if (sacDraw.style != INDIC_FULLBOX) +			if (sacDraw.style != IndicatorStyle::FullBox)  				rcBox.top = rcBox.top + 1; -			surface->AlphaRectangle(rcBox, (sacDraw.style == INDIC_ROUNDBOX) ? 1.0f : 0.0f, +			surface->AlphaRectangle(rcBox, (sacDraw.style == IndicatorStyle::RoundBox) ? 1.0f : 0.0f,  						FillStroke(ColourRGBA(sacDraw.fore, fillAlpha), ColourRGBA(sacDraw.fore, outlineAlpha), strokeWidth));  		}  		break; -	case INDIC_GRADIENT: -	case INDIC_GRADIENTCENTRE: { +	case IndicatorStyle::Gradient: +	case IndicatorStyle::GradientCentre: {  			PRectangle rcBox = rcFullHeightAligned;  			rcBox.top = rcBox.top + 1;  			const Surface::GradientOptions options = Surface::GradientOptions::topToBottom; @@ -185,21 +187,23 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  			const ColourRGBA end(sacDraw.fore, 0);  			std::vector<ColourStop> stops;  			switch (sacDraw.style) { -			case INDIC_GRADIENT: +			case IndicatorStyle::Gradient:  				stops.push_back(ColourStop(0.0, start));  				stops.push_back(ColourStop(1.0, end));  				break; -			case INDIC_GRADIENTCENTRE: +			case IndicatorStyle::GradientCentre:  				stops.push_back(ColourStop(0.0, end));  				stops.push_back(ColourStop(0.5, start));  				stops.push_back(ColourStop(1.0, end));  				break; +			default: +				break;  			}  			surface->GradientRectangle(rcBox, stops, options);  		}  		break; -	case INDIC_DOTBOX: { +	case IndicatorStyle::DotBox: {  			PRectangle rcBox = rcFullHeightAligned;  			rcBox.top = rcBox.top + 1;  			// Cap width at 4000 to avoid large allocations when mistakes made @@ -222,7 +226,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_DASH: { +	case IndicatorStyle::Dash: {  			XYPOSITION x = std::floor(rc.left);  			const XYPOSITION widthDash = 3 + std::round(strokeWidth);  			while (x < rc.right) { @@ -234,7 +238,7 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_DOTS: { +	case IndicatorStyle::Dots: {  			const XYPOSITION widthDot = std::round(strokeWidth);  			XYPOSITION x = std::floor(rc.left);  			while (x < rc.right) { @@ -246,23 +250,23 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		}  		break; -	case INDIC_COMPOSITIONTHICK: { +	case IndicatorStyle::CompositionThick: {  			const PRectangle rcComposition(rc.left+1, rcLine.bottom-2, rc.right-1, rcLine.bottom);  			surface->FillRectangle(rcComposition, sacDraw.fore);  		}  		break; -	case INDIC_COMPOSITIONTHIN: { +	case IndicatorStyle::CompositionThin: {  			const PRectangle rcComposition(rc.left+1, rcLine.bottom-2, rc.right-1, rcLine.bottom-1);  			surface->FillRectangle(rcComposition, sacDraw.fore);  		}  		break; -	case INDIC_POINT: -	case INDIC_POINTCHARACTER: +	case IndicatorStyle::Point: +	case IndicatorStyle::PointCharacter:  		if (rcCharacter.Width() >= 0.1) {  			const XYPOSITION pixelHeight = std::floor(rc.Height() - 1.0f);	// 1 pixel onto next line if multiphase -			const XYPOSITION x = (sacDraw.style == INDIC_POINT) ? (rcCharacter.left) : ((rcCharacter.right + rcCharacter.left) / 2); +			const XYPOSITION x = (sacDraw.style == IndicatorStyle::Point) ? (rcCharacter.left) : ((rcCharacter.right + rcCharacter.left) / 2);  			// 0.5f is to hit midpoint of pixels:  			const XYPOSITION ix = std::round(x) + 0.5f;  			const XYPOSITION iy = std::floor(rc.top + 1.0f) + 0.5f; @@ -276,12 +280,12 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r  		break;  	default: -		// Either INDIC_PLAIN or unknown +		// Either IndicatorStyle::Plain or unknown  		surface->FillRectangle(PRectangle(rcAligned.left, ymid,  			rcAligned.right, ymid + std::round(strokeWidth)), sacDraw.fore);  	}  } -void Indicator::SetFlags(int attributes_) noexcept { +void Indicator::SetFlags(IndicFlag attributes_) noexcept {  	attributes = attributes_;  }  | 
