From 016d5cf919481b18917656a774c015fd645a35bb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 2 Jul 2019 01:47:51 +1000 Subject: Gizmo: support for filled circle with inner non-zero radius Needed for changes to the scale gizmo. --- .../gizmo_library/gizmo_types/dial3d_gizmo.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/gizmo_library') diff --git a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c index 31e30a0dd1a..6d8ab096a26 100644 --- a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c +++ b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c @@ -129,7 +129,26 @@ static void dial_geom_draw(const float color[4], immUniformColor4fv(color); if (filled) { - imm_draw_circle_fill_2d(pos, 0, 0, 1.0, DIAL_RESOLUTION); + if (arc_partial_angle == 0.0f) { + if (arc_inner_factor == 0.0f) { + imm_draw_circle_fill_2d(pos, 0, 0, 1.0, DIAL_RESOLUTION); + } + else { + imm_draw_disk_partial_fill_2d( + pos, 0, 0, arc_inner_factor, 1.0f, DIAL_RESOLUTION, 0, RAD2DEGF(M_PI * 2)); + } + } + else { + float arc_partial_deg = RAD2DEGF((M_PI * 2) - arc_partial_angle); + imm_draw_disk_partial_fill_2d(pos, + 0, + 0, + arc_inner_factor, + 1.0f, + DIAL_RESOLUTION, + -arc_partial_deg / 2, + arc_partial_deg); + } } else { if (arc_partial_angle == 0.0f) { -- cgit v1.2.3