Changeset 200 in Sophya for trunk/SophyaPI
- Timestamp:
- Feb 25, 1999, 2:37:21 PM (27 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/pidrawer.cc
r163 r200 226 226 } 227 227 228 static void BestTicks(float rmin,float rmax,int nticks,float& majt) 229 { 230 double d = rmax - rmin; 231 double ld = log10(d); 232 double fld = floor(fabs(ld)); 233 double del,del0; 234 double fac[4] = {2.,5.,10.,20.}; 235 if(ld>=0.) { fld -= 1.; del0 = del = pow(10.,fld); } 236 else { fld += 2.; del0 = del = pow(10., -fld); } 237 int k=0; 238 while( d/del > (double) nticks && k<4 ) { del = fac[k]*del0; k++; } 239 majt = del; 240 } 228 241 229 242 void 230 243 PIDrawer::CalcTicks() 231 244 { 232 float xExt = xMax-xMin; 233 int lx = (int) ceil(log10(xExt)-0.1); 234 xExt = (float)pow(10.0,lx); 235 xMajTickStep = xExt/10; 236 xMinTickStep = xMajTickStep/10; 237 xFirstMajTick = int(xMin / xMajTickStep) * xMajTickStep; 238 if (xFirstMajTick < xMin) xFirstMajTick += xMajTickStep; 239 xFirstMinTick = int(xMin / xMinTickStep) * xMinTickStep; 240 if (xFirstMinTick < xMin) xFirstMinTick += xMinTickStep; 241 242 243 float yExt = yMax-yMin; 244 int ly = (int) ceil(log10(yExt)-0.1); 245 yExt = (float)pow(10.0,ly); 246 yMajTickStep = yExt/10; 247 yMinTickStep = yMajTickStep/10; 248 yFirstMajTick = int(yMin / yMajTickStep) * yMajTickStep; 249 if (yFirstMajTick < yMin) yFirstMajTick += yMajTickStep; 250 yFirstMinTick = int(yMin / yMinTickStep) * yMinTickStep; 251 if (yFirstMinTick < yMin) yFirstMinTick += yMinTickStep; 252 253 yMajTickLen = (xMax-xMin)/100; 254 yMinTickLen = (xMax-xMin)/250; 255 xMajTickLen = (yMax-yMin)/100; 256 xMinTickLen = (yMax-yMin)/250; 257 258 } 259 260 245 BestTicks(xMin,xMax,7,xMajTickStep); 246 xMinTickStep = xMajTickStep/10; 247 xFirstMajTick = int(xMin / xMajTickStep) * xMajTickStep; 248 if (xFirstMajTick < xMin) xFirstMajTick += xMajTickStep; 249 xFirstMinTick = int(xMin / xMinTickStep) * xMinTickStep; 250 if (xFirstMinTick < xMin) xFirstMinTick += xMinTickStep; 251 252 BestTicks(yMin,yMax,12,yMajTickStep); 253 yMinTickStep = yMajTickStep/10; 254 yFirstMajTick = int(yMin / yMajTickStep) * yMajTickStep; 255 if (yFirstMajTick < yMin) yFirstMajTick += yMajTickStep; 256 yFirstMinTick = int(yMin / yMinTickStep) * yMinTickStep; 257 if (yFirstMinTick < yMin) yFirstMinTick += yMinTickStep; 258 259 yMajTickLen = (xMax-xMin)/100; 260 yMinTickLen = (xMax-xMin)/250; 261 xMajTickLen = (yMax-yMin)/100; 262 xMinTickLen = (yMax-yMin)/250; 263 } 261 264 262 265 void … … 280 283 else g->SelLine(mLAtt); 281 284 unsigned int flags = axesFlags; 285 282 286 if (flags & kStdAxes) { 283 287 284 288 // Les axes 285 289 … … 335 339 float extYMinTickLen = flags&kExtTicks ? yMinTickLen : 0; 336 340 float intYMinTickLen = flags&kIntTicks ? yMinTickLen : 0; 341 342 // La grille en pointilles 343 344 if (flags & kGridOn) DrawGrid(g); 337 345 338 346 // Les ticks majeurs … … 440 448 g->DrawString(x+xOffset, y, label); 441 449 } 450 } 451 452 void 453 PIDrawer::DrawGrid(PIGraphicUC* g) 454 { 455 PILineAtt savlineatt = g->GetLineAtt(); 456 g->SelLine(PI_ThinDashedLine); 457 458 for (float x=xFirstMajTick; x<=xMax; x += xMajTickStep) 459 g->DrawLine(x, yMin, x, yMax); 460 461 for (float y=yFirstMajTick; y<=yMax; y += yMajTickStep) 462 g->DrawLine(xMin, y, xMax, y); 463 464 g->SelLine(savlineatt); 442 465 } 443 466 -
trunk/SophyaPI/PI/pidrawer.h
r163 r200 23 23 kMinTicks = 0x0080, 24 24 kLabels = 0x1000, 25 kGridOn = 0x2000, 25 26 kAxesDflt = kStdAxes | kTicks | kLabels, // Axes trace par defaut 26 27 kAxesNone = 0 // Pas de trace d axe … … 82 83 void DrawHLabels(PIGraphicUC* g, float y, float xBeg, float xStep, int just=0); 83 84 void DrawVLabels(PIGraphicUC* g, float x, float yBeg, float yStep, int just=0); 85 void DrawGrid(PIGraphicUC* g); 84 86 85 87
Note:
See TracChangeset
for help on using the changeset viewer.