Moved the drawing of size and diagonal of border select into the chunk

that draws the XOR border as well, this prevents unnecessary updates, and
makes sure all drawing uses a single glFlush()

Should solve redraw errors as reported by Goofster
This commit is contained in:
Ton Roosendaal
2004-07-30 10:07:47 +00:00
parent f73d81377a
commit fc94d2908c

View File

@@ -209,6 +209,53 @@ int get_border(rcti *rect, short col)
sdrawXORline4(1, x1, mval[1], mval[0], mval[1]);
sdrawXORline4(2, mval[0], mval[1], mval[0], y1);
sdrawXORline4(3, mval[0], y1, x1, y1);
/* draw size information in corner */
if(curarea->spacetype==SPACE_VIEW3D) {
glColor3f(0.4375, 0.4375, 0.4375);
glRecti(0, 10, 250, 20);
glColor3f(0.0, 0.0, 0.0);
if(G.vd->persp==0) {
window_to_3d(dvec, mvalo[0]-x1, mvalo[1]-y1);
glRasterPos2i(10, 10);
sprintf(str, "X %.4f Y %.4f Z %.4f Dia %.4f", dvec[0], dvec[1], dvec[2], sqrt(dvec[0]*dvec[0]+dvec[1]*dvec[1]+dvec[2]*dvec[2]));
BMF_DrawString(G.fonts, str);
}
else if(G.vd->persp==2) {
rcti vb;
calc_viewborder(G.vd, &vb);
fac1= (mvalo[0]-x1)/( (float) (vb.xmax-vb.xmin) );
fac1*= 0.01*G.scene->r.size*G.scene->r.xsch;
fac2= (mvalo[1]-y1)/( (float) (vb.ymax-vb.ymin) );
fac2*= 0.01*G.scene->r.size*G.scene->r.ysch;
glRasterPos2i(10, 10);
sprintf(str, "X %.1f Y %.1f Dia %.1f", fabs(fac1), fabs(fac2), sqrt(fac1*fac1 + fac2*fac2) );
BMF_DrawString(G.fonts, str);
}
}
else if(curarea->spacetype==SPACE_IPO) {
SpaceIpo *sipo= curarea->spacedata.first;
glColor3f(.40625, .40625, .40625);
glRecti(20, 30, 170, 40);
glColor3f(0.0, 0.0, 0.0);
mvalo[2]= x1;
mvalo[3]= y1;
areamouseco_to_ipoco(&sipo->v2d, mval, dvec, dvec+1);
areamouseco_to_ipoco(&sipo->v2d, mvalo+2, dvec+2, dvec+3);
glRasterPos2i(30, 30);
sprintf(str, "Time: %.4f Y %.4f", dvec[0]-dvec[2], dvec[1]-dvec[3]);
BMF_DrawString(G.fonts, str);
}
glFlush();
mvalo[0]= mval[0];
@@ -232,50 +279,6 @@ int get_border(rcti *rect, short col)
else if(event==RIGHTMOUSE) break;
}
if(curarea->spacetype==SPACE_VIEW3D) {
glColor3f(0.4375, 0.4375, 0.4375);
glRecti(0, 10, 250, 20);
glColor3f(0.0, 0.0, 0.0);
if(G.vd->persp==0) {
window_to_3d(dvec, mvalo[0]-x1, mvalo[1]-y1);
glRasterPos2i(10, 10);
sprintf(str, "X %.4f Y %.4f Z %.4f Dia %.4f", dvec[0], dvec[1], dvec[2], sqrt(dvec[0]*dvec[0]+dvec[1]*dvec[1]+dvec[2]*dvec[2]));
BMF_DrawString(G.fonts, str);
}
else if(G.vd->persp==2) {
rcti vb;
calc_viewborder(G.vd, &vb);
fac1= (mvalo[0]-x1)/( (float) (vb.xmax-vb.xmin) );
fac1*= 0.01*G.scene->r.size*G.scene->r.xsch;
fac2= (mvalo[1]-y1)/( (float) (vb.ymax-vb.ymin) );
fac2*= 0.01*G.scene->r.size*G.scene->r.ysch;
glRasterPos2i(10, 10);
sprintf(str, "X %.1f Y %.1f Dia %.1f", fabs(fac1), fabs(fac2), sqrt(fac1*fac1 + fac2*fac2) );
BMF_DrawString(G.fonts, str);
}
}
else if(curarea->spacetype==SPACE_IPO) {
SpaceIpo *sipo= curarea->spacedata.first;
glColor3f(.40625, .40625, .40625);
glRecti(20, 30, 170, 40);
glColor3f(0.0, 0.0, 0.0);
mvalo[2]= x1;
mvalo[3]= y1;
areamouseco_to_ipoco(&sipo->v2d, mval, dvec, dvec+1);
areamouseco_to_ipoco(&sipo->v2d, mvalo+2, dvec+2, dvec+3);
glRasterPos2i(30, 30);
sprintf(str, "Time: %.4f Y %.4f", dvec[0]-dvec[2], dvec[1]-dvec[3]);
BMF_DrawString(G.fonts, str);
}
} /* end while (TRUE) */
sdrawXORline4(-1, 0, 0, 0, 0);