aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ViewStyle.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ViewStyle.cxx')
-rw-r--r--src/ViewStyle.cxx269
1 files changed, 128 insertions, 141 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 675c7cedf..8340cd68f 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -19,11 +19,12 @@
#include <algorithm>
#include <memory>
+#include "ScintillaTypes.h"
+
#include "Debugging.h"
#include "Geometry.h"
#include "Platform.h"
-#include "Scintilla.h"
#include "Position.h"
#include "UniqueString.h"
#include "Indicator.h"
@@ -33,27 +34,28 @@
#include "ViewStyle.h"
using namespace Scintilla;
+using namespace Scintilla::Internal;
-MarginStyle::MarginStyle(int style_, int width_, int mask_) noexcept :
- style(style_), width(width_), mask(mask_), sensitive(false), cursor(SC_CURSORREVERSEARROW) {
+MarginStyle::MarginStyle(MarginType style_, int width_, int mask_) noexcept :
+ style(style_), width(width_), mask(mask_), sensitive(false), cursor(CursorShape::ReverseArrow) {
}
bool MarginStyle::ShowsFolding() const noexcept {
- return (mask & SC_MASK_FOLDERS) != 0;
+ return (mask & MaskFolders) != 0;
}
FontRealised::FontRealised() noexcept = default;
FontRealised::~FontRealised() = default;
-void FontRealised::Realise(Surface &surface, int zoomLevel, int technology, const FontSpecification &fs, const char *localeName) {
+void FontRealised::Realise(Surface &surface, int zoomLevel, Technology technology, const FontSpecification &fs, const char *localeName) {
PLATFORM_ASSERT(fs.fontName);
- sizeZoomed = fs.size + zoomLevel * SC_FONT_SIZE_MULTIPLIER;
- if (sizeZoomed <= 2 * SC_FONT_SIZE_MULTIPLIER) // Hangs if sizeZoomed <= 1
- sizeZoomed = 2 * SC_FONT_SIZE_MULTIPLIER;
+ sizeZoomed = fs.size + zoomLevel * FontSizeMultiplier;
+ if (sizeZoomed <= 2 * FontSizeMultiplier) // Hangs if sizeZoomed <= 1
+ sizeZoomed = 2 * FontSizeMultiplier;
const float deviceHeight = static_cast<float>(surface.DeviceHeightFont(sizeZoomed));
- const FontParameters fp(fs.fontName, deviceHeight / SC_FONT_SIZE_MULTIPLIER, fs.weight,
+ const FontParameters fp(fs.fontName, deviceHeight / FontSizeMultiplier, fs.weight,
fs.italic, fs.extraFontFlag, technology, fs.characterSet, localeName);
font = Font::Allocate(fp);
@@ -64,13 +66,13 @@ void FontRealised::Realise(Surface &surface, int zoomLevel, int technology, cons
spaceWidth = surface.WidthText(font.get(), " ");
}
-ViewStyle::ViewStyle() : markers(MARKER_MAX + 1), indicators(INDICATOR_MAX + 1) {
+ViewStyle::ViewStyle() : markers(MarkerMax + 1), indicators(static_cast<size_t>(IndicatorNumbers::Max) + 1) {
Init();
}
// Copy constructor only called when printing copies the screen ViewStyle so it can be
// modified for printing styles.
-ViewStyle::ViewStyle(const ViewStyle &source) : markers(MARKER_MAX + 1), indicators(INDICATOR_MAX + 1) {
+ViewStyle::ViewStyle(const ViewStyle &source) : markers(MarkerMax + 1), indicators(static_cast<size_t>(IndicatorNumbers::Max) + 1) {
Init(source.styles.size());
styles = source.styles;
for (size_t sty=0; sty<source.styles.size(); sty++) {
@@ -160,11 +162,11 @@ void ViewStyle::CalculateMarginWidthAndMask() noexcept {
for (int markBit = 0; markBit < 32; markBit++) {
const int maskBit = 1U << markBit;
switch (markers[markBit].markType) {
- case SC_MARK_EMPTY:
+ case MarkerSymbol::Empty:
maskInLine &= ~maskBit;
break;
- case SC_MARK_BACKGROUND:
- case SC_MARK_UNDERLINE:
+ case MarkerSymbol::Background:
+ case MarkerSymbol::Underline:
maskInLine &= ~maskBit;
maskDrawInText |= maskDefinedMarkers & maskBit;
break;
@@ -183,11 +185,11 @@ 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, ColourRGBA(0, 0x7f, 0));
- indicators[1] = Indicator(INDIC_TT, ColourRGBA(0, 0, 0xff));
- indicators[2] = Indicator(INDIC_PLAIN, ColourRGBA(0xff, 0, 0));
+ indicators[0] = Indicator(IndicatorStyle::Squiggle, ColourRGBA(0, 0x7f, 0));
+ indicators[1] = Indicator(IndicatorStyle::TT, ColourRGBA(0, 0, 0xff));
+ indicators[2] = Indicator(IndicatorStyle::Plain, ColourRGBA(0xff, 0, 0));
- technology = SC_TECHNOLOGY_DEFAULT;
+ technology = Technology::Default;
indicatorsDynamic = false;
indicatorsSetFore = false;
lineHeight = 1;
@@ -199,27 +201,27 @@ void ViewStyle::Init(size_t stylesSize_) {
tabWidth = spaceWidth * 8;
// Default is for no selection foregrounds
- elementColours.erase(SC_ELEMENT_SELECTION_TEXT);
- elementColours.erase(SC_ELEMENT_SELECTION_ADDITIONAL_TEXT);
- elementColours.erase(SC_ELEMENT_SELECTION_SECONDARY_TEXT);
- elementColours.erase(SC_ELEMENT_SELECTION_NO_FOCUS_TEXT);
+ elementColours.erase(Element::SelectionText);
+ elementColours.erase(Element::SelectionAdditionalText);
+ elementColours.erase(Element::SelectionSecondaryText);
+ elementColours.erase(Element::SelectionNoFocusText);
// Shades of grey for selection backgrounds
- elementBaseColours[SC_ELEMENT_SELECTION_BACK] = ColourRGBA(0xc0, 0xc0, 0xc0, 0xff);
- elementBaseColours[SC_ELEMENT_SELECTION_ADDITIONAL_BACK] = ColourRGBA(0xd7, 0xd7, 0xd7, 0xff);
- elementBaseColours[SC_ELEMENT_SELECTION_SECONDARY_BACK] = ColourRGBA(0xb0, 0xb0, 0xb0, 0xff);
- elementBaseColours[SC_ELEMENT_SELECTION_NO_FOCUS_BACK] = ColourRGBA(0x80, 0x80, 0x80, 0x3f);
+ elementBaseColours[Element::SelectionBack] = ColourRGBA(0xc0, 0xc0, 0xc0, 0xff);
+ elementBaseColours[Element::SelectionAdditionalBack] = ColourRGBA(0xd7, 0xd7, 0xd7, 0xff);
+ elementBaseColours[Element::SelectionSecondaryBack] = ColourRGBA(0xb0, 0xb0, 0xb0, 0xff);
+ elementBaseColours[Element::SelectionNoFocusBack] = ColourRGBA(0x80, 0x80, 0x80, 0x3f);
elementAllowsTranslucent.insert({
- SC_ELEMENT_SELECTION_TEXT,
- SC_ELEMENT_SELECTION_BACK,
- SC_ELEMENT_SELECTION_ADDITIONAL_TEXT,
- SC_ELEMENT_SELECTION_ADDITIONAL_BACK,
- SC_ELEMENT_SELECTION_SECONDARY_TEXT,
- SC_ELEMENT_SELECTION_SECONDARY_BACK,
- SC_ELEMENT_SELECTION_NO_FOCUS_TEXT,
- SC_ELEMENT_SELECTION_BACK,
- SC_ELEMENT_SELECTION_NO_FOCUS_BACK,
+ Element::SelectionText,
+ Element::SelectionBack,
+ Element::SelectionAdditionalText,
+ Element::SelectionAdditionalBack,
+ Element::SelectionSecondaryText,
+ Element::SelectionSecondaryBack,
+ Element::SelectionNoFocusText,
+ Element::SelectionBack,
+ Element::SelectionNoFocusBack,
});
- selection.layer = Layer::base;
+ selection.layer = Layer::Base;
selection.eolFilled = false;
foldmarginColour.reset();
@@ -229,74 +231,74 @@ void ViewStyle::Init(size_t stylesSize_) {
controlCharWidth = 0;
selbar = Platform::Chrome();
selbarlight = Platform::ChromeHighlight();
- styles[STYLE_LINENUMBER].fore = ColourRGBA(0, 0, 0);
- styles[STYLE_LINENUMBER].back = Platform::Chrome();
+ styles[StyleLineNumber].fore = ColourRGBA(0, 0, 0);
+ styles[StyleLineNumber].back = Platform::Chrome();
- elementBaseColours[SC_ELEMENT_CARET] = ColourRGBA(0, 0, 0);
- elementBaseColours[SC_ELEMENT_CARET_ADDITIONAL] = ColourRGBA(0x7f, 0x7f, 0x7f);
+ elementBaseColours[Element::Caret] = ColourRGBA(0, 0, 0);
+ elementBaseColours[Element::CaretAdditional] = ColourRGBA(0x7f, 0x7f, 0x7f);
elementAllowsTranslucent.insert({
- SC_ELEMENT_CARET,
- SC_ELEMENT_CARET_ADDITIONAL,
+ Element::Caret,
+ Element::CaretAdditional,
});
- caret.style = CARETSTYLE_LINE;
+ caret.style = CaretStyle::Line;
caret.width = 1;
- elementColours.erase(SC_ELEMENT_CARET_LINE_BACK);
- elementAllowsTranslucent.insert(SC_ELEMENT_CARET_LINE_BACK);
+ elementColours.erase(Element::CaretLineBack);
+ elementAllowsTranslucent.insert(Element::CaretLineBack);
caretLine.alwaysShow = false;
- caretLine.layer = Layer::base;
+ caretLine.layer = Layer::Base;
caretLine.frame = 0;
someStylesProtected = false;
someStylesForceCase = false;
hotspotUnderline = true;
- elementColours.erase(SC_ELEMENT_HOT_SPOT_ACTIVE);
- elementAllowsTranslucent.insert(SC_ELEMENT_HOT_SPOT_ACTIVE);
+ elementColours.erase(Element::HotSpotActive);
+ elementAllowsTranslucent.insert(Element::HotSpotActive);
leftMarginWidth = 1;
rightMarginWidth = 1;
- ms.resize(SC_MAX_MARGIN + 1);
- ms[0] = MarginStyle(SC_MARGIN_NUMBER);
- ms[1] = MarginStyle(SC_MARGIN_SYMBOL, 16, ~SC_MASK_FOLDERS);
- ms[2] = MarginStyle(SC_MARGIN_SYMBOL);
+ ms.resize(MaxMargin + 1);
+ ms[0] = MarginStyle(MarginType::Number);
+ ms[1] = MarginStyle(MarginType::Symbol, 16, ~MaskFolders);
+ ms[2] = MarginStyle(MarginType::Symbol);
marginInside = true;
CalculateMarginWidthAndMask();
textStart = marginInside ? fixedColumnWidth : leftMarginWidth;
zoomLevel = 0;
- viewWhitespace = WhiteSpace::invisible;
- tabDrawMode = TabDrawMode::longArrow;
+ viewWhitespace = WhiteSpace::Invisible;
+ tabDrawMode = TabDrawMode::LongArrow;
whitespaceSize = 1;
- elementColours.erase(SC_ELEMENT_WHITE_SPACE);
- elementAllowsTranslucent.insert(SC_ELEMENT_WHITE_SPACE);
+ elementColours.erase(Element::WhiteSpace);
+ elementAllowsTranslucent.insert(Element::WhiteSpace);
- viewIndentationGuides = IndentView::none;
+ viewIndentationGuides = IndentView::None;
viewEOL = false;
- extraFontFlag = 0;
+ extraFontFlag = FontQuality::QualityDefault;
extraAscent = 0;
extraDescent = 0;
marginStyleOffset = 0;
- annotationVisible = ANNOTATION_HIDDEN;
+ annotationVisible = AnnotationVisible::Hidden;
annotationStyleOffset = 0;
- eolAnnotationVisible = EOLANNOTATION_HIDDEN;
+ eolAnnotationVisible = EOLAnnotationVisible::Hidden;
eolAnnotationStyleOffset = 0;
braceHighlightIndicatorSet = false;
braceHighlightIndicator = 0;
braceBadLightIndicatorSet = false;
braceBadLightIndicator = 0;
- edgeState = EDGE_NONE;
+ edgeState = EdgeVisualStyle::None;
theEdge = EdgeProperties(0, ColourRGBA(0xc0, 0xc0, 0xc0));
marginNumberPadding = 3;
ctrlCharPadding = 3; // +3 For a blank on front and rounded edge each side
lastSegItalicsOffset = 2;
- wrap.state = WrapMode::none;
- wrap.visualFlags = 0;
- wrap.visualFlagsLocation = 0;
+ wrap.state = Wrap::None;
+ wrap.visualFlags = WrapVisualFlag::None;
+ wrap.visualFlagsLocation = WrapVisualLocation::Default;
wrap.visualStartIndent = 0;
- wrap.indentMode = SC_WRAPINDENT_FIXED;
+ wrap.indentMode = WrapIndentMode::Fixed;
localeName = localeNameDefault;
}
@@ -313,7 +315,7 @@ void ViewStyle::Refresh(Surface &surface, int tabInChars) {
}
// Create a FontRealised object for each unique font in the styles.
- CreateAndAddFont(styles[STYLE_DEFAULT]);
+ CreateAndAddFont(styles[StyleDefault]);
for (const Style &style : styles) {
CreateAndAddFont(style);
}
@@ -353,14 +355,14 @@ void ViewStyle::Refresh(Surface &surface, int tabInChars) {
someStylesForceCase = std::any_of(styles.cbegin(), styles.cend(),
[](const Style &style) noexcept { return style.caseForce != Style::CaseForce::mixed; });
- aveCharWidth = styles[STYLE_DEFAULT].aveCharWidth;
- spaceWidth = styles[STYLE_DEFAULT].spaceWidth;
+ aveCharWidth = styles[StyleDefault].aveCharWidth;
+ spaceWidth = styles[StyleDefault].spaceWidth;
tabWidth = spaceWidth * tabInChars;
controlCharWidth = 0.0;
if (controlCharSymbol >= 32) {
const char cc[2] = { static_cast<char>(controlCharSymbol), '\0' };
- controlCharWidth = surface.WidthText(styles[STYLE_CONTROLCHAR].font.get(), cc);
+ controlCharWidth = surface.WidthText(styles[StyleControlChar].font.get(), cc);
}
CalculateMarginWidthAndMask();
@@ -376,7 +378,7 @@ int ViewStyle::AllocateExtendedStyles(int numberStyles) {
nextExtendedStyle += numberStyles;
EnsureStyle(nextExtendedStyle);
for (int i=startRange; i<nextExtendedStyle; i++) {
- styles[i].ClearTo(styles[STYLE_DEFAULT]);
+ styles[i].ClearTo(styles[StyleDefault]);
}
return startRange;
}
@@ -388,25 +390,25 @@ void ViewStyle::EnsureStyle(size_t index) {
}
void ViewStyle::ResetDefaultStyle() {
- styles[STYLE_DEFAULT].Clear(ColourRGBA(0,0,0),
+ styles[StyleDefault].Clear(ColourRGBA(0,0,0),
ColourRGBA(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);
+ Platform::DefaultFontSize() * FontSizeMultiplier, fontNames.Save(Platform::DefaultFont()),
+ CharacterSet::Default,
+ FontWeight::Normal, false, false, false, Style::CaseForce::mixed, true, true, false);
}
void ViewStyle::ClearStyles() {
// Reset all styles to be like the default style
for (size_t i=0; i<styles.size(); i++) {
- if (i != STYLE_DEFAULT) {
- styles[i].ClearTo(styles[STYLE_DEFAULT]);
+ if (i != StyleDefault) {
+ styles[i].ClearTo(styles[StyleDefault]);
}
}
- styles[STYLE_LINENUMBER].back = Platform::Chrome();
+ styles[StyleLineNumber].back = Platform::Chrome();
// Set call tip fore/back to match the values previously set for call tips
- styles[STYLE_CALLTIP].back = ColourRGBA(0xff, 0xff, 0xff);
- styles[STYLE_CALLTIP].fore = ColourRGBA(0x80, 0x80, 0x80);
+ styles[StyleCallTip].back = ColourRGBA(0xff, 0xff, 0xff);
+ styles[StyleCallTip].fore = ColourRGBA(0x80, 0x80, 0x80);
}
void ViewStyle::SetStyleFontName(int styleIndex, const char *name) {
@@ -444,11 +446,11 @@ void ViewStyle::CalcLargestMarkerHeight() noexcept {
largestMarkerHeight = 0;
for (const LineMarker &marker : markers) {
switch (marker.markType) {
- case SC_MARK_PIXMAP:
+ case MarkerSymbol::Pixmap:
if (marker.pxpm && marker.pxpm->GetHeight() > largestMarkerHeight)
largestMarkerHeight = marker.pxpm->GetHeight();
break;
- case SC_MARK_RGBAIMAGE:
+ case MarkerSymbol::RgbaImage:
if (marker.image && marker.image->GetHeight() > largestMarkerHeight)
largestMarkerHeight = marker.image->GetHeight();
break;
@@ -464,27 +466,27 @@ int ViewStyle::GetFrameWidth() const noexcept {
bool ViewStyle::IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) const {
return caretLine.frame && (caretActive || caretLine.alwaysShow) &&
- ElementColour(SC_ELEMENT_CARET_LINE_BACK) &&
- (caretLine.layer == Layer::base) && lineContainsCaret;
+ ElementColour(Element::CaretLineBack) &&
+ (caretLine.layer == Layer::Base) && lineContainsCaret;
}
// See if something overrides the line background colour: Either if caret is on the line
// and background colour is set for that, or if a marker is defined that forces its background
// colour onto the line, or if a marker is defined but has no selection margin in which to
-// display itself (as long as it's not an SC_MARK_EMPTY marker). These are checked in order
+// display itself (as long as it's not an MarkerSymbol::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.
std::optional<ColourRGBA> ViewStyle::Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const {
std::optional<ColourRGBA> background;
if (!caretLine.frame && (caretActive || caretLine.alwaysShow) &&
- (caretLine.layer == Layer::base) && lineContainsCaret) {
- background = ElementColour(SC_ELEMENT_CARET_LINE_BACK);
+ (caretLine.layer == Layer::Base) && lineContainsCaret) {
+ background = ElementColour(Element::CaretLineBack);
}
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].layer == Layer::base)) {
+ if ((marks & 1) && (markers[markBit].markType == MarkerSymbol::Background) &&
+ (markers[markBit].layer == Layer::Base)) {
background = markers[markBit].back;
}
marks >>= 1;
@@ -495,7 +497,7 @@ std::optional<ColourRGBA> ViewStyle::Background(int marksOfLine, bool caretActiv
if (marksMasked) {
for (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {
if ((marksMasked & 1) &&
- (markers[markBit].layer == Layer::base)) {
+ (markers[markBit].layer == Layer::Base)) {
background = markers[markBit].back;
}
marksMasked >>= 1;
@@ -510,29 +512,29 @@ std::optional<ColourRGBA> ViewStyle::Background(int marksOfLine, bool caretActiv
}
bool ViewStyle::SelectionBackgroundDrawn() const noexcept {
- return selection.layer == Layer::base;
+ return selection.layer == Layer::Base;
}
bool ViewStyle::SelectionTextDrawn() const {
return
- ElementIsSet(SC_ELEMENT_SELECTION_TEXT) ||
- ElementIsSet(SC_ELEMENT_SELECTION_ADDITIONAL_TEXT) ||
- ElementIsSet(SC_ELEMENT_SELECTION_SECONDARY_TEXT) ||
- ElementIsSet(SC_ELEMENT_SELECTION_NO_FOCUS_TEXT);
+ ElementIsSet(Element::SelectionText) ||
+ ElementIsSet(Element::SelectionAdditionalText) ||
+ ElementIsSet(Element::SelectionSecondaryText) ||
+ ElementIsSet(Element::SelectionNoFocusText);
}
bool ViewStyle::WhitespaceBackgroundDrawn() const {
- return (viewWhitespace != WhiteSpace::invisible) && (ElementIsSet(SC_ELEMENT_WHITE_SPACE_BACK));
+ return (viewWhitespace != WhiteSpace::Invisible) && (ElementIsSet(Element::WhiteSpaceBack));
}
bool ViewStyle::WhiteSpaceVisible(bool inIndent) const noexcept {
- return (!inIndent && viewWhitespace == WhiteSpace::visibleAfterIndent) ||
- (inIndent && viewWhitespace == WhiteSpace::visibleOnlyInIndent) ||
- viewWhitespace == WhiteSpace::visibleAlways;
+ return (!inIndent && viewWhitespace == WhiteSpace::VisibleAfterIndent) ||
+ (inIndent && viewWhitespace == WhiteSpace::VisibleOnlyInIndent) ||
+ viewWhitespace == WhiteSpace::VisibleAlways;
}
ColourRGBA ViewStyle::WrapColour() const {
- return ElementColour(SC_ELEMENT_WHITE_SPACE).value_or(styles[STYLE_DEFAULT].fore);
+ return ElementColour(Element::WhiteSpace).value_or(styles[StyleDefault].fore);
}
// Insert new edge in sorted order.
@@ -546,7 +548,7 @@ void ViewStyle::AddMultiEdge(uptr_t wParam, sptr_t lParam) {
EdgeProperties(column, lParam));
}
-std::optional<ColourRGBA> ViewStyle::ElementColour(int element) const {
+std::optional<ColourRGBA> ViewStyle::ElementColour(Element element) const {
ElementMap::const_iterator search = elementColours.find(element);
if (search != elementColours.end()) {
if (search->second.has_value()) {
@@ -562,18 +564,18 @@ std::optional<ColourRGBA> ViewStyle::ElementColour(int element) const {
return {};
}
-bool ViewStyle::ElementAllowsTranslucent(int element) const {
+bool ViewStyle::ElementAllowsTranslucent(Element element) const {
return elementAllowsTranslucent.count(element) > 0;
}
-bool ViewStyle::ResetElement(int element) {
+bool ViewStyle::ResetElement(Element element) {
ElementMap::const_iterator search = elementColours.find(element);
const bool changed = (search != elementColours.end()) && (search->second.has_value());
elementColours.erase(element);
return changed;
}
-bool ViewStyle::SetElementColour(int element, ColourRGBA colour) {
+bool ViewStyle::SetElementColour(Element element, ColourRGBA colour) {
ElementMap::const_iterator search = elementColours.find(element);
const bool changed =
(search == elementColours.end()) ||
@@ -582,7 +584,7 @@ bool ViewStyle::SetElementColour(int element, ColourRGBA colour) {
return changed;
}
-bool ViewStyle::SetElementColourOptional(int element, uptr_t wParam, sptr_t lParam) {
+bool ViewStyle::SetElementColourOptional(Element element, uptr_t wParam, sptr_t lParam) {
if (wParam) {
return SetElementColour(element, ColourRGBA::FromRGB(static_cast<int>(lParam)));
} else {
@@ -590,17 +592,17 @@ bool ViewStyle::SetElementColourOptional(int element, uptr_t wParam, sptr_t lPar
}
}
-void ViewStyle::SetElementRGB(int element, int rgb) {
+void ViewStyle::SetElementRGB(Element element, int rgb) {
const ColourRGBA current = ElementColour(element).value_or(ColourRGBA(0, 0, 0, 0));
elementColours[element] = ColourRGBA(ColourRGBA(rgb), current.GetAlpha());
}
-void ViewStyle::SetElementAlpha(int element, int alpha) {
+void ViewStyle::SetElementAlpha(Element element, int alpha) {
const ColourRGBA current = ElementColour(element).value_or(ColourRGBA(0, 0, 0, 0));
elementColours[element] = ColourRGBA(current, std::min(alpha, 0xff));
}
-bool ViewStyle::ElementIsSet(int element) const {
+bool ViewStyle::ElementIsSet(Element element) const {
ElementMap::const_iterator search = elementColours.find(element);
if (search != elementColours.end()) {
return search->second.has_value();
@@ -608,7 +610,7 @@ bool ViewStyle::ElementIsSet(int element) const {
return false;
}
-bool ViewStyle::SetElementBase(int element, ColourRGBA colour) {
+bool ViewStyle::SetElementBase(Element element, ColourRGBA colour) {
ElementMap::const_iterator search = elementBaseColours.find(element);
const bool changed =
(search == elementBaseColours.end()) ||
@@ -617,34 +619,19 @@ bool ViewStyle::SetElementBase(int element, ColourRGBA colour) {
return changed;
}
-bool ViewStyle::SetWrapState(int wrapState_) noexcept {
- WrapMode wrapStateWanted;
- switch (wrapState_) {
- case SC_WRAP_WORD:
- wrapStateWanted = WrapMode::word;
- break;
- case SC_WRAP_CHAR:
- wrapStateWanted = WrapMode::character;
- break;
- case SC_WRAP_WHITESPACE:
- wrapStateWanted = WrapMode::whitespace;
- break;
- default:
- wrapStateWanted = WrapMode::none;
- break;
- }
- const bool changed = wrap.state != wrapStateWanted;
- wrap.state = wrapStateWanted;
+bool ViewStyle::SetWrapState(Wrap wrapState_) noexcept {
+ const bool changed = wrap.state != wrapState_;
+ wrap.state = wrapState_;
return changed;
}
-bool ViewStyle::SetWrapVisualFlags(int wrapVisualFlags_) noexcept {
+bool ViewStyle::SetWrapVisualFlags(WrapVisualFlag wrapVisualFlags_) noexcept {
const bool changed = wrap.visualFlags != wrapVisualFlags_;
wrap.visualFlags = wrapVisualFlags_;
return changed;
}
-bool ViewStyle::SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation_) noexcept {
+bool ViewStyle::SetWrapVisualFlagsLocation(WrapVisualLocation wrapVisualFlagsLocation_) noexcept {
const bool changed = wrap.visualFlagsLocation != wrapVisualFlagsLocation_;
wrap.visualFlagsLocation = wrapVisualFlagsLocation_;
return changed;
@@ -656,45 +643,45 @@ bool ViewStyle::SetWrapVisualStartIndent(int wrapVisualStartIndent_) noexcept {
return changed;
}
-bool ViewStyle::SetWrapIndentMode(int wrapIndentMode_) noexcept {
+bool ViewStyle::SetWrapIndentMode(WrapIndentMode wrapIndentMode_) noexcept {
const bool changed = wrap.indentMode != wrapIndentMode_;
wrap.indentMode = wrapIndentMode_;
return changed;
}
bool ViewStyle::IsBlockCaretStyle() const noexcept {
- return ((caret.style & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) ||
- (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) != 0;
+ return ((caret.style & CaretStyle::InsMask) == CaretStyle::Block) ||
+ (FlagSet(caret.style, CaretStyle::OverstrikeBlock)) != 0;
}
bool ViewStyle::IsCaretVisible() const noexcept {
- return caret.width > 0 && caret.style != CARETSTYLE_INVISIBLE;
+ return caret.width > 0 && caret.style != CaretStyle::Invisible;
}
bool ViewStyle::DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOverride) const noexcept {
- if (caret.style & CARETSTYLE_BLOCK_AFTER)
+ if (FlagSet(caret.style, CaretStyle::BlockAfter))
return false;
- return ((caret.style & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) ||
- (inOverstrike && (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) != 0) ||
+ return ((caret.style & CaretStyle::InsMask) == CaretStyle::Block) ||
+ (inOverstrike && (FlagSet(caret.style, CaretStyle::OverstrikeBlock)) != 0) ||
imeCaretBlockOverride;
}
ViewStyle::CaretShape ViewStyle::CaretShapeForMode(bool inOverstrike) const noexcept {
if (inOverstrike) {
- return (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) ? CaretShape::block : CaretShape::bar;
+ return (FlagSet(caret.style, CaretStyle::OverstrikeBlock)) ? CaretShape::block : CaretShape::bar;
}
- const int caretStyle = caret.style & CARETSTYLE_INS_MASK;
- return (caretStyle <= CARETSTYLE_BLOCK) ? static_cast<CaretShape>(caretStyle) : CaretShape::line;
+ const CaretStyle caretStyle = caret.style & CaretStyle::InsMask;
+ return (caretStyle <= CaretStyle::Block) ? static_cast<CaretShape>(caretStyle) : CaretShape::line;
}
void ViewStyle::AllocStyles(size_t sizeNew) {
size_t i=styles.size();
styles.resize(sizeNew);
- if (styles.size() > STYLE_DEFAULT) {
+ if (styles.size() > StyleDefault) {
for (; i<sizeNew; i++) {
- if (i != STYLE_DEFAULT) {
- styles[i].ClearTo(styles[STYLE_DEFAULT]);
+ if (i != StyleDefault) {
+ styles[i].ClearTo(styles[StyleDefault]);
}
}
}