[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