[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18445] branches/blender2.5/blender/source /blender/editors: 2.5

Martin Poirier theeth at yahoo.com
Sat Jan 10 19:33:17 CET 2009


Revision: 18445
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18445
Author:   theeth
Date:     2009-01-10 19:33:16 +0100 (Sat, 10 Jan 2009)

Log Message:
-----------
2.5

Transform draw callback: constraints, snapping, prop circle

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/editors/transform/transform.h
    branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_snap.c

Modified: branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h	2009-01-10 18:33:16 UTC (rev 18445)
@@ -116,11 +116,6 @@
 char * BIF_menustringTransformOrientation(char *title); /* the returned value was allocated and needs to be freed after use */
 int BIF_countTransformOrientation();
 
-/* Drawing callbacks */
-void BIF_drawConstraint(void);
-void BIF_drawPropCircle(void);
-void BIF_drawSnap(void);
-
 void BIF_getPropCenter(float *center);
 
 void BIF_TransformSetUndo(char *str);

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-01-10 18:33:16 UTC (rev 18445)
@@ -83,6 +83,8 @@
 int view3d_test_clipping(struct View3D *v3d, float *vec);
 void view3d_align_axis_to_vector(struct Scene *scene, struct View3D *v3d, int axisidx, float vec[3]);
 
+void drawcircball(int mode, float *cent, float rad, float tmat[][4]);
+
 /* backbuffer select and draw support */
 struct ImBuf *view3d_read_backbuf(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
 unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, short mval[2], int size, unsigned int min, unsigned int max, int *dist, short strict, unsigned int (*indextest)(unsigned int index));

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2009-01-10 18:33:16 UTC (rev 18445)
@@ -86,7 +86,6 @@
 /* drawobject.c */
 void draw_object(Scene *scene, struct ARegion *ar, View3D *v3d, Base *base, int flag);
 int draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, int dt);
-void drawcircball(int mode, float *cent, float rad, float tmat[][4]);
 void draw_object_instance(Scene *scene, View3D *v3d, Object *ob, int dt, int outline);
 void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob);
 void drawaxes(float size, int flag, char drawtype);

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-10 18:33:16 UTC (rev 18445)
@@ -99,6 +99,8 @@
 #include "ED_view3d.h"
 #include "ED_screen.h"
 #include "ED_util.h"
+#include "ED_space_api.h"
+
 #include "UI_view2d.h"
 #include "WM_types.h"
 #include "WM_api.h"
@@ -115,15 +117,6 @@
 
 #include "transform.h"
 
-/******************************** Helper functions ************************************/
-
-/* GLOBAL Wrapper Fonctions */
-
-//void BIF_drawSnap()
-//{
-//	drawSnapping(&Trans);
-//}
-
 /* ************************** Dashed help line **************************** */
 
 
@@ -959,6 +952,15 @@
 	return success;
 }
 
+void drawTransform(const struct bContext *C, struct ARegion *ar, void *arg)
+{
+	TransInfo *t = arg;
+	
+	drawConstraint(t);
+	drawPropCircle(t);
+	drawSnapping(t);
+}
+
 void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
 {
 	RNA_int_set(op->ptr, "mode", t->mode);
@@ -988,6 +990,8 @@
 		//calc_manipulator_stats(curarea);
 		Mat3CpyMat4(t->spacemtx, v3d->twmat);
 		Mat3Ortho(t->spacemtx);
+		
+		t->draw_handle = ED_region_draw_cb_activate(t->ar->type, drawTransform, t, REGION_DRAW_POST);
 	}
 	else
 		Mat3One(t->spacemtx);

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.h	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.h	2009-01-10 18:33:16 UTC (rev 18445)
@@ -241,6 +241,7 @@
 	struct Scene	*scene;
     short       mval[2];        /* current mouse position               */
     struct Object   *obedit;
+    void		*draw_handle;
 } TransInfo;
 
 
@@ -427,6 +428,9 @@
 void initAlign(TransInfo *t);
 int Align(TransInfo *t, short mval[2]);
 
+
+void drawPropCircle(TransInfo *t);
+
 /*********************** transform_conversions.c ********** */
 struct ListBase;
 void flushTransGPactionData(TransInfo *t);
@@ -456,6 +460,8 @@
 
 /*********************** Constraints *****************************/
 
+void drawConstraint(TransInfo *t);
+
 void getConstraintMatrix(TransInfo *t);
 void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[]);
 void setLocalConstraint(TransInfo *t, int mode, const char text[]);
@@ -522,7 +528,7 @@
 void postTrans (TransInfo *t);
 void resetTransRestrictions(TransInfo *t);
 
-void drawLine(float *center, float *dir, char axis, short options);
+void drawLine(TransInfo *t, float *center, float *dir, char axis, short options);
 
 TransDataCurveHandleFlags *initTransDataCurveHandes(TransData *td, struct BezTriple *bezt);
 

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c	2009-01-10 18:33:16 UTC (rev 18445)
@@ -76,14 +76,14 @@
 
 #include "BLI_arithb.h"
 
-//#include "BDR_drawobject.h"	/* drawcircball	*/
-//
 //#include "blendef.h"
 //
 //#include "mydevice.h"
 
 #include "WM_types.h"
+#include "UI_resources.h"
 
+
 #include "transform.h"
 
 static void drawObjectConstraint(TransInfo *t);
@@ -676,9 +676,8 @@
 
 /*----------------- DRAWING CONSTRAINTS -------------------*/
 
-void BIF_drawConstraint(void)
+void drawConstraint(TransInfo *t)
 {
-	TransInfo *t = BIF_GetTransInfo();
 	TransCon *tc = &(t->con);
 
 	if (t->spacetype!=SPACE_VIEW3D)
@@ -705,9 +704,9 @@
 			convertViewVec(t, vec, (short)(t->mval[0] - t->con.imval[0]), (short)(t->mval[1] - t->con.imval[1]));
 			VecAddf(vec, vec, tc->center);
 
-			drawLine(tc->center, tc->mtx[0], 'x', 0);
-			drawLine(tc->center, tc->mtx[1], 'y', 0);
-			drawLine(tc->center, tc->mtx[2], 'z', 0);
+			drawLine(t, tc->center, tc->mtx[0], 'x', 0);
+			drawLine(t, tc->center, tc->mtx[1], 'y', 0);
+			drawLine(t, tc->center, tc->mtx[2], 'z', 0);
 
 			glColor3ubv((GLubyte *)col2);
 			
@@ -724,44 +723,53 @@
 		}
 
 		if (tc->mode & CON_AXIS0) {
-			drawLine(tc->center, tc->mtx[0], 'x', DRAWLIGHT);
+			drawLine(t, tc->center, tc->mtx[0], 'x', DRAWLIGHT);
 		}
 		if (tc->mode & CON_AXIS1) {
-			drawLine(tc->center, tc->mtx[1], 'y', DRAWLIGHT);
+			drawLine(t, tc->center, tc->mtx[1], 'y', DRAWLIGHT);
 		}
 		if (tc->mode & CON_AXIS2) {
-			drawLine(tc->center, tc->mtx[2], 'z', DRAWLIGHT);
+			drawLine(t, tc->center, tc->mtx[2], 'z', DRAWLIGHT);
 		}
 	}
 }
 
 /* called from drawview.c, as an extra per-window draw option */
-void BIF_drawPropCircle()
+void drawPropCircle(TransInfo *t)
 {
-	TransInfo *t = BIF_GetTransInfo();
-
 	if (t->flag & T_PROP_EDIT) {
-		// TRANSFORM_FIX_ME
-#if 0
 		float tmat[4][4], imat[4][4];
 
-		BIF_ThemeColor(TH_GRID);
+		UI_ThemeColor(TH_GRID);
 		
-		/* if editmode we need to go into object space */
-		if(t->scene->obedit && t->spacetype == SPACE_VIEW3D)
-			mymultmatrix(t->scene->obedit->obmat);
+		if (t->spacetype == SPACE_VIEW3D)
+		{
+			View3D *v3d = t->view;
+			
+			Mat4CpyMat4(tmat, v3d->viewmat);
+			Mat4Invert(imat, tmat);
+		}
+		else
+		{
+			Mat4One(tmat);
+			Mat4One(imat);
+		}
+
 		
-		mygetmatrix(tmat);
-		Mat4Invert(imat, tmat);
+		if(t->obedit)
+		{
+			glPushMatrix();
+			glMultMatrixf(t->obedit->obmat); /* because t->center is in local space */
+		}
 
 		set_inverted_drawing(1);
 		drawcircball(GL_LINE_LOOP, t->center, t->propsize, imat);
 		set_inverted_drawing(0);
 		
-		/* if editmode we restore */
-		if(t->scene->obedit && t->spacetype == SPACE_VIEW3D)
-			myloadmatrix(G.vd->viewmat);
-#endif
+		if(t->obedit)
+		{
+			glPopMatrix();
+		}
 	}
 }
 
@@ -775,6 +783,7 @@
 	else
 		center[0] = center[1] = center[2] = 0.0f;
 }
+
 static void drawObjectConstraint(TransInfo *t) {
 	int i;
 	TransData * td = t->data;
@@ -786,26 +795,26 @@
 	   Without drawing the first light, users have little clue what they are doing.
 	 */
 	if (t->con.mode & CON_AXIS0) {
-		drawLine(td->ob->obmat[3], td->axismtx[0], 'x', DRAWLIGHT);
+		drawLine(t, td->ob->obmat[3], td->axismtx[0], 'x', DRAWLIGHT);
 	}
 	if (t->con.mode & CON_AXIS1) {
-		drawLine(td->ob->obmat[3], td->axismtx[1], 'y', DRAWLIGHT);
+		drawLine(t, td->ob->obmat[3], td->axismtx[1], 'y', DRAWLIGHT);
 	}
 	if (t->con.mode & CON_AXIS2) {
-		drawLine(td->ob->obmat[3], td->axismtx[2], 'z', DRAWLIGHT);
+		drawLine(t, td->ob->obmat[3], td->axismtx[2], 'z', DRAWLIGHT);
 	}
 	
 	td++;
 
 	for(i=1;i<t->total;i++,td++) {
 		if (t->con.mode & CON_AXIS0) {
-			drawLine(td->ob->obmat[3], td->axismtx[0], 'x', 0);
+			drawLine(t, td->ob->obmat[3], td->axismtx[0], 'x', 0);
 		}
 		if (t->con.mode & CON_AXIS1) {
-			drawLine(td->ob->obmat[3], td->axismtx[1], 'y', 0);
+			drawLine(t, td->ob->obmat[3], td->axismtx[1], 'y', 0);
 		}
 		if (t->con.mode & CON_AXIS2) {
-			drawLine(td->ob->obmat[3], td->axismtx[2], 'z', 0);
+			drawLine(t, td->ob->obmat[3], td->axismtx[2], 'z', 0);
 		}
 	}
 }

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-01-10 17:38:29 UTC (rev 18444)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-01-10 18:33:16 UTC (rev 18445)
@@ -53,7 +53,6 @@
 #include "DNA_view3d_types.h"
 
 //#include "BIF_screen.h"
-//#include "BIF_resources.h"
 //#include "BIF_mywindow.h"
 #include "BIF_gl.h"

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list