# HG changeset patch # User Felix Wolfsteller # Date 1324380600 0 # Node ID 131842fc6581ed6e482d5e08a138d0eaaa1ae9fa # Parent f834a6961bb7656ade7b4267de6b162a67da3f3c Enable basicst area rendering in longitudinal section diagrams. flys-artifacts/trunk@3491 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r f834a6961bb7 -r 131842fc6581 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Tue Dec 20 11:28:13 2011 +0000 +++ b/flys-artifacts/ChangeLog Tue Dec 20 11:30:00 2011 +0000 @@ -1,3 +1,9 @@ +2011-12-20 Felix Wolfsteller + + * src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java + (doOut, doArea): Added handling for areafacets. Code yet mostly + copied from CrossSectionGenerator. + 2011-12-20 Felix Wolfsteller * src/main/java/de/intevation/flys/artifacts/model/CrossSectionWaterLineFacet.java: diff -r f834a6961bb7 -r 131842fc6581 flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java Tue Dec 20 11:28:13 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java Tue Dec 20 11:30:00 2011 +0000 @@ -330,6 +330,13 @@ attr, visible); } + else if (FacetTypes.IS.AREA(name)) { + doArea(artifactAndFacet.getData(context), + artifactAndFacet.getFacetDescription(), + attr, + visible); + + } else { logger.warn("Unknown facet name: " + name); return; @@ -477,5 +484,71 @@ ? prefix + "(" + name +")" : name; } + + + /** + * Do Area out. + */ + protected void doArea( + Object o, + String seriesName, + Document theme, + boolean visible + ) { + logger.debug("LongitudinalSectionGenerator.doArea"); + StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); + + // TODO make this more stable. + Object[] doubles = (Object[]) o; + XYSeries up = null; + XYSeries down = null; + + if (doubles[1] != null) { + up = new StyledXYSeries(seriesName, false, theme); + if (doubles[1] instanceof WQKms) { + StyledSeriesBuilder.addPoints(up, (WQKms) doubles[1]); + } + else if (doubles[1] instanceof double[][]) { + StyledSeriesBuilder.addPoints(up, (double [][]) doubles[1]); + } + else { + logger.error("Do not know how to deal with (up) area info from: " + + doubles[1]); + } + } + + if (doubles[0] != null) { + // TODO: Sort this out: when the two series have the same name, + // the renderer (or anything in between) will not work correctly. + down = new StyledXYSeries(seriesName + " ", false, theme); + if (doubles[0] instanceof WQKms) { + StyledSeriesBuilder.addPoints(down, (WQKms) doubles[0]); + } + else if (doubles[0] instanceof double[][]) { + StyledSeriesBuilder.addPoints(down, (double[][]) doubles[0]); + } + else { + logger.error("Do not know how to deal with (down) area info from: " + + doubles[0]); + } + + } + + if (up == null && down != null) { + area.setMode(StyledAreaSeriesCollection.FILL_MODE.ABOVE); + down.setKey(seriesName); + area.addSeries(down); + } + else if (up != null && down == null) { + area.setMode(StyledAreaSeriesCollection.FILL_MODE.UNDER); + area.addSeries(up); + } + else if (up != null && down != null) { + area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); + area.addSeries(up); + area.addSeries(down); + } + addAreaSeries(area, 0, visible); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :