[Bf-blender-cvs] [0d0948b] wiggly-widgets: Tweaking colors again, yellow highlight color was a bit too aggressive

Julian Eisel noreply at git.blender.org
Mon Aug 24 16:17:42 CEST 2015


Commit: 0d0948bf90c9c01f04d117e60603d911b0c08a64
Author: Julian Eisel
Date:   Mon Aug 24 16:10:48 2015 +0200
Branches: wiggly-widgets
https://developer.blender.org/rB0d0948bf90c9c01f04d117e60603d911b0c08a64

Tweaking colors again, yellow highlight color was a bit too aggressive

Instead, we now draw the manipulator with some transparency and without if highlighted. This also helps making the manipulator not so 'in your face'-ish.

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

M	source/blender/editors/object/object_lamp.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/transform/manipulator_widget.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_generic_widgets.c

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

diff --git a/source/blender/editors/object/object_lamp.c b/source/blender/editors/object/object_lamp.c
index 3602e35..a37b2bc 100644
--- a/source/blender/editors/object/object_lamp.c
+++ b/source/blender/editors/object/object_lamp.c
@@ -217,6 +217,7 @@ int WIDGETGROUP_lamp_poll(const struct bContext *C, struct wmWidgetGroupType *UN
 void WIDGETGROUP_lamp_draw(const struct bContext *C, struct wmWidgetGroup *wgroup)
 {
 	float color_lamp[4] = {0.5f, 0.5f, 1.0f, 1.0f};
+	float color_hi_lamp[4] = {0.8f, 0.8f, 0.45f, 1.0f};
 	Object *ob = CTX_data_active_object(C);
 	Lamp *la = ob->data;
 	wmWidget *widget;
@@ -226,7 +227,7 @@ void WIDGETGROUP_lamp_draw(const struct bContext *C, struct wmWidgetGroup *wgrou
 
 	widget = WIDGET_arrow_new(wgroup, propname, WIDGET_ARROW_STYLE_INVERTED);
 
-	WIDGET_arrow_set_color(widget, color_lamp);
+	WIDGET_arrow_set_color(widget, color_lamp, color_hi_lamp);
 	
 	RNA_pointer_create(&la->id, &RNA_Lamp, la, &ptr);
 	WM_widget_set_origin(widget, ob->obmat[3]);
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 9278ab5..fa4a840 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -742,6 +742,7 @@ static int WIDGETGROUP_camera_poll(const struct bContext *C, struct wmWidgetGrou
 static void WIDGETGROUP_camera_draw(const struct bContext *C, struct wmWidgetGroup *wgroup)
 {
 	float color_camera[4] = {1.0f, 0.3f, 0.0f, 1.0f};
+	float color_hi_camera[4] = {1.0f, 0.3f, 0.0f, 1.0f};
 	Object *ob = CTX_data_active_object(C);
 	Camera *ca = ob->data;
 	wmWidget *widget;
@@ -752,7 +753,7 @@ static void WIDGETGROUP_camera_draw(const struct bContext *C, struct wmWidgetGro
 	widget = WIDGET_arrow_new(wgroup, propname, WIDGET_ARROW_STYLE_CROSS);
 	WM_widget_set_draw_on_hover_only(widget, true);
 	WM_widget_set_3d_scale(widget, false);
-	WIDGET_arrow_set_color(widget, color_camera);
+	WIDGET_arrow_set_color(widget, color_camera, color_hi_camera);
 	
 	RNA_pointer_create(&ca->id, &RNA_Camera, ca, &cameraptr);
 	WM_widget_set_origin(widget, ob->obmat[3]);
diff --git a/source/blender/editors/transform/manipulator_widget.c b/source/blender/editors/transform/manipulator_widget.c
index 4551212..0be15a7 100644
--- a/source/blender/editors/transform/manipulator_widget.c
+++ b/source/blender/editors/transform/manipulator_widget.c
@@ -317,13 +317,16 @@ static bool manipulator_is_axis_visible(const View3D *v3d, const RegionView3D *r
 	return false;
 }
 
-static void manipulator_get_axis_color(const RegionView3D *rv3d, const int axis_idx, float r_col[4])
+static void manipulator_get_axis_color(const RegionView3D *rv3d, const int axis_idx, float r_col[4], float r_col_hi[4])
 {
 	const float idot = rv3d->tw_idot[manipulator_index_normalize(axis_idx)];
+	/* alpha values for normal/highlighted states */
+	const float alpha = 0.6f;
+	const float alpha_hi = 1.0f;
 	/* get alpha fac based on axis angle, to fade axis out when hiding it because it points towards view */
-	const float alpha = (idot > TW_AXIS_DOT_MAX) ?
-	                     1.0f : (idot < TW_AXIS_DOT_MIN) ?
-	                     0.0f : ((idot - TW_AXIS_DOT_MIN) / (TW_AXIS_DOT_MAX - TW_AXIS_DOT_MIN));
+	float alpha_fac_view = (idot > TW_AXIS_DOT_MAX) ?
+	                        1.0f : (idot < TW_AXIS_DOT_MIN) ?
+	                        0.0f : ((idot - TW_AXIS_DOT_MIN) / (TW_AXIS_DOT_MAX - TW_AXIS_DOT_MIN));
 
 	switch (axis_idx) {
 		case MAN_AXIS_TRANS_X:
@@ -332,7 +335,6 @@ static void manipulator_get_axis_color(const RegionView3D *rv3d, const int axis_
 		case MAN_AXIS_TRANS_XY:
 		case MAN_AXIS_SCALE_XY:
 			UI_GetThemeColor4fv(TH_AXIS_X, r_col);
-			r_col[3] = alpha;
 			break;
 		case MAN_AXIS_TRANS_Y:
 		case MAN_AXIS_ROT_Y:
@@ -340,7 +342,6 @@ static void manipulator_get_axis_color(const RegionView3D *rv3d, const int axis_
 		case MAN_AXIS_TRANS_YZ:
 		case MAN_AXIS_SCALE_YZ:
 			UI_GetThemeColor4fv(TH_AXIS_Y, r_col);
-			r_col[3] = alpha;
 			break;
 		case MAN_AXIS_TRANS_Z:
 		case MAN_AXIS_ROT_Z:
@@ -348,14 +349,19 @@ static void manipulator_get_axis_color(const RegionView3D *rv3d, const int axis_
 		case MAN_AXIS_TRANS_ZX:
 		case MAN_AXIS_SCALE_ZX:
 			UI_GetThemeColor4fv(TH_AXIS_Z, r_col);
-			r_col[3] = alpha;
 			break;
 		case MAN_AXIS_TRANS_C:
 		case MAN_AXIS_ROT_C:
 		case MAN_AXIS_SCALE_C:
 			copy_v4_fl(r_col, 1.0f);
+			alpha_fac_view = 1.0f;
 			break;
 	}
+
+	copy_v4_v4(r_col_hi, r_col);
+
+	r_col[3] = alpha * alpha_fac_view;
+	r_col_hi[3] = alpha_hi * alpha_fac_view;
 }
 
 static void manipulator_get_axis_constraint(const int axis_idx, int r_axis[3])
@@ -1129,14 +1135,14 @@ void WIDGETGROUP_manipulator_draw(const struct bContext *C, struct wmWidgetGroup
 
 		PointerRNA *ptr;
 		float line_vec[2][3];
-		float col[4];
+		float col[4], col_hi[4];
 
 		if (manipulator_is_axis_visible(v3d, rv3d, axis_idx) == false) {
 			WM_widget_flag_set(axis, WM_WIDGET_HIDDEN, true);
 			continue;
 		}
 
-		manipulator_get_axis_color(rv3d, axis_idx, col);
+		manipulator_get_axis_color(rv3d, axis_idx, col, col_hi);
 		manipulator_get_axis_constraint(axis_idx, constraint_axis);
 		WM_widget_set_origin(axis, rv3d->twmat[3]);
 		/* custom handler! */
@@ -1152,7 +1158,7 @@ void WIDGETGROUP_manipulator_draw(const struct bContext *C, struct wmWidgetGroup
 				manipulator_line_vec(v3d, line_vec, axis_type);
 
 				WIDGET_arrow_set_direction(axis, rv3d->twmat[aidx_norm]);
-				WIDGET_arrow_set_color(axis, col);
+				WIDGET_arrow_set_color(axis, col, col_hi);
 				WIDGET_arrow_set_line_vec(axis, (const float (*)[3])line_vec, ARRAY_SIZE(line_vec));
 				WM_widget_set_line_width(axis, MAN_AXIS_LINE_WIDTH);
 				break;
@@ -1161,7 +1167,7 @@ void WIDGETGROUP_manipulator_draw(const struct bContext *C, struct wmWidgetGroup
 			case MAN_AXIS_ROT_Z:
 				WM_widget_set_line_width(axis, MAN_AXIS_LINE_WIDTH);
 				WIDGET_dial_set_direction(axis, rv3d->twmat[aidx_norm]);
-				WIDGET_dial_set_color(axis, col);
+				WIDGET_dial_set_color(axis, col, col_hi);
 				break;
 			case MAN_AXIS_TRANS_XY:
 			case MAN_AXIS_TRANS_YZ:
@@ -1206,7 +1212,7 @@ void WIDGETGROUP_manipulator_draw(const struct bContext *C, struct wmWidgetGroup
 					WM_widget_set_scale(axis, 0.2f);
 				}
 				WIDGET_dial_set_direction(axis, rv3d->viewinv[2]);
-				WIDGET_dial_set_color(axis, col);
+				WIDGET_dial_set_color(axis, col, col_hi);
 				break;
 		}
 
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 92153bb..28f960a 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -574,14 +574,14 @@ enum {
 };
 
 struct wmWidget *WIDGET_arrow_new(struct wmWidgetGroup *wgroup, const char *name, const int style);
-void WIDGET_arrow_set_color(struct wmWidget *widget, const float color[4]);
+void WIDGET_arrow_set_color(struct wmWidget *widget, const float color[4], const float color_highlight[4]);
 void WIDGET_arrow_set_direction(struct wmWidget *widget, const float direction[3]);
 void WIDGET_arrow_set_up_vector(struct wmWidget *widget, const float direction[3]);
 void WIDGET_arrow_set_line_vec(struct wmWidget *widget, const float (*vec)[3], const int tot_points);
 void WIDGET_arrow_set_scale(struct wmWidget *widget, const float scale);
 
 struct wmWidget *WIDGET_dial_new(struct wmWidgetGroup *wgroup, const char *name, const int style);
-void WIDGET_dial_set_color(struct wmWidget *widget, const float color[4]);
+void WIDGET_dial_set_color(struct wmWidget *widget, const float color[4], const float color_highlight[4]);
 void WIDGET_dial_set_direction(struct wmWidget *widget, const float direction[3]);
 
 struct wmWidget *WIDGET_plane_new(struct wmWidgetGroup *wgroup, const char *name, const int style);
diff --git a/source/blender/windowmanager/intern/wm_generic_widgets.c b/source/blender/windowmanager/intern/wm_generic_widgets.c
index 1f6187f..3f1ea11 100644
--- a/source/blender/windowmanager/intern/wm_generic_widgets.c
+++ b/source/blender/windowmanager/intern/wm_generic_widgets.c
@@ -161,6 +161,7 @@ typedef struct ArrowWidget {
 	float direction[3];
 	float up[3];
 	float color[4];
+	float color_highlight[4];
 	float (*line)[3];    /* custom coords for arrow line drawing */
 	int tot_line_points; /* amount of points for arrow line drawing */
 	float offset;
@@ -269,7 +270,7 @@ static void arrow_draw_intern(ArrowWidget *arrow, const bool select, const bool
 	glMultMatrixf(mat);
 
 	if (highlight && !(arrow->widget.flag & WM_WIDGET_DRAW_HOVER)) {
-		glColor4fv(highlight_col);
+		glColor4fv(arrow->color_highlight);
 	}
 	else {
 		glColor4fv(arrow->color);
@@ -546,11 +547,12 @@ wmWidget *WIDGET_arrow_new(wmWidgetGroup *wgroup, const char *name, const int st
 	return (wmWidget *)arrow;
 }
 
-void WIDGET_arrow_set_color(wmWidget *widget, const float color[4])
+void WIDGET_arrow_set_color(wmWidget *widget, const float color[4], const float color_highlight[4])
 {
 	ArrowWidget *arrow = (ArrowWidget *)widget;
 	
 	copy_v4_v4(arrow->color, color);
+	copy_v4_v4(arrow->color_highlight, color_highlight);
 }
 
 void WIDGET_arrow_set_direction(wmWidget *widget, const float direction[3])
@@ -596,6 +598,7 @@ typedef struct DialWidget {
 	int style;
 	float direction[3];
 	float color[4];
+	float color_highlight[4];
 } DialWidget;
 
 static void dial_draw_geom(const DialWidget *dial, const bool select)
@@ -638,7 +641,7 @@ static void dial_draw_intern(DialWidget *dial, const bool select, const bool hig
 	glMultMatrixf(mat);
 
 	if (highlight)
-		glColor4fv(highlight_col);
+		glColor4fv(dial->color_highlight);
 	else
 		glColor4fv(dial->color);
 
@@ -726,11 +729,12 @@ wmWidget *WIDGET_dial_new(wmWidgetGroup *wgroup, const char *name, const int sty
 	return (wmWidget *)dial;
 }
 
-void WIDGET_dial_set_color(wmWidget *widget, const float color[4])
+void WIDGET_dial_set_color(wmWidget *widget, const float color[4], const float color_highlight[4])
 {
 	DialWidget *arrow = (DialWidget *)widget;
 
 	copy_v4_v4(arrow->color, color);
+	copy_v4_v4(arrow->color_highlight, color_highlight);
 }
 
 void WIDGET_dial_set_direction(wmWidget *widget, const float direction[3])




More information about the Bf-blender-cvs mailing list