diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-11-14 16:05:54 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-11-14 16:05:54 +0300 |
commit | 1386a4a0f2b03f44f123381448240652788cca29 (patch) | |
tree | bddd06f4a45fac219ede15a0f7156a27dc813171 | |
parent | 69a04c61402cf4e09927640d2588764bcfd2a357 (diff) |
Gizmo: get background color based on view option
-rw-r--r-- | source/blender/editors/include/ED_view3d.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c | 31 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_utils.c | 19 |
3 files changed, 43 insertions, 8 deletions
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 35c92c3561b..f0c805eea8d 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -107,6 +107,7 @@ enum eV3DCursorOrient { V3D_CURSOR_ORIENT_GEOM, }; +void ED_view3d_background_color_get(const struct Scene *scene, const struct View3D *v3d, float r_color[3]); struct View3DCursor *ED_view3d_cursor3d_get(struct Scene *scene, struct View3D *v3d); void ED_view3d_cursor3d_calc_mat3(const struct Scene *scene, const struct View3D *v3d, float mat[3][3]); void ED_view3d_cursor3d_calc_mat4(const struct Scene *scene, const struct View3D *v3d, float mat[4][4]); diff --git a/source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c b/source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c index 3ea563fb918..acffb29c82a 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c @@ -184,7 +184,10 @@ static void draw_xyz_wire( static void axis_geom_draw( const wmGizmo *gz, const float color[4], const bool UNUSED(select), - /* Needed for screen-aligned font drawing. */ +#ifdef USE_FADE_BACKGROUND + const float color_bg[3], +#endif + /* Matrix is needed for screen-aligned font drawing. */ const float matrix_final[4][4]) { GPU_line_width(gz->line_width); @@ -253,11 +256,6 @@ static void axis_geom_draw( } } -#ifdef USE_FADE_BACKGROUND - float color_bg[3]; - UI_GetThemeColor3fv(TH_HIGH_GRAD, color_bg); -#endif - for (int axis_index = 0; axis_index < ARRAY_SIZE(axis_order); axis_index++) { const int index = axis_order[axis_index].index; const int axis = axis_order[axis_index].axis; @@ -376,7 +374,7 @@ static void axis_geom_draw( } static void axis3d_draw_intern( - const bContext *UNUSED(C), wmGizmo *gz, + const bContext *C, wmGizmo *gz, const bool select, const bool highlight) { const float *color = highlight ? gz->color_hi : gz->color; @@ -394,8 +392,25 @@ static void axis3d_draw_intern( GPU_matrix_push(); GPU_matrix_mul(matrix_final); +#ifdef USE_FADE_BACKGROUND + float color_bg[3]; + if (select == false) { + ED_view3d_background_color_get(CTX_data_scene(C), CTX_wm_view3d(C), color_bg); + } + else { + zero_v3(color_bg); + } +#else + UNUSED_VARS(C); +#endif + GPU_blend(true); - axis_geom_draw(gz, color, select, matrix_final); + axis_geom_draw( + gz, color, select, +#ifdef USE_FADE_BACKGROUND + color_bg, +#endif + matrix_final); GPU_blend(false); GPU_matrix_pop(); } diff --git a/source/blender/editors/space_view3d/view3d_utils.c b/source/blender/editors/space_view3d/view3d_utils.c index 9b006bf4d9b..022fccd7ce7 100644 --- a/source/blender/editors/space_view3d/view3d_utils.c +++ b/source/blender/editors/space_view3d/view3d_utils.c @@ -36,6 +36,7 @@ #include "DNA_curve_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -65,6 +66,8 @@ #include "ED_screen.h" #include "ED_view3d.h" +#include "UI_resources.h" + #include "view3d_intern.h" /* own include */ /* -------------------------------------------------------------------- */ @@ -72,6 +75,22 @@ * * \{ */ +void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float r_color[3]) +{ + switch (v3d->shading.background_type) { + case V3D_SHADING_BACKGROUND_WORLD: + copy_v3_v3(r_color, &scene->world->horr); + break; + case V3D_SHADING_BACKGROUND_VIEWPORT: + copy_v3_v3(r_color, v3d->shading.background_color); + break; + case V3D_SHADING_BACKGROUND_THEME: + default: + UI_GetThemeColor3fv(TH_HIGH_GRAD, r_color); + break; + } +} + View3DCursor *ED_view3d_cursor3d_get(Scene *scene, View3D *v3d) { if (v3d && v3d->localvd) { |