[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27853] trunk/blender: Fix [#21711] Position of 2d cursor is not displayed correctly and cannot be set

Matt Ebb matt at mke3.net
Tue Mar 30 07:52:06 CEST 2010


Revision: 27853
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27853
Author:   broken
Date:     2010-03-30 07:52:05 +0200 (Tue, 30 Mar 2010)

Log Message:
-----------
Fix [#21711] Position of 2d cursor is not displayed correctly and cannot be set 
in uv/image editor properties panel

Note: Moved UV editor 2d cursor to SpaceImage rather than View2d, so it's 
more accessible to RNA.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_image.py
    trunk/blender/source/blender/editors/mesh/meshtools.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/transform/transform_generics.c
    trunk/blender/source/blender/editors/uvedit/uvedit_draw.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/makesdna/DNA_view2d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/release/scripts/ui/space_image.py
===================================================================
--- trunk/blender/release/scripts/ui/space_image.py	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/release/scripts/ui/space_image.py	2010-03-30 05:52:05 UTC (rev 27853)
@@ -459,6 +459,9 @@
         if show_uvedit:
 
             col = layout.column()
+            col.prop(uvedit, "cursor_location")
+
+            col = layout.column()
             col.label(text="UVs:")
             row = col.row()
             if wide_ui:

Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c	2010-03-30 05:52:05 UTC (rev 27853)
@@ -1286,11 +1286,6 @@
 		cent_vec[1] = face_cent[1];
 	}
 
-	/*
-	G.v2d->cursor[0] = mirrCent[0];
-	G.v2d->cursor[1] = mirrCent[1];
-	*/
-
 	/* TODO - Optimize */
 	{
 		EditFace *efa;

Modified: trunk/blender/source/blender/editors/space_image/image_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-03-30 05:52:05 UTC (rev 27853)
@@ -81,7 +81,6 @@
 #define B_REDR				1
 #define B_IMAGECHANGED		2
 #define B_TRANS_IMAGE		3
-#define B_CURSOR_IMAGE		4
 #define B_NOP				0
 #define B_TWINANIM			5
 #define B_SIMAGETILE		6
@@ -109,7 +108,6 @@
 
 /* proto */
 static void image_editvertex_buts(const bContext *C, uiBlock *block);
-static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block);
 
 
 static void do_image_panel_events(bContext *C, void *arg, int event)
@@ -123,9 +121,6 @@
 		case B_TRANS_IMAGE:
 			image_editvertex_buts(C, NULL);
 			break;
-		case B_CURSOR_IMAGE:
-			image_editcursor_buts(C, &ar->v2d, NULL);
-			break;
 	}
 
 	/* all events now */
@@ -316,41 +311,6 @@
 
 
 /* is used for both read and write... */
-static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block)
-{
-	SpaceImage *sima= CTX_wm_space_image(C);
-	static float ocent[2];
-	int imx= 256, imy= 256;
-	int step, digits;
-	
-	image_transform_but_attr(sima, &imx, &imy, &step, &digits);
-		
-	if(block) {	// do the buttons
-		ocent[0]= v2d->cursor[0];
-		ocent[1]= v2d->cursor[1];
-		if (sima->flag & SI_COORDFLOATS) {
-		} else {
-			ocent[0] *= imx;
-			ocent[1] *= imy;
-		}
-		
-		uiBlockBeginAlign(block);
-		uiDefButF(block, NUM, B_CURSOR_IMAGE, "Cursor X:",	165, 120, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, "");
-		uiDefButF(block, NUM, B_CURSOR_IMAGE, "Cursor Y:",	165, 100, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, "");
-		uiBlockEndAlign(block);
-	}
-	else {	// apply event
-		if (sima->flag & SI_COORDFLOATS) {
-			v2d->cursor[0]= ocent[0];
-			v2d->cursor[1]= ocent[1];
-		}
-		else {
-			v2d->cursor[0]= ocent[0]/imx;
-			v2d->cursor[1]= ocent[1]/imy;
-		}
-		WM_event_add_notifier(C, NC_IMAGE, sima->image);
-	}
-}
 
 static int image_panel_poll(const bContext *C, PanelType *pt)
 {
@@ -1002,19 +962,20 @@
 	uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
 
 	image_editvertex_buts(C, block);
-	image_editcursor_buts(C, &ar->v2d, block);
 }	
 
 void image_buttons_register(ARegionType *art)
 {
 	PanelType *pt;
 
+	/* editvertex_buts not working atm
 	pt= MEM_callocN(sizeof(PanelType), "spacetype image panel uv");
 	strcpy(pt->idname, "IMAGE_PT_uv");
 	strcpy(pt->label, "UV");
 	pt->draw= image_panel_uv;
 	pt->poll= image_panel_uv_poll;
 	BLI_addtail(&art->paneltypes, pt);
+	 */
 
 	pt= MEM_callocN(sizeof(PanelType), "spacetype image panel curves");
 	strcpy(pt->idname, "IMAGE_PT_curves");

Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c	2010-03-30 05:52:05 UTC (rev 27853)
@@ -1223,13 +1223,18 @@
 {
 	View2D *v2d= t->view;
 	float aspx=1.0, aspy=1.0;
+	float *cursor;
 	
-	if(t->spacetype==SPACE_IMAGE) /* only space supported right now but may change */
-		ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy);
+	if(t->spacetype==SPACE_IMAGE) {
+		SpaceImage *sima= (SpaceImage *)t->sa->spacedata.first;
+		/* only space supported right now but may change */
+		ED_space_image_uv_aspect(sima, &aspx, &aspy);
+		cursor = sima->cursor;
+	}
 	
 	if (v2d) {
-		t->center[0] = v2d->cursor[0] * aspx;
-		t->center[1] = v2d->cursor[1] * aspy;
+		t->center[0] = cursor[0] * aspx;
+		t->center[1] = cursor[1] * aspy;
 	}
 	
 	calculateCenter2D(t);

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_draw.c	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_draw.c	2010-03-30 05:52:05 UTC (rev 27853)
@@ -56,7 +56,6 @@
 
 static void drawcursor_sima(SpaceImage *sima, ARegion *ar)
 {
-	View2D *v2d= &ar->v2d;
 	float zoomx, zoomy, w, h;
 	int width, height;
 
@@ -67,7 +66,7 @@
 	h= zoomy*height/256.0f;
 	
 	cpack(0xFFFFFF);
-	glTranslatef(v2d->cursor[0], v2d->cursor[1], 0.0f);  
+	glTranslatef(sima->cursor[0], sima->cursor[1], 0.0f);  
 	fdrawline(-0.05/w, 0, 0, 0.05/h);
 	fdrawline(0, 0.05/h, 0.05/w, 0);
 	fdrawline(0.05/w, 0, 0, -0.05/h);
@@ -95,7 +94,7 @@
 	fdrawline(0, -0.020/h, 0, -0.1/h);
 	fdrawline(0, 0.1/h, 0, 0.020/h);
 	
-	glTranslatef(-v2d->cursor[0], -v2d->cursor[1], 0.0f);
+	glTranslatef(-sima->cursor[0], -sima->cursor[1], 0.0f);
 	setlinestyle(0);
 }
 

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2010-03-30 04:59:24 UTC (rev 27852)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2010-03-30 05:52:05 UTC (rev 27853)
@@ -2357,17 +2357,17 @@
 	uvco[1] = ((float)((int)((uvco[1]*h) + 0.5f)))/h;
 }
 
-static void snap_cursor_to_pixels(SpaceImage *sima, View2D *v2d)
+static void snap_cursor_to_pixels(SpaceImage *sima)
 {
 	int width= 0, height= 0;
 
 	ED_space_image_size(sima, &width, &height);
-	snap_uv_to_pixel(v2d->cursor, width, height);
+	snap_uv_to_pixel(sima->cursor, width, height);
 }
 
-static int snap_cursor_to_selection(Scene *scene, Image *ima, Object *obedit, View2D *v2d)
+static int snap_cursor_to_selection(Scene *scene, Image *ima, Object *obedit, SpaceImage *sima)
 {
-	return uvedit_center(scene, ima, obedit, v2d->cursor, 0);
+	return uvedit_center(scene, ima, obedit, sima->cursor, 0);
 }
 
 static int snap_cursor_exec(bContext *C, wmOperator *op)
@@ -2376,23 +2376,22 @@
 	Scene *scene= CTX_data_scene(C);
 	Object *obedit= CTX_data_edit_object(C);
 	Image *ima= CTX_data_edit_image(C);
-	ARegion *ar= CTX_wm_region(C);
 	int change= 0;
 
 	switch(RNA_boolean_get(op->ptr, "target")) {
 		case 0:
-			snap_cursor_to_pixels(sima, &ar->v2d);
+			snap_cursor_to_pixels(sima);
 			change= 1;
 			break;
 		case 1:
-			change= snap_cursor_to_selection(scene, ima, obedit, &ar->v2d);
+			change= snap_cursor_to_selection(scene, ima, obedit, sima);
 			break;
 	}
 
 	if(!change)
 		return OPERATOR_CANCELLED;
 	
-	ED_region_tag_redraw(ar);
+	WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, sima);
 
 	return OPERATOR_FINISHED;
 }
@@ -2420,7 +2419,7 @@
 
 /* ******************** snap selection operator **************** */
 
-static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, View2D *v2d)
+static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceImage *sima)
 {
 	EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
 	EditFace *efa;
@@ -2430,11 +2429,11 @@
 	for(efa= em->faces.first; efa; efa= efa->next) {
 		tface= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 		if(uvedit_face_visible(scene, ima, efa, tface)) {
-			if(uvedit_uv_selected(scene, efa, tface, 0))		VECCOPY2D(tface->uv[0], v2d->cursor);
-			if(uvedit_uv_selected(scene, efa, tface, 1))		VECCOPY2D(tface->uv[1], v2d->cursor);
-			if(uvedit_uv_selected(scene, efa, tface, 2))		VECCOPY2D(tface->uv[2], v2d->cursor);
+			if(uvedit_uv_selected(scene, efa, tface, 0))		VECCOPY2D(tface->uv[0], sima->cursor);
+			if(uvedit_uv_selected(scene, efa, tface, 1))		VECCOPY2D(tface->uv[1], sima->cursor);
+			if(uvedit_uv_selected(scene, efa, tface, 2))		VECCOPY2D(tface->uv[2], sima->cursor);
 			if(efa->v4)
-				if(uvedit_uv_selected(scene, efa, tface, 3))	VECCOPY2D(tface->uv[3], v2d->cursor);
+				if(uvedit_uv_selected(scene, efa, tface, 3))	VECCOPY2D(tface->uv[3], sima->cursor);
 
 			change= 1;
 		}
@@ -2614,7 +2613,6 @@
 	Scene *scene= CTX_data_scene(C);
 	Object *obedit= CTX_data_edit_object(C);
 	Image *ima= CTX_data_edit_image(C);
-	ARegion *ar= CTX_wm_region(C);
 	int change= 0;
 
 	switch(RNA_boolean_get(op->ptr, "target")) {
@@ -2622,7 +2620,7 @@
 			change= snap_uvs_to_pixels(sima, scene, obedit);
 			break;
 		case 1:
-			change= snap_uvs_to_cursor(scene, ima, obedit, &ar->v2d);
+			change= snap_uvs_to_cursor(scene, ima, obedit, sima);
 			break;
 		case 2:
 			change= snap_uvs_to_adjacent_unselected(scene, ima, obedit);
@@ -3038,14 +3036,14 @@
 
 static int set_2d_cursor_exec(bContext *C, wmOperator *op)
 {
-	ARegion *ar= CTX_wm_region(C);
+	SpaceImage *sima = CTX_wm_space_image(C);
 	float location[2];
 
 	RNA_float_get_array(op->ptr, "location", location);
-	ar->v2d.cursor[0]= location[0];
-	ar->v2d.cursor[1]= location[1];
+	sima->cursor[0]= location[0];
+	sima->cursor[1]= location[1];
 	
-	ED_area_tag_redraw(CTX_wm_area(C));
+	WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, NULL);
 	
 	return OPERATOR_FINISHED;
 }
@@ -3096,7 +3094,7 @@
 	RNA_int_get_array(op->ptr, "tile", tile);
 	ED_uvedit_set_tile(C, CTX_data_scene(C), CTX_data_edit_object(C), ima, tile[0] + ima->xrep*tile[1]);
 
-	ED_area_tag_redraw(CTX_wm_area(C));
+	WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, NULL);
 
 	return OPERATOR_FINISHED;
 }

Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h	2010-03-30 04:59:24 UTC (rev 27852)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list