# HG changeset patch # User Ingo Weinzierl # Date 1306919880 0 # Node ID d4c4fefb095b10fcf91b0fed2445c8c00f17b734 # Parent bb484489d3df1dfd6a84fb98840b5dc3e4613c6d The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now. flys-artifacts/trunk@2037 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r bb484489d3df -r d4c4fefb095b flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Jun 01 08:01:07 2011 +0000 +++ b/flys-artifacts/ChangeLog Wed Jun 01 09:18:00 2011 +0000 @@ -1,3 +1,10 @@ +2011-06-01 Ingo Weinzierl + + * src/main/java/de/intevation/flys/exports/InfoGeneratorHelper.java: + Interchange the lower and upper x value of the chart if the x-axis is + inverted before the matrix values are computed. Now, the matrix is able + to work with charts that have an inverted x-axis. + 2011-06-01 Ingo Weinzierl * src/main/java/de/intevation/flys/exports/ChartInfoGenerator.java: New. A diff -r bb484489d3df -r d4c4fefb095b flys-artifacts/src/main/java/de/intevation/flys/exports/InfoGeneratorHelper.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/InfoGeneratorHelper.java Wed Jun 01 08:01:07 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/InfoGeneratorHelper.java Wed Jun 01 09:18:00 2011 +0000 @@ -11,6 +11,7 @@ import org.jfree.chart.ChartRenderingInfo; import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.Range; @@ -86,11 +87,11 @@ Rectangle2D dataArea = info.getPlotInfo().getDataArea(); - XYPlot plot = (XYPlot) chart.getPlot(); - Range xRange = plot.getDomainAxis().getRange(); - Range yRange = plot.getRangeAxis().getRange(); + XYPlot plot = (XYPlot) chart.getPlot(); + ValueAxis xAxis = plot.getDomainAxis(); + ValueAxis yAxis = plot.getRangeAxis(); - double[] tm = createTransformationMatrix(dataArea, xRange, yRange); + double[] tm = createTransformationMatrix(dataArea, xAxis, yAxis); cr.addAttr(tf, "sx", String.valueOf(tm[0]), true); cr.addAttr(tf, "sy", String.valueOf(tm[1]), true); @@ -113,19 +114,32 @@ */ protected static double[] createTransformationMatrix( Rectangle2D dataArea, - Range xRange, - Range yRange) + ValueAxis xAxis, + ValueAxis yAxis) { + logger.debug("InfoGeneratorHelper.createTransformationMatrix"); + double offsetX = dataArea.getX(); double width = dataArea.getWidth() - 1; double offsetY = dataArea.getY(); double height = dataArea.getHeight(); + Range xRange = xAxis.getRange(); + Range yRange = yAxis.getRange(); + double lowerX = xRange.getLowerBound(); double upperX = xRange.getUpperBound(); double lowerY = yRange.getLowerBound(); double upperY = yRange.getUpperBound(); + if (xAxis.isInverted()) { + logger.info("X-Axis is inverted!"); + + double tmp = upperX; + upperX = lowerX; + lowerX = tmp; + } + double dMoveX = upperX - lowerX; double fMoveX = width * lowerX; double dMoveY = lowerY - upperY;