| The class org.geotools.legend.Drawer does not draw the following line properties if they are defined:
- line cap
- line join
- line dash
In order to fix this, the following method should be altered: private void paint(BufferedImage bi, SimpleFeature feature, LiteShape shape, Symbolizer symb); Change this part of the method:
if (symb instanceof LineSymbolizer) {
LineSymbolizer lineSymbolizer = (LineSymbolizer) symb;
Color c = SLD.color(lineSymbolizer);
int w = SLD.width(lineSymbolizer);
if (c != null && w > 0) {
g.setColor(c);
Stroke str = new BasicStroke(w);
g.setStroke(str);
g.draw(shape);
}
}
into this:
if (symb instanceof LineSymbolizer) {
LineSymbolizer lineSymbolizer = (LineSymbolizer) symb;
Color c = SLD.color(lineSymbolizer);
int w = SLD.width(lineSymbolizer);
if (c != null && w > 0) {
g.setColor(c);
int lineCap = BasicStroke.CAP_BUTT;
String lineCapStr = SLD.lineLinecap(lineSymbolizer);
if("round".equalsIgnoreCase(lineCapStr)) {
lineCap = BasicStroke.CAP_BUTT;
} else if("square".equals(lineCapStr)) {
lineCap = BasicStroke.CAP_SQUARE;
}
int lineJoin = BasicStroke.JOIN_ROUND;
String lineJoinStr = SLD.lineLinejoin(lineSymbolizer);
if("bevel".equalsIgnoreCase(lineJoinStr)) {
lineJoin = BasicStroke.JOIN_BEVEL;
} else if("miter".equals(lineJoinStr)) {
lineJoin = BasicStroke.JOIN_MITER;
}
float[] lineDash = SLD.lineDash(lineSymbolizer);
Stroke str = new BasicStroke(w, lineCap, lineJoin, 1, lineDash, 0);
g.setStroke(str);
g.draw(shape);
}
}
|