Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-04-29 22:43:17 +0400
committerTon Roosendaal <ton@blender.org>2005-04-29 22:43:17 +0400
commitb7a927cc952e6caf8099bdb0def147b54594f94f (patch)
treeb77897b2b913cd56085f01af9817ab06eda49cb3 /source
parentcc44c12b9f2e7f46655dd7cbdb3508e71acc51d7 (diff)
More stats-junk stuff!
Added in Nkey panel (transform properties) option to show in editmode at choice the global or local coordinate values. Same option works for the "Tech draw" options. :)
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h1
-rw-r--r--source/blender/src/drawobject.c78
-rw-r--r--source/blender/src/drawview.c35
3 files changed, 80 insertions, 34 deletions
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 17bceb427ce..c4113eb158f 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -128,6 +128,7 @@ typedef struct View3D {
#define V3D_ALIGN 1024
#define V3D_SELECT_OUTLINE 2048
#define V3D_ZBUF_SELECT 4096
+#define V3D_GLOBAL_STATS 8192
/* View3D->around */
#define V3D_CENTRE 0
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index c6fea9b8fd5..957d4e988d2 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -1460,11 +1460,12 @@ static void draw_em_creases(EditMesh *em)
glLineWidth(1.0);
}
-static void draw_em_measure_stats(EditMesh *em)
+static void draw_em_measure_stats(Object *ob, EditMesh *em)
{
EditEdge *eed;
EditFace *efa;
- float *v1, *v2, *v3, *v4, fvec[3];
+ float v1[3], v2[3], v3[3], v4[3];
+ float fvec[3];
char val[32]; /* Stores the measurement display text here */
float area, col[3]; /* area of the face, colour of the text to draw */
@@ -1482,10 +1483,16 @@ static void draw_em_measure_stats(EditMesh *em)
for(eed= em->edges.first; eed; eed= eed->next) {
if((eed->f & SELECT) || (G.moving && ((eed->v1->f & SELECT) || (eed->v2->f & SELECT)) )) {
- v1= eed->v1->co;
- v2= eed->v2->co;
+ VECCOPY(v1, eed->v1->co);
+ VECCOPY(v2, eed->v2->co);
glRasterPos3f( 0.5*(v1[0]+v2[0]), 0.5*(v1[1]+v2[1]), 0.5*(v1[2]+v2[2]));
+
+ if(G.vd->flag & V3D_GLOBAL_STATS) {
+ Mat4MulVecfl(ob->obmat, v1);
+ Mat4MulVecfl(ob->obmat, v2);
+ }
+
sprintf(val,"%.3f", VecLenf(v1, v2));
BMF_DrawString( G.fonts, val);
}
@@ -1503,10 +1510,23 @@ static void draw_em_measure_stats(EditMesh *em)
for(efa= em->faces.first; efa; efa= efa->next) {
if((efa->f & SELECT) || (G.moving && faceselectedOR(efa, SELECT)) ) {
+ VECCOPY(v1, efa->v1->co);
+ VECCOPY(v2, efa->v2->co);
+ VECCOPY(v3, efa->v2->co);
+ if (efa->v4) {
+ VECCOPY(v4, efa->v4->co);
+ }
+ if(G.vd->flag & V3D_GLOBAL_STATS) {
+ Mat4MulVecfl(ob->obmat, v1);
+ Mat4MulVecfl(ob->obmat, v2);
+ Mat4MulVecfl(ob->obmat, v3);
+ if (efa->v4) Mat4MulVecfl(ob->obmat, v4);
+ }
+
if (efa->v4)
- area= AreaQ3Dfl( efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
+ area= AreaQ3Dfl(v1, v2, v3, v4);
else
- area = AreaT3Dfl( efa->v1->co, efa->v2->co, efa->v3->co);
+ area = AreaT3Dfl(v1, v2, v3);
sprintf(val,"%.3f", area);
glRasterPos3fv(efa->cent);
@@ -1525,10 +1545,22 @@ static void draw_em_measure_stats(EditMesh *em)
glColor3fv(col);
for(efa= em->faces.first; efa; efa= efa->next) {
- v1= efa->v1->co;
- v2= efa->v2->co;
- v3= efa->v3->co;
- if(efa->v4) v4= efa->v4->co; else v4= v3;
+ VECCOPY(v1, efa->v1->co);
+ VECCOPY(v2, efa->v2->co);
+ VECCOPY(v3, efa->v3->co);
+ if(efa->v4) {
+ VECCOPY(v4, efa->v4->co);
+ }
+ else {
+ VECCOPY(v4, v3);
+ }
+ if(G.vd->flag & V3D_GLOBAL_STATS) {
+ Mat4MulVecfl(ob->obmat, v1);
+ Mat4MulVecfl(ob->obmat, v2);
+ Mat4MulVecfl(ob->obmat, v3);
+ if (efa->v4) Mat4MulVecfl(ob->obmat, v4);
+ }
+
e1= efa->e1;
e2= efa->e2;
e3= efa->e3;
@@ -1539,18 +1571,18 @@ static void draw_em_measure_stats(EditMesh *em)
if( (e4->f & e1->f & SELECT) || (G.moving && (efa->v1->f & SELECT)) ) {
/* Vec 1 */
sprintf(val,"%.3f", VecAngle3(v4, v1, v2));
- fvec[0]= 0.2*efa->cent[0] + 0.8*v1[0];
- fvec[1]= 0.2*efa->cent[1] + 0.8*v1[1];
- fvec[2]= 0.2*efa->cent[2] + 0.8*v1[2];
+ fvec[0]= 0.2*efa->cent[0] + 0.8*efa->v1->co[0];
+ fvec[1]= 0.2*efa->cent[1] + 0.8*efa->v1->co[1];
+ fvec[2]= 0.2*efa->cent[2] + 0.8*efa->v1->co[2];
glRasterPos3fv(fvec);
BMF_DrawString( G.fonts, val);
}
if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) {
/* Vec 2 */
sprintf(val,"%.3f", VecAngle3(v1, v2, v3));
- fvec[0]= 0.2*efa->cent[0] + 0.8*v2[0];
- fvec[1]= 0.2*efa->cent[1] + 0.8*v2[1];
- fvec[2]= 0.2*efa->cent[2] + 0.8*v2[2];
+ fvec[0]= 0.2*efa->cent[0] + 0.8*efa->v2->co[0];
+ fvec[1]= 0.2*efa->cent[1] + 0.8*efa->v2->co[1];
+ fvec[2]= 0.2*efa->cent[2] + 0.8*efa->v3->co[2];
glRasterPos3fv(fvec);
BMF_DrawString( G.fonts, val);
}
@@ -1560,9 +1592,9 @@ static void draw_em_measure_stats(EditMesh *em)
sprintf(val,"%.3f", VecAngle3(v2, v3, v4));
else
sprintf(val,"%.3f", VecAngle3(v2, v3, v1));
- fvec[0]= 0.2*efa->cent[0] + 0.8*v3[0];
- fvec[1]= 0.2*efa->cent[1] + 0.8*v3[1];
- fvec[2]= 0.2*efa->cent[2] + 0.8*v3[2];
+ fvec[0]= 0.2*efa->cent[0] + 0.8*efa->v3->co[0];
+ fvec[1]= 0.2*efa->cent[1] + 0.8*efa->v3->co[1];
+ fvec[2]= 0.2*efa->cent[2] + 0.8*efa->v3->co[2];
glRasterPos3fv(fvec);
BMF_DrawString( G.fonts, val);
}
@@ -1571,9 +1603,9 @@ static void draw_em_measure_stats(EditMesh *em)
if( (e3->f & e4->f & SELECT) || (G.moving && (efa->v4->f & SELECT)) ) {
sprintf(val,"%.3f", VecAngle3(v3, v4, v1));
- fvec[0]= 0.2*efa->cent[0] + 0.8*v4[0];
- fvec[1]= 0.2*efa->cent[1] + 0.8*v4[1];
- fvec[2]= 0.2*efa->cent[2] + 0.8*v4[2];
+ fvec[0]= 0.2*efa->cent[0] + 0.8*efa->v4->co[0];
+ fvec[1]= 0.2*efa->cent[1] + 0.8*efa->v4->co[1];
+ fvec[2]= 0.2*efa->cent[2] + 0.8*efa->v4->co[2];
glRasterPos3fv(fvec);
BMF_DrawString( G.fonts, val);
}
@@ -1672,7 +1704,7 @@ static void draw_em_fancy(Object *ob, EditMesh *em, DerivedMesh *baseDM, Derived
}
if(G.f & (G_DRAW_EDGELEN|G_DRAW_FACEAREA|G_DRAW_EDGEANG))
- draw_em_measure_stats(em);
+ draw_em_measure_stats(ob, em);
}
if(dt>OB_WIRE) {
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index f2b28f35975..12c87bd4b44 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -1176,35 +1176,48 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
if(totedge) median[3] /= (float)totedge;
else median[3] /= (float)tot;
+ if(G.vd->flag & V3D_GLOBAL_STATS)
+ Mat4MulVecfl(ob->obmat, median);
+
if(block) { // buttons
+
+ uiBlockBeginAlign(block);
+ uiDefButS(block, TOG|BIT|13, REDRAWVIEW3D, "Global", 160, 150, 70, 19, &G.vd->flag, 0, 0, 0, 0, "Displays global values");
+ uiDefButS(block, TOGN|BIT|13, REDRAWVIEW3D, "Local", 230, 150, 70, 19, &G.vd->flag, 0, 0, 0, 0, "Displays local values");
+
QUATCOPY(ve_median, median);
uiBlockBeginAlign(block);
if(tot==1) {
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex X:", 10, 140, 300, 19, &(ve_median[0]), -lim, lim, 10, 3, "");
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex Y:", 10, 120, 300, 19, &(ve_median[1]), -lim, lim, 10, 3, "");
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex Z:", 10, 100, 300, 19, &(ve_median[2]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex X:", 10, 110, 290, 19, &(ve_median[0]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex Y:", 10, 90, 290, 19, &(ve_median[1]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex Z:", 10, 70, 290, 19, &(ve_median[2]), -lim, lim, 10, 3, "");
if(totw==1)
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex W:", 10, 80, 300, 19, &(ve_median[3]), 0.01, 100.0, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Vertex W:", 10, 50, 290, 19, &(ve_median[3]), 0.01, 100.0, 10, 3, "");
}
else {
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median X:", 10, 140, 300, 19, &(ve_median[0]), -lim, lim, 10, 3, "");
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Y:", 10, 120, 300, 19, &(ve_median[1]), -lim, lim, 10, 3, "");
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Z:", 10, 100, 300, 19, &(ve_median[2]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median X:", 10, 110, 290, 19, &(ve_median[0]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Y:", 10, 90, 290, 19, &(ve_median[1]), -lim, lim, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Z:", 10, 70, 290, 19, &(ve_median[2]), -lim, lim, 10, 3, "");
if(totw==tot)
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median W:", 10, 80, 300, 19, &(ve_median[3]), 0.01, 100.0, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median W:", 10, 50, 290, 19, &(ve_median[3]), 0.01, 100.0, 10, 3, "");
}
uiBlockEndAlign(block);
if(totedge==1)
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Crease W:", 10, 60, 300, 19, &(ve_median[3]), 0.0, 1.0, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Crease W:", 10, 30, 290, 19, &(ve_median[3]), 0.0, 1.0, 10, 3, "");
else if(totedge>1)
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Crease W:", 10, 60, 300, 19, &(ve_median[3]), 0.0, 1.0, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Crease W:", 10, 30, 290, 19, &(ve_median[3]), 0.0, 1.0, 10, 3, "");
}
else { // apply
+ if(G.vd->flag & V3D_GLOBAL_STATS) {
+ Mat4Invert(ob->imat, ob->obmat);
+ Mat4MulVecfl(ob->imat, median);
+ Mat4MulVecfl(ob->imat, ve_median);
+ }
VecSubf(median, ve_median, median);
median[3]= ve_median[3]-median[3];
@@ -1581,7 +1594,7 @@ static void view3d_panel_object(short cntrl) // VIEW3D_HANDLER_OBJECT
uiDefButF(block, NUM, REDRAWVIEW3D, "LocX:", 10, 140, 140, 19, &(ob->loc[0]), -lim, lim, 100, 3, "");
uiDefButF(block, NUM, REDRAWVIEW3D, "LocY:", 10, 120, 140, 19, &(ob->loc[1]), -lim, lim, 100, 3, "");
uiDefButF(block, NUM, REDRAWVIEW3D, "LocZ:", 10, 100, 140, 19, &(ob->loc[2]), -lim, lim, 100, 3, "");
-
+
ob_eul[0]= 180.0*ob->rot[0]/M_PI;
ob_eul[1]= 180.0*ob->rot[1]/M_PI;
ob_eul[2]= 180.0*ob->rot[2]/M_PI;