Mercurial > dive4elements > river
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; |