diff options
| author | Matthias Melcher <github@matthiasm.com> | 2022-01-30 22:14:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-30 22:14:40 +0100 |
| commit | cf4a832e6a801b46c38f6236369c74056e8f89ec (patch) | |
| tree | 6addcf54a6dc55a6ad5d5da81dddd595e0183b26 | |
| parent | 303e8de48397909751b32b0754257192f89ef7b0 (diff) | |
Adding Text_Display color variables. (#384)
| -rw-r--r-- | FL/Fl_Text_Display.H | 39 | ||||
| -rw-r--r-- | src/Fl_Text_Display.cxx | 34 |
2 files changed, 67 insertions, 6 deletions
diff --git a/FL/Fl_Text_Display.H b/FL/Fl_Text_Display.H index 375ee4eed..21f0d63d8 100644 --- a/FL/Fl_Text_Display.H +++ b/FL/Fl_Text_Display.H @@ -391,6 +391,42 @@ public: */ void textcolor(Fl_Color n) {textcolor_ = n;} + /** + Sets the underline color for style attribute ATTR_GRAMMAR. + \param color underline color + */ + void grammar_underline_color(Fl_Color color) { grammar_underline_color_ = color; } + + /** + Gets the underline color for style attribute ATTR_GRAMMAR. + \return underline color + */ + Fl_Color grammar_underline_color() const { return grammar_underline_color_;} + + /** + Sets the underline color for style attribute ATTR_SPELLING. + \param color underline color + */ + void spelling_underline_color(Fl_Color color) { spelling_underline_color_ = color; } + + /** + Gets the underline color for style attribute ATTR_SPELLING. + \return underline color + */ + Fl_Color spelling_underline_color() const { return spelling_underline_color_;} + + /** + Sets the background color for the secondary selection block. + \param color background color + */ + void secondary_selection_color(Fl_Color color) { secondary_selection_color_ = color; } + + /** + Gets the background color for the secondary selection block. + \return background color color + */ + Fl_Color secondary_selection_color() const { return secondary_selection_color_;} + int wrapped_column(int row, int column) const; int wrapped_row(int row) const; void wrap_mode(int wrap, int wrap_margin); @@ -604,6 +640,9 @@ protected: Fl_Font textfont_; Fl_Fontsize textsize_; Fl_Color textcolor_; + Fl_Color grammar_underline_color_; + Fl_Color spelling_underline_color_; + Fl_Color secondary_selection_color_; // Line number margin and width int mLineNumLeft, mLineNumWidth; diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index b26311767..1f02c34f5 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -164,6 +164,9 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l) textfont_ = FL_HELVETICA; // textfont() textsize_ = FL_NORMAL_SIZE; // textsize() textcolor_ = FL_FOREGROUND_COLOR; // textcolor() + grammar_underline_color_ = FL_RED; + spelling_underline_color_ = FL_BLUE; + secondary_selection_color_ = FL_GRAY; mLineNumLeft = 0; // XXX: UNUSED mLineNumWidth = 0; @@ -2319,17 +2322,36 @@ void Fl_Text_Display::draw_string(int style, } else { background = fl_color_average(bgbasecolor, selection_color(), 0.6f); } + } else if (style & SECONDARY_MASK) { + if (Fl::focus() == (Fl_Widget*)this) { + background = fl_color_average(bgbasecolor, secondary_selection_color(), 0.5f); + } else { + background = fl_color_average(bgbasecolor, secondary_selection_color(), 0.6f); + } } else { background = bgbasecolor; } foreground = (style & PRIMARY_MASK) ? fl_contrast(styleRec->color, background) : styleRec->color; } else if (style & PRIMARY_MASK) { - if (Fl::focus() == (Fl_Widget*)this) background = selection_color(); - else background = fl_color_average(color(), selection_color(), 0.4f); + if (Fl::focus() == (Fl_Widget*)this) { + background = selection_color(); + } else { + background = fl_color_average(color(), selection_color(), 0.4f); + } foreground = fl_contrast(textcolor(), background); } else if (style & HIGHLIGHT_MASK) { - if (Fl::focus() == (Fl_Widget*)this) background = fl_color_average(color(), selection_color(), 0.5f); - else background = fl_color_average(color(), selection_color(), 0.6f); + if (Fl::focus() == (Fl_Widget*)this) { + background = fl_color_average(color(), selection_color(), 0.5f); + } else { + background = fl_color_average(color(), selection_color(), 0.6f); + } + foreground = fl_contrast(textcolor(), background); + } else if (style & SECONDARY_MASK) { + if (Fl::focus() == (Fl_Widget*)this) { + background = secondary_selection_color(); + } else { + background = fl_color_average(color(), secondary_selection_color(), 0.4f); + } foreground = fl_contrast(textcolor(), background); } else { foreground = textcolor(); @@ -2367,10 +2389,10 @@ void Fl_Text_Display::draw_string(int style, goto DRAW_UNDERLINE; break; case ATTR_GRAMMAR: - fl_color(FL_BLUE); + fl_color(grammar_underline_color()); goto DRAW_DOTTED_UNDERLINE; case ATTR_SPELLING: - fl_color(FL_RED); + fl_color(spelling_underline_color()); DRAW_DOTTED_UNDERLINE: fl_line_style(FL_DOT, pitch); DRAW_UNDERLINE: |
