diff options
Diffstat (limited to 'src/ViewStyle.cxx')
-rw-r--r-- | src/ViewStyle.cxx | 126 |
1 files changed, 56 insertions, 70 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 56cfcf188..f5ecf84c8 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -83,13 +83,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) : markers(MARKER_MAX + 1), indicat indicatorsDynamic = source.indicatorsDynamic; indicatorsSetFore = source.indicatorsSetFore; - selColours = source.selColours; - selAdditionalForeground = source.selAdditionalForeground; - selAdditionalBackground = source.selAdditionalBackground; - selBackground2 = source.selBackground2; - selAlpha = source.selAlpha; - selAdditionalAlpha = source.selAdditionalAlpha; - selEOLFilled = source.selEOLFilled; + selection = source.selection; foldmarginColour = source.foldmarginColour; foldmarginHighlightColour = source.foldmarginHighlightColour; @@ -102,15 +96,8 @@ ViewStyle::ViewStyle(const ViewStyle &source) : markers(MARKER_MAX + 1), indicat controlCharWidth = source.controlCharWidth; selbar = source.selbar; selbarlight = source.selbarlight; - caretcolour = source.caretcolour; - additionalCaretColour = source.additionalCaretColour; - caretLineFrame = source.caretLineFrame; - showCaretLineBackground = source.showCaretLineBackground; - alwaysShowCaretLineBackground = source.alwaysShowCaretLineBackground; - caretLineBackground = source.caretLineBackground; - caretLineAlpha = source.caretLineAlpha; - caretStyle = source.caretStyle; - caretWidth = source.caretWidth; + caret = source.caret; + caretLine = source.caretLine; someStylesProtected = false; someStylesForceCase = false; leftMarginWidth = source.leftMarginWidth; @@ -148,11 +135,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) : markers(MARKER_MAX + 1), indicat ctrlCharPadding = source.ctrlCharPadding; lastSegItalicsOffset = source.lastSegItalicsOffset; - wrapState = source.wrapState; - wrapVisualFlags = source.wrapVisualFlags; - wrapVisualFlagsLocation = source.wrapVisualFlagsLocation; - wrapVisualStartIndent = source.wrapVisualStartIndent; - wrapIndentMode = source.wrapIndentMode; + wrap = source.wrap; localeName = source.localeName; } @@ -212,14 +195,14 @@ void ViewStyle::Init(size_t stylesSize_) { spaceWidth = 8; tabWidth = spaceWidth * 8; - 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; + selection.colours.fore.reset(); + selection.colours.back = ColourAlpha(0xc0, 0xc0, 0xc0); + selection.additionalForeground = ColourAlpha(0xff, 0, 0); + selection.additionalBackground = ColourAlpha(0xd7, 0xd7, 0xd7); + selection.background2 = ColourAlpha(0xb0, 0xb0, 0xb0); + selection.alpha = SC_ALPHA_NOALPHA; + selection.additionalAlpha = SC_ALPHA_NOALPHA; + selection.eolFilled = false; foldmarginColour.reset(); foldmarginHighlightColour.reset(); @@ -232,15 +215,18 @@ void ViewStyle::Init(size_t stylesSize_) { selbarlight = Platform::ChromeHighlight(); styles[STYLE_LINENUMBER].fore = ColourAlpha(0, 0, 0); styles[STYLE_LINENUMBER].back = Platform::Chrome(); - caretcolour = ColourAlpha(0, 0, 0); - additionalCaretColour = ColourAlpha(0x7f, 0x7f, 0x7f); - caretLineFrame = 0; - showCaretLineBackground = false; - alwaysShowCaretLineBackground = false; - caretLineBackground = ColourAlpha(0xff, 0xff, 0); - caretLineAlpha = SC_ALPHA_NOALPHA; - caretStyle = CARETSTYLE_LINE; - caretWidth = 1; + + caret.colour = ColourAlpha(0, 0, 0); + caret.additionalColour = ColourAlpha(0x7f, 0x7f, 0x7f); + caret.style = CARETSTYLE_LINE; + caret.width = 1; + + caretLine.background = ColourAlpha(0xff, 0xff, 0); + caretLine.show = false; + caretLine.alwaysShow = false; + caretLine.alpha = SC_ALPHA_NOALPHA; + caretLine.frame = 0; + someStylesProtected = false; someStylesForceCase = false; @@ -283,11 +269,11 @@ void ViewStyle::Init(size_t stylesSize_) { ctrlCharPadding = 3; // +3 For a blank on front and rounded edge each side lastSegItalicsOffset = 2; - wrapState = WrapMode::none; - wrapVisualFlags = 0; - wrapVisualFlagsLocation = 0; - wrapVisualStartIndent = 0; - wrapIndentMode = SC_WRAPINDENT_FIXED; + wrap.state = WrapMode::none; + wrap.visualFlags = 0; + wrap.visualFlagsLocation = 0; + wrap.visualStartIndent = 0; + wrap.indentMode = SC_WRAPINDENT_FIXED; localeName = localeNameDefault; } @@ -448,12 +434,12 @@ void ViewStyle::CalcLargestMarkerHeight() noexcept { } int ViewStyle::GetFrameWidth() const noexcept { - return std::clamp(caretLineFrame, 1, lineHeight / 3); + return std::clamp(caretLine.frame, 1, lineHeight / 3); } bool ViewStyle::IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) const noexcept { - return caretLineFrame && (caretActive || alwaysShowCaretLineBackground) && showCaretLineBackground && - (caretLineAlpha == SC_ALPHA_NOALPHA) && lineContainsCaret; + return caretLine.frame && (caretActive || caretLine.alwaysShow) && caretLine.show && + (caretLine.alpha == SC_ALPHA_NOALPHA) && lineContainsCaret; } // See if something overrides the line background colour: Either if caret is on the line @@ -464,9 +450,9 @@ bool ViewStyle::IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) cons // the colour for the highest numbered one is used. 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 = caretLineBackground; + if (!caretLine.frame && (caretActive || caretLine.alwaysShow) && caretLine.show && + (caretLine.alpha == SC_ALPHA_NOALPHA) && lineContainsCaret) { + background = caretLine.background; } if (!background && marksOfLine) { int marks = marksOfLine; @@ -494,8 +480,8 @@ std::optional<ColourAlpha> ViewStyle::Background(int marksOfLine, bool caretActi } bool ViewStyle::SelectionBackgroundDrawn() const noexcept { - return selColours.back && - ((selAlpha == SC_ALPHA_NOALPHA) || (selAdditionalAlpha == SC_ALPHA_NOALPHA)); + return selection.colours.back && + ((selection.alpha == SC_ALPHA_NOALPHA) || (selection.additionalAlpha == SC_ALPHA_NOALPHA)); } bool ViewStyle::WhitespaceBackgroundDrawn() const noexcept { @@ -553,59 +539,59 @@ bool ViewStyle::SetWrapState(int wrapState_) noexcept { wrapStateWanted = WrapMode::none; break; } - const bool changed = wrapState != wrapStateWanted; - wrapState = wrapStateWanted; + const bool changed = wrap.state != wrapStateWanted; + wrap.state = wrapStateWanted; return changed; } bool ViewStyle::SetWrapVisualFlags(int wrapVisualFlags_) noexcept { - const bool changed = wrapVisualFlags != wrapVisualFlags_; - wrapVisualFlags = wrapVisualFlags_; + const bool changed = wrap.visualFlags != wrapVisualFlags_; + wrap.visualFlags = wrapVisualFlags_; return changed; } bool ViewStyle::SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation_) noexcept { - const bool changed = wrapVisualFlagsLocation != wrapVisualFlagsLocation_; - wrapVisualFlagsLocation = wrapVisualFlagsLocation_; + const bool changed = wrap.visualFlagsLocation != wrapVisualFlagsLocation_; + wrap.visualFlagsLocation = wrapVisualFlagsLocation_; return changed; } bool ViewStyle::SetWrapVisualStartIndent(int wrapVisualStartIndent_) noexcept { - const bool changed = wrapVisualStartIndent != wrapVisualStartIndent_; - wrapVisualStartIndent = wrapVisualStartIndent_; + const bool changed = wrap.visualStartIndent != wrapVisualStartIndent_; + wrap.visualStartIndent = wrapVisualStartIndent_; return changed; } bool ViewStyle::SetWrapIndentMode(int wrapIndentMode_) noexcept { - const bool changed = wrapIndentMode != wrapIndentMode_; - wrapIndentMode = wrapIndentMode_; + const bool changed = wrap.indentMode != wrapIndentMode_; + wrap.indentMode = wrapIndentMode_; return changed; } bool ViewStyle::IsBlockCaretStyle() const noexcept { - return ((caretStyle & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) || - (caretStyle & CARETSTYLE_OVERSTRIKE_BLOCK) != 0; + return ((caret.style & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) || + (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) != 0; } bool ViewStyle::IsCaretVisible() const noexcept { - return caretWidth > 0 && caretStyle != CARETSTYLE_INVISIBLE; + return caret.width > 0 && caret.style != CARETSTYLE_INVISIBLE; } bool ViewStyle::DrawCaretInsideSelection(bool inOverstrike, bool imeCaretBlockOverride) const noexcept { - if (caretStyle & CARETSTYLE_BLOCK_AFTER) + if (caret.style & CARETSTYLE_BLOCK_AFTER) return false; - return ((caretStyle & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) || - (inOverstrike && (caretStyle & CARETSTYLE_OVERSTRIKE_BLOCK) != 0) || + return ((caret.style & CARETSTYLE_INS_MASK) == CARETSTYLE_BLOCK) || + (inOverstrike && (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) != 0) || imeCaretBlockOverride; } ViewStyle::CaretShape ViewStyle::CaretShapeForMode(bool inOverstrike) const noexcept { if (inOverstrike) { - return (caretStyle & CARETSTYLE_OVERSTRIKE_BLOCK) ? CaretShape::block : CaretShape::bar; + return (caret.style & CARETSTYLE_OVERSTRIKE_BLOCK) ? CaretShape::block : CaretShape::bar; } - const int caret = caretStyle & CARETSTYLE_INS_MASK; - return (caret <= CARETSTYLE_BLOCK) ? static_cast<CaretShape>(caret) : CaretShape::line; + const int caretStyle = caret.style & CARETSTYLE_INS_MASK; + return (caretStyle <= CARETSTYLE_BLOCK) ? static_cast<CaretShape>(caretStyle) : CaretShape::line; } void ViewStyle::AllocStyles(size_t sizeNew) { |