aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cocoa/PlatCocoa.mm12
-rwxr-xr-xgtk/PlatGTK.cxx8
-rwxr-xr-xgtk/ScintillaGTK.cxx8
-rw-r--r--gtk/ScintillaGTKAccessible.cxx2
-rw-r--r--qt/ScintillaEditBase/PlatQt.cpp8
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.cpp8
-rw-r--r--src/CallTip.cxx18
-rw-r--r--src/CallTip.h12
-rw-r--r--src/EditView.cxx167
-rw-r--r--src/EditView.h6
-rw-r--r--src/Editor.cxx74
-rw-r--r--src/Geometry.h70
-rw-r--r--src/Indicator.cxx2
-rw-r--r--src/Indicator.h6
-rw-r--r--src/MarginView.cxx18
-rw-r--r--src/MarginView.h4
-rw-r--r--src/Platform.h4
-rw-r--r--src/ScintillaBase.cxx6
-rw-r--r--src/Style.cxx8
-rw-r--r--src/Style.h6
-rw-r--r--src/ViewStyle.cxx71
-rw-r--r--src/ViewStyle.h51
-rw-r--r--win32/PlatWin.cxx40
-rw-r--r--win32/ScintillaWin.cxx8
24 files changed, 298 insertions, 319 deletions
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm
index 50e42f38e..100ea44b0 100644
--- a/cocoa/PlatCocoa.mm
+++ b/cocoa/PlatCocoa.mm
@@ -741,7 +741,7 @@ void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) {
// For now, assume that copy can only be called on PixMap surfaces. Shows up black.
CGImageRef image = patternSurface.CreateImage();
if (image == NULL) {
- FillRectangle(rc, ColourDesired(0));
+ FillRectangle(rc, ColourAlpha::FromRGB(0));
return;
}
@@ -1147,7 +1147,7 @@ void SurfaceImpl::Copy(PRectangle rc, Scintilla::Point from, Surface &surfaceSou
CGImageRef image = source.CreateImage();
// If we could not get an image reference, fill the rectangle black
if (image == NULL) {
- FillRectangle(rc, ColourDesired(0));
+ FillRectangle(rc, ColourAlpha::FromRGB(0));
return;
}
@@ -2287,14 +2287,14 @@ void Menu::Show(Point, const Window &) {
//----------------- Platform -----------------------------------------------------------------------
-ColourDesired Platform::Chrome() {
- return ColourDesired(0xE0, 0xE0, 0xE0);
+ColourAlpha Platform::Chrome() {
+ return ColourAlpha(0xE0, 0xE0, 0xE0);
}
//--------------------------------------------------------------------------------------------------
-ColourDesired Platform::ChromeHighlight() {
- return ColourDesired(0xFF, 0xFF, 0xFF);
+ColourAlpha Platform::ChromeHighlight() {
+ return ColourAlpha(0xFF, 0xFF, 0xFF);
}
//--------------------------------------------------------------------------------------------------
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx
index 4f06550a2..07a6f5539 100755
--- a/gtk/PlatGTK.cxx
+++ b/gtk/PlatGTK.cxx
@@ -2104,12 +2104,12 @@ void Menu::Show(Point pt, const Window &w) {
#endif
}
-ColourDesired Platform::Chrome() {
- return ColourDesired(0xe0, 0xe0, 0xe0);
+ColourAlpha Platform::Chrome() {
+ return ColourAlpha(0xe0, 0xe0, 0xe0);
}
-ColourDesired Platform::ChromeHighlight() {
- return ColourDesired(0xff, 0xff, 0xff);
+ColourAlpha Platform::ChromeHighlight() {
+ return ColourAlpha(0xff, 0xff, 0xff);
}
const char *Platform::DefaultFont() {
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 7a1548be7..9846e197b 100755
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -693,10 +693,10 @@ void ScintillaGTK::Init() {
timers[tr].reason = static_cast<TickReason>(tr);
timers[tr].scintilla = this;
}
- vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourDesired(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourAlpha(0, 0, 0xff));
fontOptionsPrevious = FontOptions(PWidget(wText));
}
diff --git a/gtk/ScintillaGTKAccessible.cxx b/gtk/ScintillaGTKAccessible.cxx
index 9857db174..d5219aec8 100644
--- a/gtk/ScintillaGTKAccessible.cxx
+++ b/gtk/ScintillaGTKAccessible.cxx
@@ -524,7 +524,7 @@ static AtkAttributeSet *AddTextIntAttribute(AtkAttributeSet *attributes, AtkText
return AddTextAttribute(attributes, attr, g_strdup(atk_text_attribute_get_value(attr, i)));
}
-static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, const ColourDesired &colour) {
+static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, ColourAlpha colour) {
return AddTextAttribute(attributes, attr,
g_strdup_printf("%u,%u,%u", colour.GetRed() * 257, colour.GetGreen() * 257, colour.GetBlue() * 257));
}
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp
index 783bdeea8..286441be9 100644
--- a/qt/ScintillaEditBase/PlatQt.cpp
+++ b/qt/ScintillaEditBase/PlatQt.cpp
@@ -1284,16 +1284,16 @@ void Menu::Show(Point pt, const Window & /*w*/)
//----------------------------------------------------------------------
-ColourDesired Platform::Chrome()
+ColourAlpha Platform::Chrome()
{
QColor c(Qt::gray);
- return ColourDesired(c.red(), c.green(), c.blue());
+ return ColourAlpha(c.red(), c.green(), c.blue());
}
-ColourDesired Platform::ChromeHighlight()
+ColourAlpha Platform::ChromeHighlight()
{
QColor c(Qt::lightGray);
- return ColourDesired(c.red(), c.green(), c.blue());
+ return ColourAlpha(c.red(), c.green(), c.blue());
}
const char *Platform::DefaultFont()
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp
index 39a2cf49e..7a199b80e 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.cpp
+++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp
@@ -59,10 +59,10 @@ ScintillaEditBase::ScintillaEditBase(QWidget *parent)
setAttribute(Qt::WA_KeyCompression);
setAttribute(Qt::WA_InputMethodEnabled);
- sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourDesired(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourDesired(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourDesired(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourDesired(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourAlpha(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourAlpha(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourAlpha(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourAlpha(0, 0, 0xff));
connect(sqt, SIGNAL(notifyParent(SCNotification)),
this, SLOT(notifyParent(SCNotification)));
diff --git a/src/CallTip.cxx b/src/CallTip.cxx
index f9f3ce7f7..56cf3c2fd 100644
--- a/src/CallTip.cxx
+++ b/src/CallTip.cxx
@@ -54,15 +54,15 @@ CallTip::CallTip() noexcept {
#ifdef __APPLE__
// proper apple colours for the default
- colourBG = ColourDesired(0xff, 0xff, 0xc6);
- colourUnSel = ColourDesired(0, 0, 0);
+ colourBG = ColourAlpha(0xff, 0xff, 0xc6);
+ colourUnSel = ColourAlpha(0, 0, 0);
#else
- colourBG = ColourDesired(0xff, 0xff, 0xff);
- colourUnSel = ColourDesired(0x80, 0x80, 0x80);
+ colourBG = ColourAlpha(0xff, 0xff, 0xff);
+ colourUnSel = ColourAlpha(0x80, 0x80, 0x80);
#endif
- colourSel = ColourDesired(0, 0, 0x80);
- colourShade = ColourDesired(0, 0, 0);
- colourLight = ColourDesired(0xc0, 0xc0, 0xc0);
+ colourSel = ColourAlpha(0, 0, 0x80);
+ colourShade = ColourAlpha(0, 0, 0);
+ colourLight = ColourAlpha(0xc0, 0xc0, 0xc0);
codePage = 0;
clickPlace = 0;
}
@@ -93,7 +93,7 @@ constexpr bool IsArrowCharacter(char ch) noexcept {
return (ch == 0) || (ch == '\001') || (ch == '\002');
}
-void DrawArrow(Scintilla::Surface *surface, const PRectangle &rc, bool upArrow, ColourDesired colourBG, ColourDesired colourUnSel) {
+void DrawArrow(Scintilla::Surface *surface, const PRectangle &rc, bool upArrow, ColourAlpha colourBG, ColourAlpha colourUnSel) {
surface->FillRectangle(rc, colourBG);
const PRectangle rcClientInner = Clamp(rc.Inset(1), Edge::right, rc.right - 2);
surface->FillRectangle(rcClientInner, colourUnSel);
@@ -348,7 +348,7 @@ bool CallTip::UseStyleCallTip() const noexcept {
// It might be better to have two access functions for this and to use
// them for all settings of colours.
-void CallTip::SetForeBack(const ColourDesired &fore, const ColourDesired &back) noexcept {
+void CallTip::SetForeBack(const ColourAlpha &fore, const ColourAlpha &back) noexcept {
colourBG = back;
colourUnSel = fore;
}
diff --git a/src/CallTip.h b/src/CallTip.h
index f1358a94a..78518a995 100644
--- a/src/CallTip.h
+++ b/src/CallTip.h
@@ -44,11 +44,11 @@ public:
Window wDraw;
bool inCallTipMode;
Sci::Position posStartCallTip;
- ColourDesired colourBG;
- ColourDesired colourUnSel;
- ColourDesired colourSel;
- ColourDesired colourShade;
- ColourDesired colourLight;
+ ColourAlpha colourBG;
+ ColourAlpha colourUnSel;
+ ColourAlpha colourSel;
+ ColourAlpha colourShade;
+ ColourAlpha colourLight;
int codePage;
int clickPlace;
@@ -91,7 +91,7 @@ public:
bool UseStyleCallTip() const noexcept;
// Modify foreground and background colours
- void SetForeBack(const ColourDesired &fore, const ColourDesired &back) noexcept;
+ void SetForeBack(const ColourAlpha &fore, const ColourAlpha &back) noexcept;
};
}
diff --git a/src/EditView.cxx b/src/EditView.cxx
index c5e3a3726..fbb6f8b5c 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -820,20 +820,20 @@ Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &m
return posRet;
}
-static ColourDesired SelectionBackground(const ViewStyle &vsDraw, bool main, bool primarySelection) noexcept {
+static ColourAlpha SelectionBackground(const ViewStyle &vsDraw, bool main, bool primarySelection) noexcept {
return main ?
- (primarySelection ? vsDraw.selColours.back : vsDraw.selBackground2) :
+ (primarySelection ? vsDraw.selColours.back.value() : vsDraw.selBackground2) :
vsDraw.selAdditionalBackground;
}
-static ColourDesired TextBackground(const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
- ColourOptional background, int inSelection, bool inHotspot, int styleMain, Sci::Position i) noexcept {
+static ColourAlpha TextBackground(const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
+ std::optional<ColourAlpha> background, int inSelection, bool inHotspot, int styleMain, Sci::Position i) noexcept {
if (inSelection == 1) {
- if (vsDraw.selColours.back.isSet && (vsDraw.selAlpha == SC_ALPHA_NOALPHA)) {
+ if (vsDraw.selColours.back && (vsDraw.selAlpha == SC_ALPHA_NOALPHA)) {
return SelectionBackground(vsDraw, true, model.primarySelection);
}
} else if (inSelection == 2) {
- if (vsDraw.selColours.back.isSet && (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA)) {
+ if (vsDraw.selColours.back && (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA)) {
return SelectionBackground(vsDraw, false, model.primarySelection);
}
} else {
@@ -841,11 +841,11 @@ static ColourDesired TextBackground(const EditModel &model, const ViewStyle &vsD
(i >= ll->edgeColumn) &&
(i < ll->numCharsBeforeEOL))
return vsDraw.theEdge.colour;
- if (inHotspot && vsDraw.hotspotColours.back.isSet)
- return vsDraw.hotspotColours.back;
+ if (inHotspot && vsDraw.hotspotColours.back)
+ return vsDraw.hotspotColours.back.value();
}
- if (background.isSet && (styleMain != STYLE_BRACELIGHT) && (styleMain != STYLE_BRACEBAD)) {
- return background;
+ if (background && (styleMain != STYLE_BRACELIGHT) && (styleMain != STYLE_BRACEBAD)) {
+ return background.value();
} else {
return vsDraw.styles[styleMain].back;
}
@@ -859,14 +859,14 @@ void EditView::DrawIndentGuide(Surface *surface, Sci::Line lineVisible, int line
highlight ? *pixmapIndentGuideHighlight : *pixmapIndentGuide);
}
-static void SimpleAlphaRectangle(Surface *surface, PRectangle rc, ColourDesired fill, int alpha) {
+static void SimpleAlphaRectangle(Surface *surface, PRectangle rc, ColourAlpha fill, int alpha) {
if (alpha != SC_ALPHA_NOALPHA) {
surface->FillRectangleAligned(rc, ColourAlpha(fill, alpha));
}
}
static void DrawTextBlob(Surface *surface, const ViewStyle &vsDraw, PRectangle rcSegment,
- std::string_view text, ColourDesired textBack, ColourDesired textFore, bool fillBackground) {
+ std::string_view text, ColourAlpha textBack, ColourAlpha textFore, bool fillBackground) {
if (rcSegment.Empty())
return;
if (fillBackground) {
@@ -890,7 +890,7 @@ static void DrawTextBlob(Surface *surface, const ViewStyle &vsDraw, PRectangle r
textBack, textFore);
}
-static void DrawFrame(Surface *surface, ColourDesired colour, int alpha, PRectangle rcFrame) {
+static void DrawFrame(Surface *surface, ColourAlpha colour, int alpha, PRectangle rcFrame) {
if (alpha != SC_ALPHA_NOALPHA) {
surface->AlphaRectangle(rcFrame, 0, FillStroke(ColourAlpha(colour, alpha)));
} else {
@@ -924,7 +924,7 @@ static void DrawCaretLineFramed(Surface *surface, const ViewStyle &vsDraw, const
void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
PRectangle rcLine, Sci::Line line, Sci::Position lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
- ColourOptional background) {
+ std::optional<ColourAlpha> background) {
const Sci::Position posLineStart = model.pdoc->LineStart(line);
PRectangle rcSegment = rcLine;
@@ -941,7 +941,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
if (virtualSpace > 0.0f) {
rcSegment.left = xEol + xStart;
rcSegment.right = xEol + xStart + virtualSpace;
- surface->FillRectangleAligned(rcSegment, Fill(background.isSet ? background : vsDraw.styles[ll->styles[ll->numCharsInLine]].back));
+ surface->FillRectangleAligned(rcSegment, Fill(background ? background.value() : vsDraw.styles[ll->styles[ll->numCharsInLine]].back));
if (!hideSelection && ((vsDraw.selAlpha == SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA))) {
const SelectionSegment virtualSpaceRange(SelectionPosition(model.pdoc->LineEnd(line)),
SelectionPosition(model.pdoc->LineEnd(line),
@@ -984,7 +984,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
const char *ctrlChar;
const unsigned char chEOL = ll->chars[eolPos];
const int styleMain = ll->styles[eolPos];
- const ColourDesired textBack = TextBackground(model, vsDraw, ll, background, eolInSelection, false, styleMain, eolPos);
+ const ColourAlpha textBack = TextBackground(model, vsDraw, ll, background, eolInSelection, false, styleMain, eolPos);
if (UTF8IsAscii(chEOL)) {
ctrlChar = ControlCharacterString(chEOL);
} else {
@@ -997,11 +997,11 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
ctrlChar = hexits;
}
}
- ColourDesired textFore = vsDraw.styles[styleMain].fore;
- if (eolInSelection && vsDraw.selColours.fore.isSet) {
- textFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;
+ ColourAlpha textFore = vsDraw.styles[styleMain].fore;
+ if (eolInSelection && vsDraw.selColours.fore) {
+ textFore = (eolInSelection == 1) ? vsDraw.selColours.fore.value() : vsDraw.selAdditionalForeground;
}
- if (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1)) {
+ if (eolInSelection && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1)) {
if (alpha == SC_ALPHA_NOALPHA) {
surface->FillRectangleAligned(rcSegment, Fill(SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection)));
} else {
@@ -1011,7 +1011,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
surface->FillRectangleAligned(rcSegment, Fill(textBack));
}
DrawTextBlob(surface, vsDraw, rcSegment, ctrlChar, textBack, textFore, phasesDraw == PhasesDraw::one);
- if (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
+ if (eolInSelection && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
SimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);
}
}
@@ -1021,11 +1021,11 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
rcSegment.left = xEol + xStart + virtualSpace + blobsWidth;
rcSegment.right = rcSegment.left + vsDraw.aveCharWidth;
- if (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {
+ if (eolInSelection && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {
surface->FillRectangleAligned(rcSegment, Fill(SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection)));
} else {
- if (background.isSet) {
- surface->FillRectangleAligned(rcSegment, Fill(background));
+ if (background) {
+ surface->FillRectangleAligned(rcSegment, Fill(background.value()));
} else if (line < model.pdoc->LinesTotal() - 1) {
surface->FillRectangleAligned(rcSegment, Fill(vsDraw.styles[ll->styles[ll->numCharsInLine]].back));
} else if (vsDraw.styles[ll->styles[ll->numCharsInLine]].eolFilled) {
@@ -1033,7 +1033,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
} else {
surface->FillRectangleAligned(rcSegment, Fill(vsDraw.styles[STYLE_DEFAULT].back));
}
- if (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
+ if (eolInSelection && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
SimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);
}
}
@@ -1215,12 +1215,12 @@ void EditView::DrawFoldDisplayText(Surface *surface, const EditModel &model, con
rcSegment.left = xStart + static_cast<XYPOSITION>(ll->positions[ll->numCharsInLine] - subLineStart) + virtualSpace + vsDraw.aveCharWidth;
rcSegment.right = rcSegment.left + static_cast<XYPOSITION>(widthFoldDisplayText);
- const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
- ColourDesired textFore = vsDraw.styles[STYLE_FOLDDISPLAYTEXT].fore;
- if (eolInSelection && (vsDraw.selColours.fore.isSet)) {
- textFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;
+ const std::optional<ColourAlpha> background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
+ ColourAlpha textFore = vsDraw.styles[STYLE_FOLDDISPLAYTEXT].fore;
+ if (eolInSelection && (vsDraw.selColours.fore)) {
+ textFore = (eolInSelection == 1) ? vsDraw.selColours.fore.value() : vsDraw.selAdditionalForeground;
}
- const ColourDesired textBack = TextBackground(model, vsDraw, ll, background, eolInSelection,
+ const ColourAlpha textBack = TextBackground(model, vsDraw, ll, background, eolInSelection,
false, STYLE_FOLDDISPLAYTEXT, -1);
if (model.trackLineWidth) {
@@ -1264,7 +1264,7 @@ void EditView::DrawFoldDisplayText(Surface *surface, const EditModel &model, con
}
if (FlagSet(phase, DrawPhase::selectionTranslucent)) {
- if (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && alpha != SC_ALPHA_NOALPHA) {
+ if (eolInSelection && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && alpha != SC_ALPHA_NOALPHA) {
SimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);
}
}
@@ -1342,9 +1342,9 @@ void EditView::DrawEOLAnnotationText(Surface *surface, const EditModel &model, c
}
rcSegment.right = rcSegment.left + static_cast<XYPOSITION>(widthEOLAnnotationText);
- const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
- const ColourDesired textFore = vsDraw.styles[style].fore;
- const ColourDesired textBack = TextBackground(model, vsDraw, ll, background, false,
+ const std::optional<ColourAlpha> background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
+ const ColourAlpha textFore = vsDraw.styles[style].fore;
+ const ColourAlpha textBack = TextBackground(model, vsDraw, ll, background, false,
false, static_cast<int>(style), -1);
if (model.trackLineWidth) {
@@ -1388,10 +1388,10 @@ void EditView::DrawEOLAnnotationText(Surface *surface, const EditModel &model, c
} else {
if (phasesDraw == PhasesDraw::one) {
// Draw an outline around the text
- surface->Stadium(rcBox, FillStroke(ColourAlpha(textBack, 0), ColourAlpha(textFore), 1.0), ends);
+ surface->Stadium(rcBox, FillStroke(ColourAlpha(textBack, 0), textFore, 1.0), ends);
} else {
// Draw with a fill to fill the edges of the shape.
- surface->Stadium(rcBox, FillStroke(ColourAlpha(textBack), ColourAlpha(textFore), 1.0), ends);
+ surface->Stadium(rcBox, FillStroke(textBack, textFore, 1.0), ends);
}
}
}
@@ -1451,7 +1451,7 @@ void EditView::DrawAnnotation(Surface *surface, const EditModel &model, const Vi
DrawStyledText(surface, vsDraw, vsDraw.annotationStyleOffset, rcText,
stAnnotation, start, lengthAnnotation, phase);
if ((FlagSet(phase, DrawPhase::back)) && (vsDraw.annotationVisible == ANNOTATION_BOXED)) {
- const ColourDesired colourBorder = vsDraw.styles[vsDraw.annotationStyleOffset].fore;
+ const ColourAlpha colourBorder = vsDraw.styles[vsDraw.annotationStyleOffset].fore;
const PRectangle rcBorder = PixelAlignOutside(rcSegment, surface->PixelDivisions());
surface->FillRectangle(Side(rcBorder, Edge::left, 1), colourBorder);
surface->FillRectangle(Side(rcBorder, Edge::right, 1), colourBorder);
@@ -1466,7 +1466,7 @@ void EditView::DrawAnnotation(Surface *surface, const EditModel &model, const Vi
}
static void DrawBlockCaret(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
- int subLine, int xStart, Sci::Position offset, Sci::Position posCaret, PRectangle rcCaret, ColourDesired caretColour) {
+ int subLine, int xStart, Sci::Position offset, Sci::Position posCaret, PRectangle rcCaret, ColourAlpha caretColour) {
const Sci::Position lineStart = ll->LineStart(subLine);
Sci::Position posBefore = posCaret;
@@ -1622,7 +1622,8 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt
rcCaret.left = std::round(xposCaret - caretWidthOffset);
rcCaret.right = rcCaret.left + vsDraw.caretWidth;
}
- const ColourDesired caretColour = mainCaret ? vsDraw.caretcolour : vsDraw.additionalCaretColour;
+ const ColourAlpha caretColour = mainCaret ? vsDraw.caretcolour : vsDraw.additionalCaretColour;
+ assert(caretColour.IsOpaque());
if (drawBlockCaret) {
DrawBlockCaret(surface, model, vsDraw, ll, subLine, xStart, offset, posCaret.Position(), rcCaret, caretColour);
} else {
@@ -1636,10 +1637,10 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt
}
static void DrawWrapIndentAndMarker(Surface *surface, const ViewStyle &vsDraw, const LineLayout *ll,
- int xStart, PRectangle rcLine, ColourOptional background, DrawWrapMarkerFn customDrawWrapMarker,
+ int xStart, PRectangle rcLine, std::optional<ColourAlpha> background, DrawWrapMarkerFn customDrawWrapMarker,
bool caretActive) {
// default bgnd here..
- surface->FillRectangleAligned(rcLine, Fill(background.isSet ? background :
+ surface->FillRectangleAligned(rcLine, Fill(background ? background.value() :
vsDraw.styles[STYLE_DEFAULT].back));
if (vsDraw.IsLineFrameOpaque(caretActive, ll->containsCaret)) {
@@ -1672,7 +1673,7 @@ static void DrawWrapIndentAndMarker(Surface *surface, const ViewStyle &vsDraw, c
void EditView::DrawBackground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
PRectangle rcLine, Range lineRange, Sci::Position posLineStart, int xStart,
- int subLine, ColourOptional background) const {
+ int subLine, std::optional<ColourAlpha> background) const {
const bool selBackDrawn = vsDraw.SelectionBackgroundDrawn();
bool inIndentation = subLine == 0; // Do not handle indentation except on first subline.
@@ -1682,7 +1683,7 @@ void EditView::DrawBackground(Surface *surface, const EditModel &model, const Vi
BreakFinder bfBack(ll, &model.sel, lineRange, posLineStart, xStartVisible, selBackDrawn, model.pdoc, &model.reprs, nullptr);
- const bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background.isSet;
+ const bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background;
// Background drawing loop
while (bfBack.More()) {
@@ -1705,13 +1706,13 @@ void EditView::DrawBackground(Surface *surface, const EditModel &model, const Vi
const int inSelection = hideSelection ? 0 : model.sel.CharacterInSelection(iDoc);
const bool inHotspot = (ll->hotspot.Valid()) && ll->hotspot.ContainsCharacter(iDoc);
- ColourDesired textBack = TextBackground(model, vsDraw, ll, background, inSelection,
+ ColourAlpha textBack = TextBackground(model, vsDraw, ll, background, inSelection,
inHotspot, ll->styles[i], i);
if (ts.representation) {
if (ll->chars[i] == '\t') {
// Tab display
if (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation))
- textBack = vsDraw.whitespaceColours.back;
+ textBack = vsDraw.whitespaceColours.back.value();
} else {
// Blob display
inIndentation = false;
@@ -1729,7 +1730,7 @@ void EditView::DrawBackground(Surface *surface, const EditModel &model, const Vi
rcSegment.top,
ll->positions[cpos + ts.start + 1] + xStart - static_cast<XYPOSITION>(subLineStart),
rcSegment.bottom);
- surface->FillRectangleAligned(rcSpace, Fill(vsDraw.whitespaceColours.back));
+ surface->FillRectangleAligned(rcSpace, Fill(vsDraw.whitespaceColours.back.value()));
}
} else {
inIndentation = false;
@@ -1806,7 +1807,7 @@ static void DrawTranslucentSelection(Surface *surface, const EditModel &model, c
const int selectionStart = static_cast<int>(portion.start.Position() - posLineStart - lineRange.start);
const int selectionEnd = static_cast<int>(portion.end.Position() - posLineStart - lineRange.start);
- const ColourDesired background = SelectionBackground(vsDraw, r == model.sel.Main(), model.primarySelection);
+ const ColourAlpha background = SelectionBackground(vsDraw, r == model.sel.Main(), model.primarySelection);
const ScreenLine screenLine(ll, subLine, vsDraw, rcLine.right, tabWidthMinimumPixels);
std::unique_ptr<IScreenLineLayout> slLayout = surface->Layout(&screenLine);
@@ -1884,10 +1885,10 @@ static void DrawTranslucentLineState(Surface *surface, const EditModel &model, c
void EditView::DrawForeground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
Sci::Line lineVisible, PRectangle rcLine, Range lineRange, Sci::Position posLineStart, int xStart,
- int subLine, ColourOptional background) {
+ int subLine, std::optional<ColourAlpha> background) {
const bool selBackDrawn = vsDraw.SelectionBackgroundDrawn();
- const bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background.isSet;
+ const bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background;
bool inIndentation = subLine == 0; // Do not handle indentation except on first subline.
const XYACCUMULATOR subLineStart = ll->positions[lineRange.start];
@@ -1898,7 +1899,7 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
// Foreground drawing loop
BreakFinder bfFore(ll, &model.sel, lineRange, posLineStart, xStartVisible,
- (((phasesDraw == PhasesDraw::one) && selBackDrawn) || vsDraw.selColours.fore.isSet), model.pdoc, &model.reprs, &vsDraw);
+ (((phasesDraw == PhasesDraw::one) && selBackDrawn) || vsDraw.selColours.fore), model.pdoc, &model.reprs, &vsDraw);
while (bfFore.More()) {
@@ -1913,13 +1914,13 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
// draw strings that are completely past the right side of the window.
if (rcSegment.Intersects(rcLine)) {
const int styleMain = ll->styles[i];
- ColourDesired textFore = vsDraw.styles[styleMain].fore;
+ ColourAlpha textFore = vsDraw.styles[styleMain].fore;
const Font *textFont = vsDraw.styles[styleMain].font.get();
//hotspot foreground
const bool inHotspot = (ll->hotspot.Valid()) && ll->hotspot.ContainsCharacter(iDoc);
if (inHotspot) {
- if (vsDraw.hotspotColours.fore.isSet)
- textFore = vsDraw.hotspotColours.fore;
+ if (vsDraw.hotspotColours.fore)
+ textFore = vsDraw.hotspotColours.fore.value();
}
if (vsDraw.indicatorsSetFore) {
// At least one indicator sets the text colour so see if it applies to this segment
@@ -1940,7 +1941,7 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
} else {
if (indicator.sacNormal.style == INDIC_TEXTFORE) {
if (indicator.Flags() & SC_INDICFLAG_VALUEFORE)
- textFore = ColourDesired(indicatorValue & SC_INDICVALUEMASK);
+ textFore = ColourAlpha::FromRGB(indicatorValue & SC_INDICVALUEMASK);
else
textFore = indicator.sacNormal.fore;
}
@@ -1949,16 +1950,16 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
}
}
const int inSelection = hideSelection ? 0 : model.sel.CharacterInSelection(iDoc);
- if (inSelection && (vsDraw.selColours.fore.isSet)) {
- textFore = (inSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;
+ if (inSelection && (vsDraw.selColours.fore)) {
+ textFore = (inSelection == 1) ? vsDraw.selColours.fore.value() : vsDraw.selAdditionalForeground;
}
- ColourDesired textBack = TextBackground(model, vsDraw, ll, background, inSelection, inHotspot, styleMain, i);
+ ColourAlpha textBack = TextBackground(model, vsDraw, ll, background, inSelection, inHotspot, styleMain, i);
if (ts.representation) {
if (ll->chars[i] == '\t') {
// Tab display
if (phasesDraw == PhasesDraw::one) {
if (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation))
- textBack = vsDraw.whitespaceColours.back;
+ textBack = vsDraw.whitespaceColours.back.value();
surface->FillRectangleAligned(rcSegment, Fill(textBack));
}
if (inIndentation && vsDraw.viewIndentationGuides == IndentView::real) {
@@ -1974,8 +1975,8 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
}
if (vsDraw.viewWhitespace != WhiteSpace::invisible) {
if (vsDraw.WhiteSpaceVisible(inIndentation)) {
- if (vsDraw.whitespaceColours.fore.isSet)
- textFore = vsDraw.whitespaceColours.fore;
+ if (vsDraw.whitespaceColours.fore)
+ textFore = vsDraw.whitespaceColours.fore.value();
const PRectangle rcTab(rcSegment.left + 1, rcSegment.top + tabArrowHeight,
rcSegment.right - 1, rcSegment.bottom - vsDraw.maxDescent);
const int segmentTop = static_cast<int>(rcSegment.top + vsDraw.lineHeight / 2);
@@ -2018,12 +2019,12 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
for (int cpos = 0; cpos <= i - ts.start; cpos++) {
if (ll->chars[cpos + ts.start] == ' ') {
if (vsDraw.viewWhitespace != WhiteSpace::invisible) {
- if (vsDraw.whitespaceColours.fore.isSet)
- textFore = vsDraw.whitespaceColours.fore;
+ if (vsDraw.whitespaceColours.fore)
+ textFore = vsDraw.whitespaceColours.fore.value();
if (vsDraw.WhiteSpaceVisible(inIndentation)) {
const XYPOSITION xmid = (ll->positions[cpos + ts.start] + ll->positions[cpos + ts.start + 1]) / 2;
if ((phasesDraw == PhasesDraw::one) && drawWhitespaceBackground) {
- textBack = vsDraw.whitespaceColours.back;
+ textBack = vsDraw.whitespaceColours.back.value();
const PRectangle rcSpace(
ll->positions[cpos + ts.start] + xStart - static_cast<XYPOSITION>(subLineStart),
rcSegment.top,
@@ -2060,8 +2061,8 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
PRectangle rcUL = rcSegment;
rcUL.top = rcUL.top + vsDraw.maxAscent + 1;
rcUL.bottom = rcUL.top + 1;
- if (vsDraw.hotspotColours.fore.isSet)
- surface->FillRectangleAligned(rcUL, Fill(vsDraw.hotspotColours.fore));
+ if (vsDraw.hotspotColours.fore)
+ surface->FillRectangleAligned(rcUL, Fill(vsDraw.hotspotColours.fore.value()));
else
surface->FillRectangleAligned(rcUL, Fill(textFore));
} else if (vsDraw.styles[styleMain].underline) {
@@ -2139,7 +2140,7 @@ void EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyl
}
// See if something overrides the line background colour.
- const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
+ const std::optional<ColourAlpha> background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
const Sci::Position posLineStart = model.pdoc->LineStart(line);
@@ -2445,19 +2446,19 @@ void EditView::FillLineRemainder(Surface *surface, const EditModel &model, const
alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
}
- const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
+ const std::optional<ColourAlpha> background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
- if (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {
+ if (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {
surface->FillRectangleAligned(rcArea, Fill(SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection)));
} else {
- if (background.isSet) {
- surface->FillRectangleAligned(rcArea, Fill(background));
+ if (background) {
+ surface->FillRectangleAligned(rcArea, Fill(background.value()));
} else if (vsDraw.styles[ll->styles[ll->numCharsInLine]].eolFilled) {
surface->FillRectangleAligned(rcArea, Fill(vsDraw.styles[ll->styles[ll->numCharsInLine]].back));
} else {
surface->FillRectangleAligned(rcArea, Fill(vsDraw.styles[STYLE_DEFAULT].back));
}
- if (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
+ if (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {
SimpleAlphaRectangle(surface, rcArea, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);
}
}
@@ -2466,18 +2467,18 @@ void EditView::FillLineRemainder(Surface *surface, const EditModel &model, const
// Space (3 space characters) between line numbers and text when printing.
#define lineNumberPrintSpace " "
-static ColourDesired InvertedLight(ColourDesired orig) noexcept {
+static ColourAlpha InvertedLight(ColourAlpha orig) noexcept {
unsigned int r = orig.GetRed();
unsigned int g = orig.GetGreen();
unsigned int b = orig.GetBlue();
const unsigned int l = (r + g + b) / 3; // There is a better calculation for this that matches human eye
const unsigned int il = 0xff - l;
if (l == 0)
- return ColourDesired(0xff, 0xff, 0xff);
+ return ColourAlpha(0xff, 0xff, 0xff);
r = r * il / l;
g = g * il / l;
b = b * il / l;
- return ColourDesired(std::min(r, 0xffu), std::min(g, 0xffu), std::min(b, 0xffu));
+ return ColourAlpha(std::min(r, 0xffu), std::min(g, 0xffu), std::min(b, 0xffu));
}
Sci::Position EditView::FormatRange(bool draw, const Sci_RangeToFormat *pfr, Surface *surface, Surface *surfaceMeasure,
@@ -2504,12 +2505,12 @@ Sci::Position EditView::FormatRange(bool draw, const Sci_RangeToFormat *pfr, Sur
// If this ever gets changed, cached pixmap would need to be recreated if technology != SC_TECHNOLOGY_DEFAULT
vsPrint.viewIndentationGuides = IndentView::none;
// Don't show the selection when printing
- vsPrint.selColours.back.isSet = false;
- vsPrint.selColours.fore.isSet = false;
+ vsPrint.selColours.back.reset();
+ vsPrint.selColours.fore.reset();
vsPrint.selAlpha = SC_ALPHA_NOALPHA;
vsPrint.selAdditionalAlpha = SC_ALPHA_NOALPHA;
- vsPrint.whitespaceColours.back.isSet = false;
- vsPrint.whitespaceColours.fore.isSet = false;
+ vsPrint.whitespaceColours.back.reset();
+ vsPrint.whitespaceColours.fore.reset();
vsPrint.showCaretLineBackground = false;
vsPrint.alwaysShowCaretLineBackground = false;
// Don't highlight matching braces using indicators
@@ -2522,19 +2523,19 @@ Sci::Position EditView::FormatRange(bool draw, const Sci_RangeToFormat *pfr, Sur
vsPrint.styles[sty].fore = InvertedLight(vsPrint.styles[sty].fore);
vsPrint.styles[sty].back = InvertedLight(vsPrint.styles[sty].back);
} else if (printParameters.colourMode == SC_PRINT_BLACKONWHITE) {
- vsPrint.styles[sty].fore = ColourDesired(0, 0, 0);
- vsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);
+ vsPrint.styles[sty].fore = ColourAlpha(0, 0, 0);
+ vsPrint.styles[sty].back = ColourAlpha(0xff, 0xff, 0xff);
} else if (printParameters.colourMode == SC_PRINT_COLOURONWHITE) {
- vsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);
+ vsPrint.styles[sty].back = ColourAlpha(0xff, 0xff, 0xff);
} else if (printParameters.colourMode == SC_PRINT_COLOURONWHITEDEFAULTBG) {
if (sty <= STYLE_DEFAULT) {
- vsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);
+ vsPrint.styles[sty].back = ColourAlpha(0xff, 0xff, 0xff);
}
}
}
// White background for the line numbers if SC_PRINT_SCREENCOLOURS isn't used
if (printParameters.colourMode != SC_PRINT_SCREENCOLOURS)
- vsPrint.styles[STYLE_LINENUMBER].back = ColourDesired(0xff, 0xff, 0xff);
+ vsPrint.styles[STYLE_LINENUMBER].back = ColourAlpha(0xff, 0xff, 0xff);
// Printing uses different margins, so reset screen margins
vsPrint.leftMarginWidth = 0;
diff --git a/src/EditView.h b/src/EditView.h
index 91a925f4a..add58065b 100644
--- a/src/EditView.h
+++ b/src/EditView.h
@@ -131,7 +131,7 @@ public:
void DrawIndentGuide(Surface *surface, Sci::Line lineVisible, int lineHeight, XYPOSITION start, PRectangle rcSegment, bool highlight);
void DrawEOL(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, PRectangle rcLine,
Sci::Line line, Sci::Position lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
- ColourOptional background);
+ std::optional<ColourAlpha> background);
void DrawFoldDisplayText(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
Sci::Line line, int xStart, PRectangle rcLine, int subLine, XYACCUMULATOR subLineStart, DrawPhase phase);
void DrawEOLAnnotationText(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
@@ -142,10 +142,10 @@ public:
int xStart, PRectangle rcLine, int subLine) const;
void DrawBackground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, PRectangle rcLine,
Range lineRange, Sci::Position posLineStart, int xStart,
- int subLine, ColourOptional background) const;
+ int subLine, std::optional<ColourAlpha> background) const;
void DrawForeground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, Sci::Line lineVisible,
PRectangle rcLine, Range lineRange, Sci::Position posLineStart, int xStart,
- int subLine, ColourOptional background);
+ int subLine, std::optional<ColourAlpha> background);
void DrawIndentGuidesOverEmpty(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
Sci::Line line, Sci::Line lineVisible, PRectangle rcLine, int xStart, int subLine);
void DrawLine(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, Sci::Line line,
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 208a075aa..f241bf346 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -5692,10 +5692,10 @@ void Editor::StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam
vs.EnsureStyle(wParam);
switch (iMessage) {
case SCI_STYLESETFORE:
- vs.styles[wParam].fore = ColourDesired(static_cast<int>(lParam));
+ vs.styles[wParam].fore = ColourAlpha::FromRGB(static_cast<int>(lParam));
break;
case SCI_STYLESETBACK:
- vs.styles[wParam].back = ColourDesired(static_cast<int>(lParam));
+ vs.styles[wParam].back = ColourAlpha::FromRGB(static_cast<int>(lParam));
break;
case SCI_STYLESETBOLD:
vs.styles[wParam].weight = lParam != 0 ? SC_WEIGHT_BOLD : SC_WEIGHT_NORMAL;
@@ -5747,9 +5747,9 @@ sptr_t Editor::StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lPar
vs.EnsureStyle(wParam);
switch (iMessage) {
case SCI_STYLEGETFORE:
- return vs.styles[wParam].fore.AsInteger();
+ return vs.styles[wParam].fore.OpaqueRGB();
case SCI_STYLEGETBACK:
- return vs.styles[wParam].back.AsInteger();
+ return vs.styles[wParam].back.OpaqueRGB();
case SCI_STYLEGETBOLD:
return vs.styles[wParam].weight > SC_WEIGHT_NORMAL;
case SCI_STYLEGETWEIGHT:
@@ -6939,19 +6939,19 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_MARKERSETFORE:
if (wParam <= MARKER_MAX)
- vs.markers[wParam].fore = ColourDesired(static_cast<int>(lParam));
+ vs.markers[wParam].fore = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleData();
RedrawSelMargin();
break;
case SCI_MARKERSETBACK:
if (wParam <= MARKER_MAX)
- vs.markers[wParam].back = ColourDesired(static_cast<int>(lParam));
+ vs.markers[wParam].back = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleData();
RedrawSelMargin();
break;
case SCI_MARKERSETBACKSELECTED:
if (wParam <= MARKER_MAX)
- vs.markers[wParam].backSelected = ColourDesired(static_cast<int>(lParam));
+ vs.markers[wParam].backSelected = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleData();
RedrawSelMargin();
break;
@@ -7118,14 +7118,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_SETMARGINBACKN:
if (ValidMargin(wParam)) {
- vs.ms[wParam].back = ColourDesired(static_cast<int>(lParam));
+ vs.ms[wParam].back = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleRedraw();
}
break;
case SCI_GETMARGINBACKN:
if (ValidMargin(wParam))
- return vs.ms[wParam].back.AsInteger();
+ return vs.ms[wParam].back.OpaqueRGB();
else
return 0;
@@ -7187,7 +7187,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_GETELEMENTCOLOUR:
- return vs.ElementColour(static_cast<int>(wParam)).value_or(ColourAlpha()).AsInteger();
+ return vs.ElementColour(static_cast<int>(wParam)).value_or(ColourAlpha()).OpaqueRGB();
case SCI_RESETELEMENTCOLOUR:
vs.elementColours[static_cast<int>(wParam)].reset();
@@ -7247,9 +7247,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
InvalidateStyleRedraw();
break;
case SCI_GETCARETLINEBACK:
- return vs.caretLineBackground.AsInteger();
+ return vs.caretLineBackground.OpaqueRGB();
case SCI_SETCARETLINEBACK:
- vs.caretLineBackground = ColourDesired(static_cast<int>(wParam));
+ vs.caretLineBackground = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
case SCI_GETCARETLINEBACKALPHA:
@@ -7404,14 +7404,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return LinesOnScreen();
case SCI_SETSELFORE:
- vs.selColours.fore = ColourOptional(wParam, lParam);
- vs.selAdditionalForeground = ColourDesired(static_cast<int>(lParam));
+ vs.selColours.fore = OptionalColour(wParam, lParam);
+ vs.selAdditionalForeground = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleRedraw();
break;
case SCI_SETSELBACK:
- vs.selColours.back = ColourOptional(wParam, lParam);
- vs.selAdditionalBackground = ColourDesired(static_cast<int>(lParam));
+ vs.selColours.back = OptionalColour(wParam, lParam);
+ vs.selAdditionalBackground = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleRedraw();
break;
@@ -7433,22 +7433,22 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_SETWHITESPACEFORE:
- vs.whitespaceColours.fore = ColourOptional(wParam, lParam);
+ vs.whitespaceColours.fore = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_SETWHITESPACEBACK:
- vs.whitespaceColours.back = ColourOptional(wParam, lParam);
+ vs.whitespaceColours.back = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_SETCARETFORE:
- vs.caretcolour = ColourDesired(static_cast<int>(wParam));
+ vs.caretcolour = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
case SCI_GETCARETFORE:
- return vs.caretcolour.AsInteger();
+ return vs.caretcolour.OpaqueRGB();
case SCI_SETCARETSTYLE:
if (wParam <= (CARETSTYLE_BLOCK | CARETSTYLE_OVERSTRIKE_BLOCK | CARETSTYLE_BLOCK_AFTER))
@@ -7497,14 +7497,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_INDICSETFORE:
if (wParam <= INDICATOR_MAX) {
- vs.indicators[wParam].sacNormal.fore = ColourDesired(static_cast<int>(lParam));
- vs.indicators[wParam].sacHover.fore = ColourDesired(static_cast<int>(lParam));
+ vs.indicators[wParam].sacNormal.fore = ColourAlpha::FromRGB(static_cast<int>(lParam));
+ vs.indicators[wParam].sacHover.fore = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleRedraw();
}
break;
case SCI_INDICGETFORE:
- return (wParam <= INDICATOR_MAX) ? vs.indicators[wParam].sacNormal.fore.AsInteger() : 0;
+ return (wParam <= INDICATOR_MAX) ? vs.indicators[wParam].sacNormal.fore.OpaqueRGB() : 0;
case SCI_INDICSETHOVERSTYLE:
if (wParam <= INDICATOR_MAX) {
@@ -7518,13 +7518,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_INDICSETHOVERFORE:
if (wParam <= INDICATOR_MAX) {
- vs.indicators[wParam].sacHover.fore = ColourDesired(static_cast<int>(lParam));
+ vs.indicators[wParam].sacHover.fore = ColourAlpha::FromRGB(static_cast<int>(lParam));
InvalidateStyleRedraw();
}
break;
case SCI_INDICGETHOVERFORE:
- return (wParam <= INDICATOR_MAX) ? vs.indicators[wParam].sacHover.fore.AsInteger() : 0;
+ return (wParam <= INDICATOR_MAX) ? vs.indicators[wParam].sacHover.fore.OpaqueRGB() : 0;
case SCI_INDICSETFLAGS:
if (wParam <= INDICATOR_MAX) {
@@ -7775,10 +7775,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_GETEDGECOLOUR:
- return vs.theEdge.colour.AsInteger();
+ return vs.theEdge.colour.OpaqueRGB();
case SCI_SETEDGECOLOUR:
- vs.theEdge.colour = ColourDesired(static_cast<int>(wParam));
+ vs.theEdge.colour = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
@@ -8012,30 +8012,30 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_SETFOLDMARGINCOLOUR:
- vs.foldmarginColour = ColourOptional(wParam, lParam);
+ vs.foldmarginColour = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_SETFOLDMARGINHICOLOUR:
- vs.foldmarginHighlightColour = ColourOptional(wParam, lParam);
+ vs.foldmarginHighlightColour = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_SETHOTSPOTACTIVEFORE:
- vs.hotspotColours.fore = ColourOptional(wParam, lParam);
+ vs.hotspotColours.fore = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_GETHOTSPOTACTIVEFORE:
- return vs.hotspotColours.fore.AsInteger();
+ return vs.hotspotColours.fore.value_or(ColourAlpha()).OpaqueRGB();
case SCI_SETHOTSPOTACTIVEBACK:
- vs.hotspotColours.back = ColourOptional(wParam, lParam);
+ vs.hotspotColours.back = OptionalColour(wParam, lParam);
InvalidateStyleRedraw();
break;
case SCI_GETHOTSPOTACTIVEBACK:
- return vs.hotspotColours.back.AsInteger();
+ return vs.hotspotColours.back.value_or(ColourAlpha()).OpaqueRGB();
case SCI_SETHOTSPOTACTIVEUNDERLINE:
vs.hotspotUnderline = wParam != 0;
@@ -8405,12 +8405,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return virtualSpaceOptions;
case SCI_SETADDITIONALSELFORE:
- vs.selAdditionalForeground = ColourDesired(static_cast<int>(wParam));
+ vs.selAdditionalForeground = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
case SCI_SETADDITIONALSELBACK:
- vs.selAdditionalBackground = ColourDesired(static_cast<int>(wParam));
+ vs.selAdditionalBackground = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
@@ -8423,12 +8423,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return vs.selAdditionalAlpha;
case SCI_SETADDITIONALCARETFORE:
- vs.additionalCaretColour = ColourDesired(static_cast<int>(wParam));
+ vs.additionalCaretColour = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
case SCI_GETADDITIONALCARETFORE:
- return vs.additionalCaretColour.AsInteger();
+ return vs.additionalCaretColour.OpaqueRGB();
case SCI_ROTATESELECTION:
sel.RotateMain();
diff --git a/src/Geometry.h b/src/Geometry.h
index ed158c081..b4d10f496 100644
--- a/src/Geometry.h
+++ b/src/Geometry.h
@@ -158,25 +158,33 @@ PRectangle PixelAlign(const PRectangle &rc, int pixelDivisions) noexcept;
PRectangle PixelAlignOutside(const PRectangle &rc, int pixelDivisions) noexcept;
/**
- * Holds an RGB colour with 8 bits for each component.
- */
+* Holds an RGBA colour with 8 bits for each component.
+*/
constexpr const float componentMaximum = 255.0f;
-class ColourDesired {
+class ColourAlpha {
int co;
public:
- constexpr explicit ColourDesired(int co_=0) noexcept : co(co_) {
+ constexpr explicit ColourAlpha(int co_ = 0) noexcept : co(co_) {
}
- constexpr ColourDesired(unsigned int red, unsigned int green, unsigned int blue) noexcept :
- co(red | (green << 8) | (blue << 16)) {
+ constexpr ColourAlpha(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha=0xff) noexcept :
+ ColourAlpha(red | (green << 8) | (blue << 16) | (alpha << 24)) {
}
- constexpr bool operator==(const ColourDesired &other) const noexcept {
- return co == other.co;
+ constexpr ColourAlpha(ColourAlpha cd, unsigned int alpha) noexcept :
+ ColourAlpha(cd.OpaqueRGB() | (alpha << 24)) {
}
- constexpr int AsInteger() const noexcept {
- return co;
+ static constexpr ColourAlpha FromRGB(int co_) noexcept {
+ return ColourAlpha(co_ | (0xffu << 24));
+ }
+
+ constexpr ColourAlpha Opaque() const noexcept {
+ return ColourAlpha(co & 0xffffff);
+ }
+
+ constexpr int OpaqueRGB() const noexcept {
+ return co & 0xffffff;
}
// Red, green and blue values as bytes 0..255
@@ -189,8 +197,11 @@ public:
constexpr unsigned char GetBlue() const noexcept {
return (co >> 16) & 0xff;
}
+ constexpr unsigned char GetAlpha() const noexcept {
+ return (co >> 24) & 0xff;
+ }
- // Red, green and blue values as float 0..1.0
+ // Red, green, blue, and alpha values as float 0..1.0
constexpr float GetRedComponent() const noexcept {
return GetRed() / componentMaximum;
}
@@ -200,40 +211,14 @@ public:
constexpr float GetBlueComponent() const noexcept {
return GetBlue() / componentMaximum;
}
-};
-
-/**
-* Holds an RGBA colour.
-*/
-class ColourAlpha : public ColourDesired {
-public:
- constexpr explicit ColourAlpha(int co_ = 0) noexcept : ColourDesired(co_) {
- }
-
- constexpr ColourAlpha(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha=0xff) noexcept :
- ColourDesired(red | (green << 8) | (blue << 16) | (alpha << 24)) {
- }
-
- constexpr ColourAlpha(ColourDesired cd, unsigned int alpha) noexcept :
- ColourDesired(cd.AsInteger() | (alpha << 24)) {
- }
-
- constexpr ColourAlpha(ColourDesired cd) noexcept :
- ColourDesired(cd.AsInteger() | (0xffu << 24)) {
- }
-
- constexpr ColourDesired GetColour() const noexcept {
- return ColourDesired(AsInteger() & 0xffffff);
- }
-
- constexpr unsigned char GetAlpha() const noexcept {
- return (AsInteger() >> 24) & 0xff;
- }
-
constexpr float GetAlphaComponent() const noexcept {
return GetAlpha() / componentMaximum;
}
+ constexpr bool operator==(const ColourAlpha &other) const noexcept {
+ return co == other.co;
+ }
+
constexpr bool IsOpaque() const noexcept {
return GetAlpha() == 0xff;
}
@@ -271,9 +256,6 @@ public:
constexpr Fill(ColourAlpha colour_) noexcept :
colour(colour_) {
}
- constexpr Fill(ColourDesired colour_) noexcept :
- colour(colour_) {
- }
};
/**
diff --git a/src/Indicator.cxx b/src/Indicator.cxx
index f65b461ef..e43027837 100644
--- a/src/Indicator.cxx
+++ b/src/Indicator.cxx
@@ -28,7 +28,7 @@ using namespace Scintilla;
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 = ColourDesired(value & SC_INDICVALUEMASK);
+ sacDraw.fore = ColourAlpha::FromRGB(value & SC_INDICVALUEMASK);
}
if (state == State::hover) {
sacDraw = sacHover;
diff --git a/src/Indicator.h b/src/Indicator.h
index 89cf1cdc5..abceec061 100644
--- a/src/Indicator.h
+++ b/src/Indicator.h
@@ -12,10 +12,10 @@ namespace Scintilla {
struct StyleAndColour {
int style;
- ColourDesired fore;
+ ColourAlpha fore;
StyleAndColour() noexcept : style(INDIC_PLAIN), fore(0, 0, 0) {
}
- StyleAndColour(int style_, ColourDesired fore_ = ColourDesired(0, 0, 0)) noexcept : style(style_), fore(fore_) {
+ StyleAndColour(int style_, ColourAlpha fore_ = ColourAlpha(0, 0, 0)) noexcept : style(style_), fore(fore_) {
}
bool operator==(const StyleAndColour &other) const noexcept {
return (style == other.style) && (fore == other.fore);
@@ -36,7 +36,7 @@ public:
XYPOSITION strokeWidth = 1.0f;
Indicator() noexcept : under(false), fillAlpha(30), outlineAlpha(50), attributes(0) {
}
- Indicator(int style_, ColourDesired fore_=ColourDesired(0,0,0), bool under_=false, int fillAlpha_=30, int outlineAlpha_=50) noexcept :
+ Indicator(int style_, ColourAlpha fore_= ColourAlpha(0,0,0), bool under_=false, int fillAlpha_=30, int outlineAlpha_=50) noexcept :
sacNormal(style_, fore_), sacHover(style_, fore_), under(under_), fillAlpha(fillAlpha_), outlineAlpha(outlineAlpha_), attributes(0) {
}
void Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, State drawState, int value) const;
diff --git a/src/MarginView.cxx b/src/MarginView.cxx
index 8b6f80695..2382ce1a8 100644
--- a/src/MarginView.cxx
+++ b/src/MarginView.cxx
@@ -59,7 +59,7 @@ using namespace Scintilla;
namespace Scintilla {
void DrawWrapMarker(Surface *surface, PRectangle rcPlace,
- bool isEndMarker, ColourDesired wrapColour) {
+ bool isEndMarker, ColourAlpha wrapColour) {
const XYPOSITION extraFinalPixel = surface->Supports(SC_SUPPORTS_LINE_DRAWS_FINAL) ? 0.0f : 1.0f;
@@ -132,22 +132,22 @@ void MarginView::RefreshPixMaps(Surface *surfaceWindow, const ViewStyle &vsDraw)
const PRectangle rcPattern = PRectangle::FromInts(0, 0, patternSize, patternSize);
// Initialize default colours based on the chrome colour scheme. Typically the highlight is white.
- ColourDesired colourFMFill = vsDraw.selbar;
- ColourDesired colourFMStripes = vsDraw.selbarlight;
+ ColourAlpha colourFMFill = vsDraw.selbar;
+ ColourAlpha colourFMStripes = vsDraw.selbarlight;
- if (!(vsDraw.selbarlight == ColourDesired(0xff, 0xff, 0xff))) {
+ if (!(vsDraw.selbarlight == ColourAlpha(0xff, 0xff, 0xff))) {
// User has chosen an unusual chrome colour scheme so just use the highlight edge colour.
// (Typically, the highlight colour is white.)
colourFMFill = vsDraw.selbarlight;
}
- if (vsDraw.foldmarginColour.isSet) {
+ if (vsDraw.foldmarginColour) {
// override default fold margin colour
- colourFMFill = vsDraw.foldmarginColour;
+ colourFMFill = vsDraw.foldmarginColour.value();
}
- if (vsDraw.foldmarginHighlightColour.isSet) {
+ if (vsDraw.foldmarginHighlightColour) {
// override default fold margin highlight colour
- colourFMStripes = vsDraw.foldmarginHighlightColour;
+ colourFMStripes = vsDraw.foldmarginHighlightColour.value();
}
pixmapSelPattern->FillRectangle(rcPattern, colourFMFill);
@@ -195,7 +195,7 @@ void MarginView::PaintMargin(Surface *surface, Sci::Line topLine, PRectangle rc,
surface->FillRectangle(rcSelMargin,
invertPhase ? *pixmapSelPattern : *pixmapSelPatternOffset1);
} else {
- ColourDesired colour;
+ ColourAlpha colour;
switch (vs.ms[margin].style) {
case SC_MARGIN_BACK:
colour = vs.styles[STYLE_DEFAULT].back;
diff --git a/src/MarginView.h b/src/MarginView.h
index 9d74ddb5e..9e52e533b 100644
--- a/src/MarginView.h
+++ b/src/MarginView.h
@@ -10,9 +10,9 @@
namespace Scintilla {
-void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);
+void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourAlpha wrapColour);
-typedef void (*DrawWrapMarkerFn)(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);
+typedef void (*DrawWrapMarkerFn)(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourAlpha wrapColour);
/**
* MarginView draws the margins.
diff --git a/src/Platform.h b/src/Platform.h
index b77fe3243..2d14da96e 100644
--- a/src/Platform.h
+++ b/src/Platform.h
@@ -357,8 +357,8 @@ public:
*/
namespace Platform {
-ColourDesired Chrome();
-ColourDesired ChromeHighlight();
+ColourAlpha Chrome();
+ColourAlpha ChromeHighlight();
const char *DefaultFont();
int DefaultFontSize();
unsigned int DoubleClickTime();
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 72bb5f6e0..0b9e8e41c 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -1008,19 +1008,19 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara
break;
case SCI_CALLTIPSETBACK:
- ct.colourBG = ColourDesired(static_cast<int>(wParam));
+ ct.colourBG = ColourAlpha::FromRGB(static_cast<int>(wParam));
vs.styles[STYLE_CALLTIP].back = ct.colourBG;
InvalidateStyleRedraw();
break;
case SCI_CALLTIPSETFORE:
- ct.colourUnSel = ColourDesired(static_cast<int>(wParam));
+ ct.colourUnSel = ColourAlpha::FromRGB(static_cast<int>(wParam));
vs.styles[STYLE_CALLTIP].fore = ct.colourUnSel;
InvalidateStyleRedraw();
break;
case SCI_CALLTIPSETFOREHLT:
- ct.colourSel = ColourDesired(static_cast<int>(wParam));
+ ct.colourSel = ColourAlpha::FromRGB(static_cast<int>(wParam));
InvalidateStyleRedraw();
break;
diff --git a/src/Style.cxx b/src/Style.cxx
index 83224c736..ae5fa6aa3 100644
--- a/src/Style.cxx
+++ b/src/Style.cxx
@@ -59,13 +59,13 @@ void FontMeasurements::ClearMeasurements() noexcept {
}
Style::Style() : FontSpecification() {
- Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
+ Clear(ColourAlpha(0, 0, 0), ColourAlpha(0xff, 0xff, 0xff),
Platform::DefaultFontSize() * SC_FONT_SIZE_MULTIPLIER, nullptr, SC_CHARSET_DEFAULT,
SC_WEIGHT_NORMAL, false, false, false, CaseForce::mixed, true, true, false);
}
Style::Style(const Style &source) noexcept : FontSpecification(), FontMeasurements() {
- Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
+ Clear(ColourAlpha(0, 0, 0), ColourAlpha(0xff, 0xff, 0xff),
0, nullptr, 0,
SC_WEIGHT_NORMAL, false, false, false, CaseForce::mixed, true, true, false);
fore = source.fore;
@@ -89,7 +89,7 @@ Style::~Style() {
Style &Style::operator=(const Style &source) noexcept {
if (this == &source)
return * this;
- Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
+ Clear(ColourAlpha(0, 0, 0), ColourAlpha(0xff, 0xff, 0xff),
0, nullptr, SC_CHARSET_DEFAULT,
SC_WEIGHT_NORMAL, false, false, false, CaseForce::mixed, true, true, false);
fore = source.fore;
@@ -107,7 +107,7 @@ Style &Style::operator=(const Style &source) noexcept {
return *this;
}
-void Style::Clear(ColourDesired fore_, ColourDesired back_, int size_,
+void Style::Clear(ColourAlpha fore_, ColourAlpha back_, int size_,
const char *fontName_, int characterSet_,
int weight_, bool italic_, bool eolFilled_,
bool underline_, CaseForce caseForce_,
diff --git a/src/Style.h b/src/Style.h
index d9bf96d88..8f9b1d334 100644
--- a/src/Style.h
+++ b/src/Style.h
@@ -44,8 +44,8 @@ struct FontMeasurements {
*/
class Style : public FontSpecification, public FontMeasurements {
public:
- ColourDesired fore;
- ColourDesired back;
+ ColourAlpha fore;
+ ColourAlpha back;
bool eolFilled;
bool underline;
enum class CaseForce {mixed, upper, lower, camel};
@@ -62,7 +62,7 @@ public:
~Style();
Style &operator=(const Style &source) noexcept;
Style &operator=(Style &&) = delete;
- void Clear(ColourDesired fore_, ColourDesired back_,
+ void Clear(ColourAlpha fore_, ColourAlpha back_,
int size_,
const char *fontName_, int characterSet_,
int weight_, bool italic_, bool eolFilled_,
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.
diff --git a/src/ViewStyle.h b/src/ViewStyle.h
index 946bd6c60..c9fe6bc98 100644
--- a/src/ViewStyle.h
+++ b/src/ViewStyle.h
@@ -15,7 +15,7 @@ namespace Scintilla {
class MarginStyle {
public:
int style;
- ColourDesired back;
+ ColourAlpha back;
int width;
int mask;
bool sensitive;
@@ -50,28 +50,27 @@ typedef std::map<FontSpecification, std::unique_ptr<FontRealised>> FontMap;
enum class WrapMode { none, word, character, whitespace };
-class ColourOptional : public ColourDesired {
-public:
- bool isSet;
- ColourOptional(ColourDesired colour_=ColourDesired(0,0,0), bool isSet_=false) noexcept : ColourDesired(colour_), isSet(isSet_) {
- }
- ColourOptional(uptr_t wParam, sptr_t lParam) noexcept : ColourDesired(static_cast<int>(lParam)), isSet(wParam != 0) {
+inline std::optional<ColourAlpha> OptionalColour(uptr_t wParam, sptr_t lParam) {
+ if (wParam) {
+ return ColourAlpha::FromRGB(static_cast<int>(lParam));
+ } else {
+ return {};
}
-};
+}
struct ForeBackColours {
- ColourOptional fore;
- ColourOptional back;
+ std::optional<ColourAlpha> fore;
+ std::optional<ColourAlpha> back;
};
struct EdgeProperties {
- int column;
- ColourDesired colour;
- EdgeProperties(int column_ = 0, ColourDesired colour_ = ColourDesired(0)) noexcept :
+ int column = 0;
+ ColourAlpha colour;
+ EdgeProperties(int column_ = 0, ColourAlpha colour_ = ColourAlpha::FromRGB(0)) noexcept :
column(column_), colour(colour_) {
}
EdgeProperties(uptr_t wParam, sptr_t lParam) noexcept :
- column(static_cast<int>(wParam)), colour(static_cast<int>(lParam)) {
+ column(static_cast<int>(wParam)), colour(ColourAlpha::FromRGB(static_cast<int>(lParam))) {
}
};
@@ -97,19 +96,19 @@ public:
XYPOSITION spaceWidth;
XYPOSITION tabWidth;
ForeBackColours selColours;
- ColourDesired selAdditionalForeground;
- ColourDesired selAdditionalBackground;
- ColourDesired selBackground2;
+ ColourAlpha selAdditionalForeground;
+ ColourAlpha selAdditionalBackground;
+ ColourAlpha selBackground2;
int selAlpha;
int selAdditionalAlpha;
bool selEOLFilled;
ForeBackColours whitespaceColours;
int controlCharSymbol;
XYPOSITION controlCharWidth;
- ColourDesired selbar;
- ColourDesired selbarlight;
- ColourOptional foldmarginColour;
- ColourOptional foldmarginHighlightColour;
+ ColourAlpha selbar;
+ ColourAlpha selbarlight;
+ std::optional<ColourAlpha> foldmarginColour;
+ std::optional<ColourAlpha> foldmarginHighlightColour;
ForeBackColours hotspotColours;
bool hotspotUnderline;
bool hotspotSingleLine;
@@ -128,12 +127,12 @@ public:
int whitespaceSize;
IndentView viewIndentationGuides;
bool viewEOL;
- ColourDesired caretcolour;
- ColourDesired additionalCaretColour;
+ ColourAlpha caretcolour;
+ ColourAlpha additionalCaretColour;
int caretLineFrame;
bool showCaretLineBackground;
bool alwaysShowCaretLineBackground;
- ColourDesired caretLineBackground;
+ ColourAlpha caretLineBackground;
int caretLineAlpha;
int caretStyle;
int caretWidth;
@@ -194,10 +193,10 @@ public:
void CalcLargestMarkerHeight() noexcept;
int GetFrameWidth() const noexcept;
bool IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) const noexcept;
- ColourOptional Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const noexcept;
+ std::optional<ColourAlpha> Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const;
bool SelectionBackgroundDrawn() const noexcept;
bool WhitespaceBackgroundDrawn() const noexcept;
- ColourDesired WrapColour() const noexcept;
+ ColourAlpha WrapColour() const noexcept;
void AddMultiEdge(uptr_t wParam, sptr_t lParam);
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index b1975d724..feb7b6321 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -638,7 +638,7 @@ void SurfaceGDI::PenColour(ColourAlpha fore, XYPOSITION widthStroke) noexcept {
penOld = {};
}
const DWORD penWidth = std::lround(widthStroke);
- const COLORREF penColour = fore.GetColour().AsInteger();
+ const COLORREF penColour = fore.OpaqueRGB();
if (widthStroke > 1) {
const LOGBRUSH brushParameters{ BS_SOLID, penColour, 0 };
pen = ::ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_MITER,
@@ -659,7 +659,7 @@ void SurfaceGDI::BrushColour(ColourAlpha back) noexcept {
brush = {};
brushOld = {};
}
- brush = ::CreateSolidBrush(back.GetColour().AsInteger());
+ brush = ::CreateSolidBrush(back.OpaqueRGB());
brushOld = SelectBrush(hdc, brush);
}
@@ -704,8 +704,8 @@ void SurfaceGDI::PolyLine(const Point *pts, size_t npts, Stroke stroke) {
}
void SurfaceGDI::Polygon(const Point *pts, size_t npts, FillStroke fillStroke) {
- PenColour(fillStroke.stroke.colour.GetColour(), fillStroke.stroke.width);
- BrushColour(fillStroke.fill.colour.GetColour());
+ PenColour(fillStroke.stroke.colour.Opaque(), fillStroke.stroke.width);
+ BrushColour(fillStroke.fill.colour.Opaque());
std::vector<POINT> outline;
std::transform(pts, pts + npts, std::back_inserter(outline), POINTFromPoint);
::Polygon(hdc, outline.data(), static_cast<int>(npts));
@@ -727,7 +727,7 @@ void SurfaceGDI::FillRectangle(PRectangle rc, Fill fill) {
// Using ExtTextOut rather than a FillRect ensures that no dithering occurs.
// There is no need to allocate a brush either.
const RECT rcw = RectFromPRectangle(rc);
- ::SetBkColor(hdc, fill.colour.GetColour().AsInteger());
+ ::SetBkColor(hdc, fill.colour.OpaqueRGB());
::ExtTextOut(hdc, rcw.left, rcw.top, ETO_OPAQUE, &rcw, TEXT(""), 0, nullptr);
} else {
AlphaRectangle(rc, 0, FillStroke(fill.colour));
@@ -1040,15 +1040,15 @@ void SurfaceGDI::DrawTextCommon(PRectangle rc, const Font *font_, XYPOSITION yba
void SurfaceGDI::DrawTextNoClip(PRectangle rc, const Font *font_, XYPOSITION ybase, std::string_view text,
ColourAlpha fore, ColourAlpha back) {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
- ::SetBkColor(hdc, back.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
+ ::SetBkColor(hdc, back.OpaqueRGB());
DrawTextCommon(rc, font_, ybase, text, ETO_OPAQUE);
}
void SurfaceGDI::DrawTextClipped(PRectangle rc, const Font *font_, XYPOSITION ybase, std::string_view text,
ColourAlpha fore, ColourAlpha back) {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
- ::SetBkColor(hdc, back.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
+ ::SetBkColor(hdc, back.OpaqueRGB());
DrawTextCommon(rc, font_, ybase, text, ETO_OPAQUE | ETO_CLIPPED);
}
@@ -1057,7 +1057,7 @@ void SurfaceGDI::DrawTextTransparent(PRectangle rc, const Font *font_, XYPOSITIO
// Avoid drawing spaces in transparent mode
for (const char ch : text) {
if (ch != ' ') {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
::SetBkMode(hdc, TRANSPARENT);
DrawTextCommon(rc, font_, ybase, text, 0);
::SetBkMode(hdc, OPAQUE);
@@ -1132,15 +1132,15 @@ void SurfaceGDI::DrawTextCommonUTF8(PRectangle rc, const Font *font_, XYPOSITION
void SurfaceGDI::DrawTextNoClipUTF8(PRectangle rc, const Font *font_, XYPOSITION ybase, std::string_view text,
ColourAlpha fore, ColourAlpha back) {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
- ::SetBkColor(hdc, back.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
+ ::SetBkColor(hdc, back.OpaqueRGB());
DrawTextCommonUTF8(rc, font_, ybase, text, ETO_OPAQUE);
}
void SurfaceGDI::DrawTextClippedUTF8(PRectangle rc, const Font *font_, XYPOSITION ybase, std::string_view text,
ColourAlpha fore, ColourAlpha back) {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
- ::SetBkColor(hdc, back.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
+ ::SetBkColor(hdc, back.OpaqueRGB());
DrawTextCommonUTF8(rc, font_, ybase, text, ETO_OPAQUE | ETO_CLIPPED);
}
@@ -1149,7 +1149,7 @@ void SurfaceGDI::DrawTextTransparentUTF8(PRectangle rc, const Font *font_, XYPOS
// Avoid drawing spaces in transparent mode
for (const char ch : text) {
if (ch != ' ') {
- ::SetTextColor(hdc, fore.GetColour().AsInteger());
+ ::SetTextColor(hdc, fore.OpaqueRGB());
::SetBkMode(hdc, TRANSPARENT);
DrawTextCommonUTF8(rc, font_, ybase, text, 0);
::SetBkMode(hdc, OPAQUE);
@@ -3148,7 +3148,7 @@ namespace {
int ColourOfElement(std::optional<ColourAlpha> colour, int nIndex) {
if (colour.has_value()) {
- return colour.value().GetColour().AsInteger();
+ return colour.value().OpaqueRGB();
} else {
return ::GetSysColor(nIndex);
}
@@ -3799,12 +3799,12 @@ void Menu::Show(Point pt, const Window &w) {
Destroy();
}
-ColourDesired Platform::Chrome() {
- return ColourDesired(::GetSysColor(COLOR_3DFACE));
+ColourAlpha Platform::Chrome() {
+ return ColourAlpha::FromRGB(::GetSysColor(COLOR_3DFACE));
}
-ColourDesired Platform::ChromeHighlight() {
- return ColourDesired(::GetSysColor(COLOR_3DHIGHLIGHT));
+ColourAlpha Platform::ChromeHighlight() {
+ return ColourAlpha::FromRGB(::GetSysColor(COLOR_3DHIGHLIGHT));
}
const char *Platform::DefaultFont() {
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index ea463cad0..8ffc14d5a 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -588,10 +588,10 @@ void ScintillaWin::Init() {
HMODULE user32 = ::GetModuleHandleW(L"user32.dll");
SetCoalescableTimerFn = DLLFunction<SetCoalescableTimerSig>(user32, "SetCoalescableTimer");
- vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourDesired(0, 0, 0xff));
- vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourDesired(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourAlpha(0, 0, 0xff));
+ vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourAlpha(0, 0, 0xff));
}
void ScintillaWin::Finalise() {