[Kst] [Bug 120332] Local Y-zoom uses only one curve
Andrew Walker
arwalker at sumusltd.com
Wed Jan 18 19:39:34 CET 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=120332
arwalker sumusltd com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From arwalker sumusltd com 2006-01-18 19:39 -------
SVN commit 499791 by arwalker:
BUG:120332 Check all curves when determining local maximum. Consolidate autoBorder code so it is consistent.
M +35 -51 kst2dplot.cpp
M +1 -0 kst2dplot.h
--- trunk/extragear/graphics/kst/kst/kst2dplot.cpp #499790:499791
@ -837,6 +837,23 @
}
+void Kst2DPlot::autoBorder(bool log, double& min, double& max) {
+ if (log) {
+ min = log10(min);
+ max = (max > 0.0) ? log10(max): 0.0;
+ double dx = (max-min)/40.0;
+ max += dx;
+ min -= dx;
+ max = pow(10.0, max);
+ min = pow(10.0, min);
+ } else {
+ double dx = (max-min)/40.0;
+ max += dx;
+ min -= dx;
+ }
+}
+
+
void Kst2DPlot::updateScale() {
double mid, delta;
bool first;
@ -879,19 +896,7 @
XMin = pow(10.0, -350.0);
}
if (_xScaleMode == AUTOBORDER) {
- if (_xLog) {
- XMin = log10(XMin);
- XMax = (XMax > 0.0) ? log10(XMax): 0.0;
- double dx = (XMax-XMin)/40.0;
- XMax += dx;
- XMin -= dx;
- XMax = pow(10.0, XMax);
- XMin = pow(10.0, XMin);
- } else {
- double dx = (XMax-XMin)/40.0;
- XMax += dx;
- XMin -= dx;
- }
+ autoBorder(_xLog, XMin, XMax);
}
break;
@ -1088,19 +1093,7 @
YMin = pow(10.0, -350.0);
}
if (_yScaleMode == AUTOBORDER) {
- if (_yLog) {
- YMin = log10(YMin);
- YMax = (YMax > 0) ? log10(YMax): 0;
- double dy = (YMax-YMin)/40.0;
- YMax += dy;
- YMin -= dy;
- YMax = pow(10.0, YMax);
- YMin = pow(10.0, YMin);
- } else {
- double dy = (YMax-YMin)/40.0;
- YMax += dy;
- YMin -= dy;
- }
+ autoBorder(_yLog, YMin, YMax);
}
break;
@ -4548,11 +4541,11 @
void Kst2DPlot::zoomSelfYLocalMax(bool unused) {
Q_UNUSED(unused);
- double newYMin, newYMax;
+ double YMinCurve, YMaxCurve;
// find local minimum and maximum
- newYMin = 0.0;
- newYMax = 1.0;
+ YMin = 0.0;
+ YMax = 1.0;
bool first = true;
// first check all the curves
@ -4560,38 +4553,29 @
KstBaseCurvePtr c = Curves[i];
c->readLock();
if (!c->ignoreAutoScale()) {
- c->yRange(XMin, XMax, &newYMin, &newYMax);
+ c->yRange(XMin, XMax, &YMinCurve, &YMaxCurve);
+ if (first || YMinCurve < YMin ) {
+ YMin = YMinCurve;
+ }
+ if (first || YMaxCurve > YMax ) {
+ YMax = YMaxCurve;
+ }
first = false;
}
c->readUnlock();
}
// if curves/images had no variation in them
- if (newYMax <= newYMin) {
- newYMin -= 0.1;
- newYMax = newYMin + 0.2;
+ if (YMax <= YMin) {
+ YMin -= 0.1;
+ YMax = YMin + 0.2;
}
- if (_yLog && newYMin < 0.0) {
- newYMin = pow(10.0, -350.0);
+ if (_yLog && YMin < 0.0) {
+ YMin = pow(10.0, -350.0);
}
- // just like AUTOBORDER, add a little bit to top and bottom
- if (_yLog) {
- newYMin = log10(newYMin);
- newYMax = (newYMax > 0) ? log10(newYMax): 0;
- double dy = (newYMax-newYMin)/40.0;
- newYMax += dy;
- newYMin -= dy;
- newYMax = pow(10.0, newYMax);
- newYMin = pow(10.0, newYMin);
- } else {
- double dy = (newYMax-newYMin)/40.0;
- newYMax += dy;
- newYMin -= dy;
- }
+ autoBorder(_yLog, YMin, YMax);
- YMin = newYMin;
- YMax = newYMax;
setYScaleMode(FIXED);
}
--- trunk/extragear/graphics/kst/kst/kst2dplot.h #499790:499791
@ -426,6 +426,7 @
double ymax,
bool x_log = false,
bool y_log = false);
+ void autoBorder(bool log, double& min, double& max);
void setBorders(double& xleft_bdr_px, double& xright_bdr_px,
double& ytop_bdr_px, double& ybot_bdr_px,
TickParameters &tpx, TickParameters &tpy,
More information about the Kst
mailing list