Stroke stroke = new BasicStroke(fsi.getStrokeWidth(), BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 1.0f,
paniponidash, 0.0f);
gr.setColor(toColor(fsi.getFillColor(), fsi.getFillOpacity()));
if (null != fsi.getSymbol().getCircle()) {
CircleInfo info = fsi.getSymbol().getCircle();
w = Math.round(info.getR() * 2);
h = w;
if (w > max) {
w = max;
h = max;
addSize = (int) info.getR();
}
int linewidth = fsi.getStrokeWidth();
int halfLinewidth = linewidth / 2; // cut int value !!
if (w + linewidth > max) {
w = max - halfLinewidth * 2;
x = halfLinewidth;
addSize = (int) info.getR();
} else {
x = Math.round((0f + max - w) / 2f);
}
if (h + linewidth > max) {
h = max - halfLinewidth * 2;
y = halfLinewidth;
addSize = (int) info.getR();
} else {
y = Math.round((0f + max - h) / 2f);
}
gr.fillOval(x, y, w, h);
gr.setColor(toColor(fsi.getStrokeColor(), fsi.getStrokeOpacity()));
gr.setStroke(stroke);
gr.drawOval(x, y, w, h);
} else if (null != fsi.getSymbol().getRect()) {
RectInfo info = fsi.getSymbol().getRect();
w = Math.round(info.getW());
h = Math.round(info.getH());
int realSize = (w + h) / 2;
if (w > max) {
w = max;
addSize = realSize;
}
if (h > max) {
h = max;
addSize = realSize;
}
int linewidth = fsi.getStrokeWidth();
int halfLinewidth = linewidth / 2; // cut int value !!
if (w + linewidth > max) {
w = max - halfLinewidth * 2;
x = halfLinewidth;
addSize = realSize;
} else {
x = Math.round((0f + max - w) / 2f);
}
if (h + linewidth > max) {
h = max - halfLinewidth * 2;
y = halfLinewidth;
addSize = realSize;
} else {
y = Math.round((0f + max - h) / 2f);
}
gr.fillRect(x, y, w, h);
gr.setColor(toColor(fsi.getStrokeColor(), fsi.getStrokeOpacity()));
gr.setStroke(stroke);
gr.drawRect(x, y, w, h);
} else if (null != fsi.getSymbol().getImage()) {
ImageInfo info = fsi.getSymbol().getImage();
try {
BufferedImage img = getImage(info.getHref());
if (null == img) {
throw new AdvancedviewsException(AdvancedviewsException.FAILED_CREATING_IMAGEICON, info.getHref());
}
AffineTransform trans;
if (img.getHeight() > iconSize || img.getWidth() > iconSize) {
double sx = 1d / img.getWidth() * iconSize;
double sy = 1d / img.getHeight() * iconSize;
double smallest = (sx < sy ? sx : sy);
trans = AffineTransform.getScaleInstance(smallest, smallest);
double width = smallest * img.getWidth();
double height = smallest * img.getHeight();
double tx = (width < iconSize ? (0d + iconSize - width) / 2 : 0d);
double ty = (height < iconSize ? (0d + iconSize - height) / 2 : 0d);
trans.concatenate(AffineTransform.getTranslateInstance(tx, ty));
} else {
double tx = (img.getWidth() < iconSize ? (0d + iconSize - img.getWidth()) / 2 : 0d);
double ty = (img.getHeight() < iconSize ? (0d + iconSize - img.getHeight()) / 2 : 0d);
trans = AffineTransform.getTranslateInstance(tx, ty);
}
gr.transform(trans);
gr.drawImage(img, null, 0, 0);
} catch (IOException e) {
log.warn("Failed creating Legend Icon from image: " + e.getMessage());
throw new AdvancedviewsException(AdvancedviewsException.FAILED_CREATING_IMAGEICON, info.getHref());
}
} else {
throw new AdvancedviewsException(AdvancedviewsException.REQUIRED_PARAMETER_MISSING, "Symbol StyleInfo");
}