[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23107] branches/blender2.5/blender/source /blender: 2.5: UV Edit

Brecht Van Lommel brecht at blender.org
Thu Sep 10 13:04:53 CEST 2009


Revision: 23107
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23107
Author:   blendix
Date:     2009-09-10 13:04:53 +0200 (Thu, 10 Sep 2009)

Log Message:
-----------
2.5: UV Edit

* Make mirror operator and menus work.
* Added TFM_OT_mirror transform operator specific for mirror.
* Assign image from image space when unwrapping in 3d view.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c
    branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_ops.c
    branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-09-10 10:35:51 UTC (rev 23106)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-09-10 11:04:53 UTC (rev 23107)
@@ -1257,14 +1257,17 @@
 	int constraint_axis[3] = {0, 0, 0};
 	int proportional = 0;
 
-	if (t->flag & T_AUTOVALUES)
+	if (RNA_struct_find_property(op->ptr, "value"))
 	{
-		RNA_float_set_array(op->ptr, "value", t->auto_values);
+		if (t->flag & T_AUTOVALUES)
+		{
+			RNA_float_set_array(op->ptr, "value", t->auto_values);
+		}
+		else
+		{
+			RNA_float_set_array(op->ptr, "value", t->values);
+		}
 	}
-	else
-	{
-		RNA_float_set_array(op->ptr, "value", t->values);
-	}
 
 	/* XXX convert stupid flag to enum */
 	switch(t->flag & (T_PROP_EDIT|T_PROP_CONNECTED))
@@ -4145,7 +4148,10 @@
 
 		recalcData(t);
 
-		ED_area_headerprint(t->sa, "Select a mirror axis (X, Y, Z)");
+		if(t->flag & T_2D_EDIT)
+			ED_area_headerprint(t->sa, "Select a mirror axis (X, Y)");
+		else
+			ED_area_headerprint(t->sa, "Select a mirror axis (X, Y, Z)");
 	}
 
 	return 1;

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c	2009-09-10 10:35:51 UTC (rev 23106)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c	2009-09-10 11:04:53 UTC (rev 23107)
@@ -98,6 +98,7 @@
 char OP_SHRINK_FATTEN[] = "TFM_OT_shrink_fatten";
 char OP_TILT[] = "TFM_OT_tilt";
 char OP_TRACKBALL[] = "TFM_OT_trackball";
+char OP_MIRROR[] = "TFM_OT_mirror";
 
 
 TransformModeItem transform_modes[] =
@@ -111,6 +112,7 @@
 	{OP_SHRINK_FATTEN, TFM_SHRINKFATTEN},
 	{OP_TILT, TFM_TILT},
 	{OP_TRACKBALL, TFM_TRACKBALL},
+	{OP_MIRROR, TFM_MIRROR},
 	{NULL, 0}
 };
 
@@ -528,6 +530,25 @@
 	RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
 }
 
+void TFM_OT_mirror(struct wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name   = "Mirror";
+	ot->description= "Mirror selected vertices around one or more axes.";
+	ot->idname = OP_MIRROR;
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
+
+	/* api callbacks */
+	ot->invoke = transform_invoke;
+	ot->exec   = transform_exec;
+	ot->modal  = transform_modal;
+	ot->cancel  = transform_cancel;
+	ot->poll   = ED_operator_areaactive;
+
+	Properties_Proportional(ot);
+	Properties_Constraints(ot);
+}
+
 void TFM_OT_transform(struct wmOperatorType *ot)
 {
 	static EnumPropertyItem transform_mode_types[] = {
@@ -595,6 +616,7 @@
 	WM_operatortype_append(TFM_OT_shrink_fatten);
 	WM_operatortype_append(TFM_OT_tilt);
 	WM_operatortype_append(TFM_OT_trackball);
+	WM_operatortype_append(TFM_OT_mirror);
 
 	WM_operatortype_append(TFM_OT_select_orientation);
 }
@@ -699,8 +721,7 @@
 
 			km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
 
-			km = WM_keymap_add_item(keymap, "TFM_OT_transform", MKEY, KM_PRESS, 0, 0);
-			RNA_int_set(km->ptr, "mode", TFM_MIRROR);
+			km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, 0, 0);
 			break;
 		default:
 			break;

Modified: branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_ops.c	2009-09-10 10:35:51 UTC (rev 23106)
+++ branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_ops.c	2009-09-10 11:04:53 UTC (rev 23107)
@@ -942,50 +942,6 @@
 	EM_free_uv_vert_map(vmap);
 }
 
-/* ******************** mirror operator **************** */
-
-static int mirror_exec(bContext *C, wmOperator *op)
-{
-	float mat[3][3];
-	int axis;
-	
-	Mat3One(mat);
-	axis= RNA_enum_get(op->ptr, "axis");
-
-	if(axis == 'x') {
-		/* XXX initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM);
-		BIF_setSingleAxisConstraint(mat[0], " on X axis");
-		Transform(); */
-	}
-	else {
-		/* XXX initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM);
-		BIF_setSingleAxisConstraint(mat[1], " on Y axis");
-		Transform(); */
-	}
-
-	return OPERATOR_FINISHED;
-}
-
-void UV_OT_mirror(wmOperatorType *ot)
-{
-	static EnumPropertyItem axis_items[] = {
-		{'x', "MIRROR_X", 0, "Mirror X", "Mirror UVs over X axis."},
-		{'y', "MIRROR_Y", 0, "Mirror Y", "Mirror UVs over Y axis."},
-		{0, NULL, 0, NULL, NULL}};
-
-	/* identifiers */
-	ot->name= "Mirror";
-	ot->idname= "UV_OT_mirror";
-	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-	
-	/* api callbacks */
-	ot->exec= mirror_exec;
-	ot->poll= ED_operator_uvedit;
-
-	/* properties */
-	RNA_def_enum(ot->srna, "axis", axis_items, 'x', "Axis", "Axis to mirror UV locations over.");
-}
-
 /* ******************** align operator **************** */
 
 static void weld_align_uv(bContext *C, int tool)
@@ -3092,7 +3048,6 @@
 	WM_operatortype_append(UV_OT_snap_selection);
 
 	WM_operatortype_append(UV_OT_align);
-	WM_operatortype_append(UV_OT_mirror);
 	WM_operatortype_append(UV_OT_stitch);
 	WM_operatortype_append(UV_OT_weld);
 	WM_operatortype_append(UV_OT_pin);

Modified: branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2009-09-10 10:35:51 UTC (rev 23106)
+++ branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2009-09-10 11:04:53 UTC (rev 23107)
@@ -44,6 +44,7 @@
 #include "BKE_customdata.h"
 #include "BKE_depsgraph.h"
 #include "BKE_global.h"
+#include "BKE_image.h"
 #include "BKE_mesh.h"
 #include "BKE_utildefines.h"
 
@@ -75,6 +76,11 @@
 	EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
 	EditFace *efa;
 	MTFace *tf;
+	Image *ima;
+	bScreen *sc;
+	ScrArea *sa;
+	SpaceLink *slink;
+	SpaceImage *sima;
 
 	if(ED_uvedit_test(obedit)) {
 		BKE_mesh_end_editmesh(obedit->data, em);
@@ -88,10 +94,31 @@
 		BKE_mesh_end_editmesh(obedit->data, em);
 		return 0;
 	}
+
+	ima= CTX_data_edit_image(C);
+
+	if(!ima) {
+		/* no image in context in the 3d view, we find first image window .. */
+		sc= CTX_wm_screen(C);
+
+		for(sa=sc->areabase.first; sa; sa=sa->next) {
+			slink= sa->spacedata.first;
+			if(slink->spacetype == SPACE_IMAGE) {
+				sima= (SpaceImage*)slink;
+
+				ima= sima->image;
+				if(ima) {
+					if(ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE)
+						ima= NULL;
+					else
+						break;
+				}
+			}
+		}
+	}
 	
-	// XXX this image is not in context in 3d view .. only
-	// way to get would be to find the first image window?
-	ED_uvedit_assign_image(scene, obedit, CTX_data_edit_image(C), NULL);
+	if(ima)
+		ED_uvedit_assign_image(scene, obedit, ima, NULL);
 	
 	/* select new UV's */
 	for(efa=em->faces.first; efa; efa=efa->next) {

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-09-10 10:35:51 UTC (rev 23106)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-09-10 11:04:53 UTC (rev 23107)
@@ -2748,7 +2748,7 @@
 		return (rna_idproperty_find(ptr, name) != NULL);
 	}
 	else {
-		printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name);
+		// printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name);
 		return 0;
 	}
 }





More information about the Bf-blender-cvs mailing list