comparison flys-artifacts/src/main/java/de/intevation/flys/jfree/EnhancedLineAndShapeRenderer.java @ 2591:74c02dbf17ca

#523 Improved the look of minimum and maximum shapes in chart series. flys-artifacts/trunk@4148 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 16 Mar 2012 07:06:19 +0000
parents 2b232871ba28
children 42b05a4bed25
comparison
equal deleted inserted replaced
2590:d75b427da50a 2591:74c02dbf17ca
1 package de.intevation.flys.jfree; 1 package de.intevation.flys.jfree;
2 2
3 import java.awt.Color;
3 import java.awt.Graphics2D; 4 import java.awt.Graphics2D;
5 import java.awt.Paint;
4 import java.awt.Shape; 6 import java.awt.Shape;
5 import java.awt.geom.Rectangle2D; 7 import java.awt.geom.Rectangle2D;
6 import java.util.HashMap; 8 import java.util.HashMap;
7 import java.util.Map; 9 import java.util.Map;
8 10
53 if (isMaximumShapeVisible(series) && isMaximum(dataset, series, item)) { 55 if (isMaximumShapeVisible(series) && isMaximum(dataset, series, item)) {
54 return true; 56 return true;
55 } 57 }
56 58
57 return false; 59 return false;
60 }
61
62
63 public Shape getMaximumShape(int series, int column) {
64 return new Rectangle2D.Double(-5d, -5d, 10d, 10d);
65 }
66
67
68 public Shape getMinimumShape(int series, int column) {
69 return new Rectangle2D.Double(-5d, -5d, 10d, 10d);
70 }
71
72
73 public Paint getMaximumFillPaint(int series, int column) {
74 Paint p = getItemPaint(series, column);
75
76 if (p instanceof Color) {
77 Color c = (Color) p;
78 Color b = c;
79
80 for (int i = 0; i < 2; i++) {
81 b = b.darker();
82 }
83
84 return b;
85 }
86
87 logger.warn("Item paint is no instance of Color!");
88 return p;
89 }
90
91
92 public Paint getMinimumFillPaint(int series, int column) {
93 Paint p = getItemPaint(series, column);
94
95 if (p instanceof Color) {
96 Color c = (Color) p;
97 Color b = c;
98
99 for (int i = 0; i < 2; i++) {
100 b = b.darker();
101 }
102
103 return b;
104 }
105
106 logger.warn("Item paint is no instance of Color!");
107 return p;
58 } 108 }
59 109
60 110
61 /** 111 /**
62 * Overrides XYLineAndShapeRenderer.drawSecondaryPass() to call an adapted 112 * Overrides XYLineAndShapeRenderer.drawSecondaryPass() to call an adapted
91 RectangleEdge yAxisLocation = plot.getRangeAxisEdge(); 141 RectangleEdge yAxisLocation = plot.getRangeAxisEdge();
92 double transX1 = domainAxis.valueToJava2D(x1, dataArea, xAxisLocation); 142 double transX1 = domainAxis.valueToJava2D(x1, dataArea, xAxisLocation);
93 double transY1 = rangeAxis.valueToJava2D(y1, dataArea, yAxisLocation); 143 double transY1 = rangeAxis.valueToJava2D(y1, dataArea, yAxisLocation);
94 144
95 if (getItemShapeVisible(dataset, series, item)) { 145 if (getItemShapeVisible(dataset, series, item)) {
96 Shape shape = getItemShape(series, item); 146 Shape shape = null;
147
148 boolean isMinimum = isMinimumShapeVisible(series)
149 && isMinimum(dataset, series, item);
150
151 boolean isMaximum = isMaximumShapeVisible(series)
152 && isMaximum(dataset, series, item);
153
154 if (isMinimum) {
155 logger.debug("Create a Minimum shape.");
156 shape = getMinimumShape(series, item);
157 }
158 else if (isMaximum) {
159 logger.debug("Create a Maximum shape.");
160 shape = getMaximumShape(series, item);
161 }
162 else {
163 shape = getItemShape(series, item);
164 }
165
97 if (orientation == PlotOrientation.HORIZONTAL) { 166 if (orientation == PlotOrientation.HORIZONTAL) {
98 shape = ShapeUtilities.createTranslatedShape(shape, transY1, 167 shape = ShapeUtilities.createTranslatedShape(shape, transY1,
99 transX1); 168 transX1);
100 } 169 }
101 else if (orientation == PlotOrientation.VERTICAL) { 170 else if (orientation == PlotOrientation.VERTICAL) {
121 g2.setPaint(getItemPaint(series, item)); 190 g2.setPaint(getItemPaint(series, item));
122 } 191 }
123 g2.setStroke(getItemOutlineStroke(series, item)); 192 g2.setStroke(getItemOutlineStroke(series, item));
124 g2.draw(shape); 193 g2.draw(shape);
125 } 194 }
195
196 if (isMinimum) {
197 g2.setPaint(getMinimumFillPaint(series, item));
198 g2.fill(shape);
199 g2.setPaint(getItemOutlinePaint(series, item));
200 g2.setStroke(getItemOutlineStroke(series, item));
201 g2.draw(shape);
202 }
203 else if (isMaximum) {
204 g2.setPaint(getMaximumFillPaint(series, item));
205 g2.fill(shape);
206 g2.setPaint(getItemOutlinePaint(series, item));
207 g2.setStroke(getItemOutlineStroke(series, item));
208 g2.draw(shape);
209 }
126 } 210 }
127 } 211 }
128 212
129 double xx = transX1; 213 double xx = transX1;
130 double yy = transY1; 214 double yy = transY1;

http://dive4elements.wald.intevation.org