[Bf-blender-cvs] [a18e862] wiggly-widgets: Cleanup: Move View3D widgets into own file

Julian Eisel noreply at git.blender.org
Sun Nov 15 18:34:08 CET 2015


Commit: a18e862f7b4e3132c29de3cf60c230ad510a58e3
Author: Julian Eisel
Date:   Sun Nov 15 18:33:20 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBa18e862f7b4e3132c29de3cf60c230ad510a58e3

Cleanup: Move View3D widgets into own file

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

M	source/blender/editors/space_view3d/CMakeLists.txt
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_intern.h
A	source/blender/editors/space_view3d/view3d_widgets.c

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

diff --git a/source/blender/editors/space_view3d/CMakeLists.txt b/source/blender/editors/space_view3d/CMakeLists.txt
index 059b384..6dce019 100644
--- a/source/blender/editors/space_view3d/CMakeLists.txt
+++ b/source/blender/editors/space_view3d/CMakeLists.txt
@@ -64,6 +64,7 @@ set(SRC
 	view3d_snap.c
 	view3d_toolbar.c
 	view3d_view.c
+	view3d_widgets.c
 
 	view3d_intern.h
 )
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index b97a552..24a8721 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -730,310 +730,6 @@ static void view3d_dropboxes(void)
 	WM_dropbox_add(lb, "OBJECT_OT_group_instance_add", view3d_group_drop_poll, view3d_group_drop_copy);	
 }
 
-
-static int WIDGETGROUP_camera_poll(const struct bContext *C, struct wmWidgetGroupType *UNUSED(wgrouptype))
-{
-	Object *ob = CTX_data_active_object(C);
-
-	return (ob && ob->type == OB_CAMERA);
-}
-
-static void WIDGETGROUP_camera_create(const struct bContext *C, struct wmWidgetGroup *wgroup)
-{
-	Object *ob = CTX_data_active_object(C);
-	Camera *ca = ob->data;
-	wmWidget *widget;
-	PointerRNA cameraptr;
-	float dir[3];
-	const bool focallen_widget = true; /* TODO make optional */
-
-	RNA_pointer_create(&ca->id, &RNA_Camera, ca, &cameraptr);
-	negate_v3_v3(dir, ob->obmat[2]);
-
-	/* dof distance */
-	if (ca->flag & CAM_SHOWLIMITS) {
-		const float color[4] = {1.0f, 0.3f, 0.0f, 1.0f};
-		const float color_hi[4] = {1.0f, 0.3f, 0.0f, 1.0f};
-		const char *propname = "dof_distance";
-
-		widget = WIDGET_arrow_new(wgroup, propname, WIDGET_ARROW_STYLE_CROSS);
-		WIDGET_arrow_set_direction(widget, dir);
-		WIDGET_arrow_set_up_vector(widget, ob->obmat[1]);
-		WM_widget_set_flag(widget, WM_WIDGET_DRAW_HOVER, true);
-		WM_widget_set_flag(widget, WM_WIDGET_SCALE_3D, false);
-		WM_widget_set_colors(widget, color, color_hi);
-		WM_widget_set_origin(widget, ob->obmat[3]);
-		WM_widget_set_property(widget, ARROW_SLOT_OFFSET_WORLD_SPACE, &cameraptr, propname);
-		WM_widget_set_scale(widget, ca->drawsize);
-	}
-
-	/* focal length
-	 * - logic/calculations are similar to BKE_camera_view_frame_ex, better keep in sync */
-	if (focallen_widget) {
-		const Scene *scene = CTX_data_scene(C);
-		const bool is_ortho = (ca->type == CAM_ORTHO);
-		const float scale_fac = ca->drawsize;
-		const float half_sensor = 0.5f * ((ca->sensor_fit == CAMERA_SENSOR_FIT_VERT) ? ca->sensor_y : ca->sensor_x);
-		const float scale[3] = {1.0f / len_v3(ob->obmat[0]), 1.0f / len_v3(ob->obmat[1]), 1.0f / len_v3(ob->obmat[2])};
-		const float drawsize = is_ortho ? (0.5f * ca->ortho_scale) :
-		                                  (scale_fac / ((scale[0] + scale[1] + scale[2]) / 3.0f));
-		const float aspx = (float)scene->r.xsch * scene->r.xasp;
-		const float aspy = (float)scene->r.ysch * scene->r.yasp;
-		const int sensor_fit = BKE_camera_sensor_fit(ca->sensor_fit, aspx, aspy);
-		const char *propname = is_ortho ? "ortho_scale" : "lens";
-		const bool fit_hor = (sensor_fit == CAMERA_SENSOR_FIT_HOR);
-
-		const float color[4] = {1.0f, 1.0, 0.27f, 0.5f};
-		const float color_hi[4] = {1.0f, 1.0, 0.27f, 1.0f};
-
-		PropertyRNA *prop;
-		float offset[3], asp[2];
-		float min, max, range;
-		float step, precision; /* dummys, unused */
-
-
-		/* get aspect */
-		asp[0] = fit_hor ? 1.0 : aspx / aspy;
-		asp[1] = fit_hor ? aspy / aspx : 1.0f;
-
-		/* account for lens shifting */
-		offset[0] = ((ob->size[0] > 0.0f) ? -2.0f : 2.0f) * ca->shiftx;
-		offset[1] = 2.0f * ca->shifty;
-		offset[2] = 0.0f;
-
-		/* get property range */
-		prop = RNA_struct_find_property(&cameraptr, propname);
-		RNA_property_float_ui_range(&cameraptr, prop, &min, &max, &step, &precision);
-		range = max - min;
-
-
-		/* *** actual widget stuff *** */
-
-		widget = WIDGET_arrow_new(wgroup, propname, (WIDGET_ARROW_STYLE_CONE | WIDGET_ARROW_STYLE_CONSTRAINED));
-
-		WIDGET_arrow_set_range_fac(widget, is_ortho ? (scale_fac * range) : (drawsize * range / half_sensor));
-		WIDGET_arrow_set_direction(widget, dir);
-		WIDGET_arrow_set_up_vector(widget, ob->obmat[1]);
-		WIDGET_arrow_cone_set_aspect(widget, asp);
-		WM_widget_set_property(widget, ARROW_SLOT_OFFSET_WORLD_SPACE, &cameraptr, propname);
-		WM_widget_set_origin(widget, ob->obmat[3]);
-		WM_widget_set_offset(widget, offset);
-		WM_widget_set_scale(widget, drawsize);
-		WM_widget_set_flag(widget, WM_WIDGET_SCALE_3D, false);
-		WM_widget_set_colors(widget, color, color_hi);
-
-	}
-}
-
-static int WIDGETGROUP_forcefield_poll(const struct bContext *C, struct wmWidgetGroupType *UNUSED(wgrouptype))
-{
-	Object *ob = CTX_data_active_object(C);
-
-	return ob && ob->pd && ob->pd->forcefield;
-}
-
-static void WIDGETGROUP_forcefield_create(const struct bContext *C, struct wmWidgetGroup *wgroup)
-{
-	Object *ob = CTX_data_active_object(C);
-	PartDeflect *pd = ob->pd;
-	PointerRNA ptr;
-	wmWidget *widget;
-
-	const float size = (ob->type == OB_EMPTY) ? ob->empty_drawsize : 1.0f;
-	const float ofs[3] = {0.0f, -size, 0.0f};
-
-	const float col[4] = {0.8f, 0.8f, 0.45f, 0.5f};
-	const float col_hi[4] = {0.8f, 0.8f, 0.45f, 1.0f};
-
-
-	/* only wind effector for now */
-	if (pd->forcefield == PFIELD_WIND) {
-		widget = WIDGET_arrow_new(wgroup, "field_strength", WIDGET_ARROW_STYLE_CONSTRAINED);
-
-		RNA_pointer_create(&ob->id, &RNA_FieldSettings, pd, &ptr);
-		WIDGET_arrow_set_direction(widget, ob->obmat[2]);
-		WIDGET_arrow_set_ui_range(widget, -200.0f, 200.0f);
-		WIDGET_arrow_set_range_fac(widget, 6.0f);
-		WM_widget_set_colors(widget, col, col_hi);
-		WM_widget_set_origin(widget, ob->obmat[3]);
-		WM_widget_set_offset(widget, ofs);
-		WM_widget_set_flag(widget, WM_WIDGET_SCALE_3D, false);
-		WM_widget_set_property(widget, ARROW_SLOT_OFFSET_WORLD_SPACE, &ptr, "strength");
-	}
-}
-
-#if 0
-static int WIDGETGROUP_shapekey_poll(const struct bContext *C, struct wmWidgetGroupType *UNUSED(wgrouptype))
-{
-	Object *ob = CTX_data_active_object(C);
-
-	if (ob && ob->type == OB_MESH) {
-		Key *key = BKE_key_from_object(ob);
-		KeyBlock *kb;
-	
-		if (key == NULL)
-			return false;
-		
-		kb = BLI_findlink(&key->block, ob->shapenr - 1);
-		
-		if (kb)
-			return true;
-	}
-	return false;
-}
-
-static void WIDGETGROUP_shapekey_draw(const struct bContext *C, struct wmWidgetGroup *wgroup)
-{
-	float color_shape[4] = {1.0f, 0.3f, 0.0f, 1.0f};
-	Object *ob = CTX_data_active_object(C);
-	Key *key = BKE_key_from_object(ob);
-	KeyBlock *kb = BLI_findlink(&key->block, ob->shapenr - 1);
-	wmWidget *widget;
-	PointerRNA shapeptr;
-	float dir[3];
-
-	widget = WIDGET_arrow_new(wgroup, WIDGET_ARROW_STYLE_NORMAL);
-	WM_widget_set_3d_scale(widget, false);
-	WIDGET_arrow_set_color(widget, color_shape);
-	RNA_pointer_create(&key->id, &RNA_ShapeKey, kb, &shapeptr);
-	WM_widget_set_origin(widget, ob->obmat[3]);
-	WM_widget_set_property(widget, ARROW_SLOT_OFFSET_WORLD_SPACE, &shapeptr, "value");
-	negate_v3_v3(dir, ob->obmat[2]);
-	WIDGET_arrow_set_direction(widget, dir);
-}
-#endif
-
-/* draw facemaps depending on the selected bone in pose mode */
-#define USE_FACEMAP_FROM_BONE
-
-static int WIDGETGROUP_armature_facemaps_poll(const struct bContext *C, struct wmWidgetGroupType *UNUSED(wgrouptype))
-{
-	Object *ob = CTX_data_active_object(C);
-
-#ifdef USE_FACEMAP_FROM_BONE
-	if (ob && BKE_object_pose_context_check(ob)) {
-		bPoseChannel *pchan;
-		for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
-			if (pchan->fmap_object && pchan->fmap) {
-				return true;
-			}
-		}
-	}
-#else
-	if (ob && ob->type == OB_MESH && ob->fmaps.first) {
-		ModifierData *md;
-		VirtualModifierData virtualModifierData;
-	
-		md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
-	
-		/* exception for shape keys because we can edit those */
-		for (; md; md = md->next) {
-			if (modifier_isEnabled(CTX_data_scene(C), md, eModifierMode_Realtime) &&
-			    md->type == eModifierType_Armature)
-			{
-				ArmatureModifierData *amd = (ArmatureModifierData *) md;
-				if (amd->object && (amd->deformflag & ARM_DEF_FACEMAPS))
-					return true;
-			}
-		}
-	}
-#endif
-
-	return false;
-}
-
-static void WIDGET_armature_facemaps_select(bContext *C, wmWidget *widget, const int action)
-{
-	Object *ob = CTX_data_active_object(C);
-	bPoseChannel *pchan;
-
-	switch (action) {
-		case SEL_SELECT:
-			for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
-				if (pchan->fmap == WIDGET_facemap_get_fmap(widget)) {
-					ED_pose_bone_select(ob, pchan, true);
-				}
-			}
-			break;
-		default:
-			BLI_assert(0);
-	}
-}
-
-static void WIDGETGROUP_armature_facemaps_create(const struct bContext *C, struct wmWidgetGroup *wgroup)
-{
-	Object *ob = CTX_data_active_object(C);
-	bArmature *arm = (bArmature *)ob->data;
-	wmWidget *widget;
-	PointerRNA famapptr;
-	PropertyRNA *prop;
-
-	const float color_shape[4] = {1.0f, 0.3f, 0.0f, 1.0f};
-
-
-#ifdef USE_FACEMAP_FROM_BONE
-	bPoseChannel *pchan;
-
-	for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
-		if (pchan->fmap && (pchan->bone->layer & arm->layer)) {
-			Object *fmap_ob = pchan->fmap_object;
-			bFaceMap *fmap = pchan->fmap;
-			PointerRNA *opptr;
-
-			widget = WIDGET_facemap_new(wgroup, fmap->name, 0, fmap_ob, BLI_findindex(&fmap_ob->fmaps, fmap));
-
-			RNA_pointer_create(&fmap_ob->id, &RNA_FaceMap, fmap, &famapptr);
-			WM_widget_set_operator(widget, "TRANSFORM_OT_translate");
-			WM_widget_set_colors(widget, color_shape, color_shape);
-			WM_widget_set_flag(widget, WM_WIDGET_DRAW_HOVER, true);
-			WM_widget_set_func_select(widget, WIDGET_armature_facemaps_select);
-			opptr = WM_widget_set_operator(widget, "TRANSFORM_OT_translate");
-			if ((prop = RNA_struct_find_property(opptr, "release_confirm"))) {
-				RNA_property_boolean_set(opptr, prop, true);
-			}
-		}
-	}
-#else
-	Object *armature;
-	ModifierData *md;
-	VirtualModifierData virtualModifierData;
-	int index = 0;
-	bFaceMap *fmap = ob->fmaps.first;
-
-
-	md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
-	
-	/* exception for shape keys because we can edit those */
-	for (; md; md = md->next) {
-		if (modifier_isEnabled(CTX_data_scene(C), md, eModifierMode_Realtime) && md->type == eModi

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list