diff artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 8935:3ac9cb0029b2

Introduced new hook for chart tweaking. Also consider area-themes when calculating zoom-bounds
author gernotbelger
date Tue, 06 Mar 2018 17:06:47 +0100
parents 87a242425467
children 07d51fd4864c
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Tue Mar 06 17:05:37 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Tue Mar 06 17:06:47 2018 +0100
@@ -509,13 +509,31 @@
 
         AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
 
+        Bounds[] xyBounds = ChartHelper.getBounds(area);
+
+        if (xyBounds == null) {
+            log.warn("Skip XYDataset for Axis (invalid ranges): " + index);
+            return;
+        }
+        
+
         if (visible) {
+            if (log.isDebugEnabled()) {
+                log.debug("Add new AxisDataset at index: " + index);
+                log.debug("X extent: " + xyBounds[0]);
+                log.debug("Y extent: " + xyBounds[1]);
+            }
+
             axisDataset.addArea(area);
         }
-        else {
-            /* No range merging, for areas extending to infinity this
-             * causes problems. */
-        }
+
+        /* No range merging, for areas extending to infinity this causes problems. */
+        /* No range merging, for areas extending to infinity this causes problems. */
+        if( StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) || StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) )
+            return;
+        
+        combineXBounds(xyBounds[0], 0);
+        combineYBounds(xyBounds[1], index);
     }
 
     /**
@@ -719,6 +737,12 @@
     protected void autoZoom(XYPlot plot) {
         log.debug("Zoom to specified ranges.");
 
+        /* allow chart extenders to tweak zoom behavior */
+        final Collection<ChartExtender> extenders = this.diagramAttributes.getExtenders();
+        for (final ChartExtender extender : extenders) {
+            extender.beforeAutoZoom(this);
+        }        
+
         Range xrange = getDomainAxisRange();
         Range yrange = getValueAxisRange();
 
@@ -754,8 +778,6 @@
             zoom(plot, yaxis, getYBounds(Integer.valueOf(i)), yrange);
         }
         
-        /* allow chart extenders to tweak zoom behaviour */
-        final Collection<ChartExtender> extenders = this.diagramAttributes.getExtenders();
         for (final ChartExtender extender : extenders) {
             extender.afterAutoZoom(this);
         }

http://dive4elements.wald.intevation.org