diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2021-02-14 13:49:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-14 13:49:14 +0100 |
commit | cdfd3ffe15dbf6f41bdade308d69a75f3d4eb3a7 (patch) | |
tree | c99de3fd861139b3b18073605b2ee97f783f0329 /scene/gui/line_edit.cpp | |
parent | 6fb1ed2bca09e88509608a761b0ce300dd997c19 (diff) | |
parent | 1f60ac1e08ddec42e416b9fad6ed646999857b59 (diff) | |
download | redot-engine-cdfd3ffe15dbf6f41bdade308d69a75f3d4eb3a7.tar.gz |
Merge pull request #44747 from bruvzg/missing_outlines
[CTL] Add missing theme properties for outlines, fix underline scaling, and RTL cell padding.
Diffstat (limited to 'scene/gui/line_edit.cpp')
-rw-r--r-- | scene/gui/line_edit.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 654507b933..da5389dedf 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -835,6 +835,24 @@ void LineEdit::_notification(int p_what) { // Draw text. ofs.y += TS->shaped_text_get_ascent(text_rid); + Color font_outline_color = get_theme_color("font_outline_color"); + int outline_size = get_theme_constant("outline_size"); + if (outline_size > 0 && font_outline_color.a > 0) { + Vector2 oofs = ofs; + for (int i = 0; i < gl_size; i++) { + for (int j = 0; j < glyphs[i].repeat; j++) { + if (ceil(oofs.x) >= x_ofs && (oofs.x + glyphs[i].advance) <= ofs_max) { + if (glyphs[i].font_rid != RID()) { + TS->font_draw_glyph_outline(glyphs[i].font_rid, ci, glyphs[i].font_size, outline_size, oofs + Vector2(glyphs[i].x_off, glyphs[i].y_off), glyphs[i].index, font_outline_color); + } + } + oofs.x += glyphs[i].advance; + } + if (oofs.x >= ofs_max) { + break; + } + } + } for (int i = 0; i < gl_size; i++) { bool selected = selection.enabled && glyphs[i].start >= selection.begin && glyphs[i].end <= selection.end; for (int j = 0; j < glyphs[i].repeat; j++) { |