diff options
author | Pablo Vazquez <pablo@blender.org> | 2021-10-15 03:51:17 +0300 |
---|---|---|
committer | Pablo Vazquez <pablo@blender.org> | 2021-10-15 03:54:10 +0300 |
commit | 3ccdee75328bf8c5f0846f27d66407fcef0ee3e9 (patch) | |
tree | acb50d3e066a349c1a212444586154edc12a48eb /source | |
parent | 2055ef107a7cb4e5aeeffb5ccc8a2908a59cd7d0 (diff) |
UI: View2D: Align vertical indicators to view
In editors with vertical scale indicators, such as Graph Editor,
Drivers, or VSE, display the values aligned to the view.
Also add a shadow (similar to the 3D View info) to improve readability when the text is on top of curves, strips, or other content.
{F10987240, size=full}
Reviewed By: Severin
Differential Revision: https://developer.blender.org/D12809
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/interface/view2d_draw.c | 20 | ||||
m--------- | source/tools | 0 |
2 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/editors/interface/view2d_draw.c b/source/blender/editors/interface/view2d_draw.c index fd4dba30c1c..a4b37e571d7 100644 --- a/source/blender/editors/interface/view2d_draw.c +++ b/source/blender/editors/interface/view2d_draw.c @@ -394,29 +394,33 @@ static void draw_vertical_scale_indicators(const ARegion *region, const int font_id = BLF_default(); UI_FontThemeColor(font_id, colorid); - BLF_enable(font_id, BLF_ROTATION); - BLF_rotation(font_id, M_PI_2); - BLF_batch_draw_begin(); - const float xpos = rect->xmax - 2.0f * UI_DPI_FAC; + BLF_enable(font_id, BLF_SHADOW); + const float shadow_color[4] = {0.0f, 0.0f, 0.0f, 1.0f}; + BLF_shadow(font_id, 5, shadow_color); + BLF_shadow_offset(font_id, 1, -1); + + const float x_offset = 8.0f; + const float xpos = (rect->xmin + x_offset) * UI_DPI_FAC; const float ymin = rect->ymin; const float ymax = rect->ymax; + const float y_offset = (BLF_height_max(font_id) / 2.0f) - U.pixelsize; for (uint i = 0; i < steps; i++) { const float ypos_view = start + i * distance; const float ypos_region = UI_view2d_view_to_region_y(v2d, ypos_view + display_offset); char text[32]; to_string(to_string_data, ypos_view, distance, sizeof(text), text); - const float text_width = BLF_width(font_id, text, strlen(text)); - if (ypos_region - text_width / 2.0f >= ymin && ypos_region + text_width / 2.0f <= ymax) { - BLF_draw_default(xpos, ypos_region - text_width / 2.0f, 0.0f, text, sizeof(text)); + if (ypos_region - y_offset >= ymin && ypos_region + y_offset <= ymax) { + BLF_draw_default(xpos, ypos_region - y_offset, 0.0f, text, sizeof(text)); } } + BLF_disable(font_id, BLF_SHADOW); + BLF_batch_draw_end(); - BLF_disable(font_id, BLF_ROTATION); GPU_matrix_pop_projection(); } diff --git a/source/tools b/source/tools -Subproject 01f51a0e551ab730f0934dc6488613690ac4bf8 +Subproject 5061594ee62b8eabf705443a5483c7a1dfaa878 |