[Kst] extragear/graphics/kst/kst
Andrew Walker
arwalker at sumusltd.com
Wed May 25 20:09:45 CEST 2005
SVN commit 418134 by arwalker:
Check for valid min/max values and adjust if necessary
M +72 -19 kst2dplot.cpp
--- trunk/extragear/graphics/kst/kst/kst2dplot.cpp #418133:418134
@@ -1076,28 +1076,38 @@
case EXPRESSION:
// reparse if necessary
- if (!xMinParsedValid)
- {
+ if (!xMinParsedValid) {
reparse(xMinExp, &xMinParsed, xMinParsedValid);
}
- if (!xMaxParsedValid)
- {
+ if (!xMaxParsedValid) {
reparse(xMaxExp, &xMaxParsed, xMaxParsedValid);
}
// get values from expressions
{
Equation::Context ctx;
- if (xMinParsedValid)
- {
+
+ if (xMinParsedValid) {
xMinParsed->update(-1, &ctx);
XMin = xMinParsed->value(&ctx);
}
- if (xMaxParsedValid)
- {
+ if (xMaxParsedValid) {
xMaxParsed->update(-1, &ctx);
XMax = xMaxParsed->value(&ctx);
}
}
+ if (XMin > XMax) {
+ double tmp = XMax;
+ XMax = XMin;
+ XMin = tmp;
+ } else if (XMin == XMax) {
+ if (XMin == 0.0) {
+ XMin = -0.5;
+ XMax = 0.5;
+ } else {
+ XMax += fabs(XMax) * 0.01;
+ XMin -= fabs(XMin) * 0.01;
+ }
+ }
break;
default:
@@ -1105,7 +1115,6 @@
break;
}
-
switch (_yScaleMode) {
case AUTOBORDER: // set scale so all of all curves fits
case AUTO: // set scale so all of all curves fits
@@ -1312,28 +1321,38 @@
case EXPRESSION:
// reparse if necessary
- if (!yMinParsedValid)
- {
+ if (!yMinParsedValid) {
reparse(yMinExp, &yMinParsed, yMinParsedValid);
}
- if (!yMaxParsedValid)
- {
+ if (!yMaxParsedValid) {
reparse(yMaxExp, &yMaxParsed, yMaxParsedValid);
}
// get values from expressions
{
Equation::Context ctx;
- if (yMinParsedValid)
- {
+
+ if (yMinParsedValid) {
yMinParsed->update(-1, &ctx);
YMin = yMinParsed->value(&ctx);
}
- if (yMaxParsedValid)
- {
+ if (yMaxParsedValid) {
yMaxParsed->update(-1, &ctx);
YMax = yMaxParsed->value(&ctx);
}
}
+ if (YMin > YMax) {
+ double tmp = YMax;
+ YMax = YMin;
+ YMin = tmp;
+ } else if (YMin == YMax) {
+ if (YMin == 0.0) {
+ YMin = -0.5;
+ YMax = 0.5;
+ } else {
+ YMax += fabs(YMax) * 0.01;
+ YMin -= fabs(YMin) * 0.01;
+ }
+ }
break;
default:
@@ -6937,8 +6956,25 @@
void Kst2DPlot::optimizeXExps() {
if (xMinParsedValid && xMaxParsedValid && xMinParsed->isConst() && xMaxParsed->isConst()) {
Equation::Context ctx;
+ double min, max;
+
setXScaleMode(FIXED);
- setXScale(xMinParsed->value(&ctx), xMaxParsed->value(&ctx));
+ min = xMinParsed->value(&ctx);
+ max = xMaxParsed->value(&ctx);
+ if (min > max) {
+ double tmp = max;
+ max = min;
+ min = tmp;
+ } else if (XMin == XMax) {
+ if (min == 0.0) {
+ min = -0.5;
+ max = 0.5;
+ } else {
+ max += fabs(max) * 0.01;
+ min -= fabs(min) * 0.01;
+ }
+ }
+ setXScale(min, max);
}
}
@@ -6946,8 +6982,25 @@
void Kst2DPlot::optimizeYExps() {
if (yMinParsedValid && yMaxParsedValid && yMinParsed->isConst() && yMaxParsed->isConst()) {
Equation::Context ctx;
+ double min, max;
+
setYScaleMode(FIXED);
- setYScale(yMinParsed->value(&ctx), yMaxParsed->value(&ctx));
+ min = yMinParsed->value(&ctx);
+ max = yMaxParsed->value(&ctx);
+ if (min > max) {
+ double tmp = max;
+ max = min;
+ min = tmp;
+ } else if (XMin == XMax) {
+ if (min == 0.0) {
+ min = -0.5;
+ max = 0.5;
+ } else {
+ max += fabs(max) * 0.01;
+ min -= fabs(min) * 0.01;
+ }
+ }
+ setYScale(min, max);
}
}
More information about the Kst
mailing list