[Bf-blender-cvs] [1386a4a0f2b] blender2.8: Gizmo: get background color based on view option

Campbell Barton noreply at git.blender.org
Wed Nov 14 14:06:53 CET 2018


Commit: 1386a4a0f2b03f44f123381448240652788cca29
Author: Campbell Barton
Date:   Thu Nov 15 00:05:54 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB1386a4a0f2b03f44f123381448240652788cca29

Gizmo: get background color based on view option

===================================================================

M	source/blender/editors/include/ED_view3d.h
M	source/blender/editors/space_view3d/view3d_gizmo_navigate_type.c
M	source/blender/editors/space_view3d/view3d_utils.c

===================================================================

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) {



More information about the Bf-blender-cvs mailing list