Changeset 1643 in Sophya
- Timestamp:
- Aug 23, 2001, 7:06:31 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/pidrawer.cc
r1640 r1643 329 329 { 330 330 double d = rmax - rmin; 331 if (d < 1.e-39) d = 1.e-39; 331 //if (d < 1.e-39) d = 1.e-39; 332 if (d < 1.e-100) d = 1.e-100; 332 333 double ld = log10(d); 333 334 double fld = floor(fabs(ld)); … … 344 345 PIDrawer::CalcTicks() 345 346 { 346 int ntick_x = (aXlog) ? 4 : 7;347 int ntick_x = (aXlog) ? 6 : 10; 347 348 BestTicks(xMin,xMax,ntick_x,xMajTickStep); 348 349 xMinTickStep = xMajTickStep/5; … … 512 513 PIDrawer::DrawHTicks(PIGraphicUC* g, double y, double tickUp, double tickDown, double xBeg, double xStep) 513 514 { 514 for (double x=xBeg; x<=xMax ; x += xStep)515 for (double x=xBeg; x<=xMax+xStep/10.; x += xStep) 515 516 g->DrawLine(x, g->DeltaUCY(y, -tickDown), x, g->DeltaUCY(y, tickUp)); 516 517 } … … 535 536 BonFormatAxes(xBeg,xMax,xStep,format); 536 537 537 // Pour que les labels ne se sur-ecrivent pas (On ne peut pas changer 538 // xStep a ce niveau sinon les labels ne sont pas en face des ticks) 539 double largeurmax = -1.; 540 int ntick = 0; 541 for(double x=xMin;x<=xMax;x+=xStep) { 542 double xx = (fabs(x/xStep)<1.e-5) ? 0.: x; 543 char label[64]; sprintf(label,format.c_str(), xx); 544 for(kk=0;kk<64;kk++) if(label[kk]==' ') {label[kk]='\0'; break;} 545 double largeur = g->CalcStringWidth(label); 546 if(largeur>largeurmax) largeurmax=largeur; 547 ntick++; 548 } 549 largeurmax *= 1.1; // 10% de securite 550 551 double xlastlabel = xBeg; int ntick1=0; 552 for (double x=xBeg; x<=xMax; x += xStep) { 538 double xlastlabelfin = xBeg - 2.*(xMax-xBeg); 539 for (double x=xBeg; x<=xMax+xStep/10.; x += xStep) { 553 540 // Attention aux erreurs d'arrondi quand x->0 554 541 // car on code 5.1698e-26 au lieu de 0 … … 557 544 for(kk=0;kk<64;kk++) if(label[kk]==' ') {label[kk]='\0'; break;} 558 545 double largeur = g->CalcStringWidth(label); 559 if (just == 1) 560 xOffset = -largeur; 561 else if (just == 0) 562 xOffset = -largeur/2; 563 else 564 xOffset = 0; 565 if (aXdir) xOffset = -xOffset; 566 if( ntick1==0 || ntick1==ntick-1 567 || (xlastlabel+largeurmax<x && x+largeurmax<xMax) ) { 546 if(just == 1) xOffset = -largeur; 547 else if(just == 0) xOffset = -largeur/2; 548 else xOffset = 0; 549 if(aXdir) xOffset = -xOffset; 550 if( x+xOffset > xlastlabelfin ) { 568 551 g->DrawString(g->DeltaUCX(x,xOffset), y, label); 569 xlastlabel = x;552 xlastlabelfin = x + xOffset + 1.1*largeur; 570 553 } 571 ntick1 ++;572 554 } 573 555 }
Note:
See TracChangeset
for help on using the changeset viewer.