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");
}