Revision: 3904
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3904&view=rev
Author: efiring
Date: 2007-10-01 00:06:43 -0700 (Mon, 01 Oct 2007)
Log Message:
-----------
Fixed bug in updating dataLim when an axis is reversed
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/src/_transforms.cpp
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2007-09-30 20:47:55 UTC (rev 3903)
+++ trunk/matplotlib/CHANGELOG 2007-10-01 07:06:43 UTC (rev 3904)
@@ -1,3 +1,10 @@
+2007-09-30 Modified update* methods of Bbox and Interval so they
+ work with reversed axes. Prior to this, trying to
+ set the ticks on a reversed axis failed with an
+ uninformative error message. - EF
+
+2007-09-30 Applied patches to axes3d to fix index error problem - EF
+
2007-09-24 Applied Eike Welk's patch reported on mpl-dev on 2007-09-22
Fixes a bug with multiple plot windows in the qt backend,
ported the changes to backend_qt4 as well - DSD
@@ -2,3 +9,3 @@
-2007-09-21 Changed cbook.reversed to yield the same result as the
+2007-09-21 Changed cbook.reversed to yield the same result as the
python reversed builtin - DSD
Modified: trunk/matplotlib/src/_transforms.cpp
===================================================================
--- trunk/matplotlib/src/_transforms.cpp 2007-09-30 20:47:55 UTC (rev
3903)
+++ trunk/matplotlib/src/_transforms.cpp 2007-10-01 07:06:43 UTC (rev
3904)
@@ -159,12 +159,19 @@
double minx = _val1->val();
double maxx = _val2->val();
+ int reversed = 0;
+ if (minx > maxx) {
+ reversed = 1;
+ double tmp = minx;
+ minx = maxx;
+ maxx = tmp;
+ }
double thisval;
thisval = Py::Float(vals[0]);
- if (ignore) {
+ if (ignore) {
minx = thisval;
maxx = thisval;
}
@@ -176,9 +183,13 @@
_minpos->update(thisval);
}
-
- _val1->set_api(minx);
- _val2->set_api(maxx);
+ if (reversed) {
+ _val1->set_api(maxx);
+ _val2->set_api(minx);
+ } else {
+ _val1->set_api(minx);
+ _val2->set_api(maxx);
+ }
return Py::Object();
}
@@ -459,8 +470,24 @@
double minx = _ll->xval();
double maxx = _ur->xval();
+ int xreversed = 0;
+ if (minx > maxx) {
+ xreversed = 1;
+ double tmp = minx;
+ minx = maxx;
+ maxx = tmp;
+ }
+
+
double miny = _ll->yval();
double maxy = _ur->yval();
+ int yreversed = 0;
+ if (miny > maxy) {
+ yreversed = 1;
+ double tmp = miny;
+ miny = maxy;
+ maxy = tmp;
+ }
Py::Tuple tup;
if (ignore) {
@@ -482,11 +509,22 @@
if (y>maxy) maxy=y;
}
+ if (xreversed) {
+ _ll->x_api()->set_api(maxx);
+ _ur->x_api()->set_api(minx);
+ } else {
+ _ll->x_api()->set_api(minx);
+ _ur->x_api()->set_api(maxx);
+ }
- _ll->x_api()->set_api(minx);
- _ll->y_api()->set_api(miny);
- _ur->x_api()->set_api(maxx);
- _ur->y_api()->set_api(maxy);
+ if (yreversed) {
+ _ll->y_api()->set_api(maxy);
+ _ur->y_api()->set_api(miny);
+ } else {
+ _ll->y_api()->set_api(miny);
+ _ur->y_api()->set_api(maxy);
+ }
+
return Py::Object();
}
@@ -519,8 +557,24 @@
double minx = _ll->xval();
double maxx = _ur->xval();
+ int xreversed = 0;
+ if (minx > maxx) {
+ xreversed = 1;
+ double tmp = minx;
+ minx = maxx;
+ maxx = tmp;
+ }
+
+
double miny = _ll->yval();
double maxy = _ur->yval();
+ int yreversed = 0;
+ if (miny > maxy) {
+ yreversed = 1;
+ double tmp = miny;
+ miny = maxy;
+ maxy = tmp;
+ }
double thisx, thisy;
//don't use current bounds on first update
@@ -550,10 +604,21 @@
Py_XDECREF(xyin);
if (ngood) {
- _ll->x_api()->set_api(minx);
- _ll->y_api()->set_api(miny);
- _ur->x_api()->set_api(maxx);
- _ur->y_api()->set_api(maxy);
+ if (xreversed) {
+ _ll->x_api()->set_api(maxx);
+ _ur->x_api()->set_api(minx);
+ } else {
+ _ll->x_api()->set_api(minx);
+ _ur->x_api()->set_api(maxx);
+ }
+
+ if (yreversed) {
+ _ll->y_api()->set_api(maxy);
+ _ur->y_api()->set_api(miny);
+ } else {
+ _ll->y_api()->set_api(miny);
+ _ur->y_api()->set_api(maxy);
+ }
}
return Py::Object();
}
@@ -594,8 +659,24 @@
double minx = _ll->xval();
double maxx = _ur->xval();
+ int xreversed = 0;
+ if (minx > maxx) {
+ xreversed = 1;
+ double tmp = minx;
+ minx = maxx;
+ maxx = tmp;
+ }
+
+
double miny = _ll->yval();
double maxy = _ur->yval();
+ int yreversed = 0;
+ if (miny > maxy) {
+ yreversed = 1;
+ double tmp = miny;
+ miny = maxy;
+ maxy = tmp;
+ }
double thisx, thisy;
//don't use current bounds on first update
@@ -627,10 +708,21 @@
Py_XDECREF(y);
- _ll->x_api()->set_api(minx);
- _ll->y_api()->set_api(miny);
- _ur->x_api()->set_api(maxx);
- _ur->y_api()->set_api(maxy);
+ if (xreversed) {
+ _ll->x_api()->set_api(maxx);
+ _ur->x_api()->set_api(minx);
+ } else {
+ _ll->x_api()->set_api(minx);
+ _ur->x_api()->set_api(maxx);
+ }
+
+ if (yreversed) {
+ _ll->y_api()->set_api(maxy);
+ _ur->y_api()->set_api(miny);
+ } else {
+ _ll->y_api()->set_api(miny);
+ _ur->y_api()->set_api(maxy);
+ }
return Py::Object();
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins