1 package org.simantics.maps.sg;
4 import java.awt.Composite;
5 import java.awt.FontMetrics;
6 import java.awt.Graphics2D;
7 import java.awt.geom.AffineTransform;
8 import java.awt.geom.Rectangle2D;
10 public class MapAttributionNode extends MapInfoNode {
12 private static final long serialVersionUID = 7994492218791569147L;
15 public void render(Graphics2D g2d) {
19 AffineTransform ot = g2d.getTransform();
20 g2d.setTransform(new AffineTransform());
22 Rectangle2D controlBounds = g2d.getClipBounds();
23 if (controlBounds == null)
26 g2d.setFont(MapInfoConstants.getInfoFont());
28 FontMetrics fm = g2d.getFontMetrics();
29 Rectangle2D r = fm.getStringBounds(MapInfoConstants.ATTRIBUTION, g2d);
31 double yOffsetFromBottom = getMapInfoNextY(g2d);
32 double frameMaxX = controlBounds.getMaxX();
33 double frameMaxY = controlBounds.getMaxY() - yOffsetFromBottom;
34 int frameWidth = (int) Math.ceil(r.getWidth()) + MapInfoConstants.TEXT_HORIZONTAL_MARGIN * 2;
35 int frameHeight = (int) Math.ceil(r.getHeight()) + MapInfoConstants.TEXT_VERTICAL_MARGIN * 2;
37 Composite oc = g2d.getComposite();
38 g2d.setComposite(MapInfoConstants.INFO_COMPOSITE);
39 g2d.setStroke(MapInfoConstants.INFO_STROKE);
41 g2d.setColor(MapInfoConstants.TEXT_BG_COLOR);
42 rect.setFrameFromDiagonal(frameMaxX - frameWidth, frameMaxY - frameHeight, frameMaxX, frameMaxY);
45 g2d.setColor(Color.BLACK);
46 g2d.drawString(MapInfoConstants.ATTRIBUTION,
47 (int) rect.getMinX() + MapInfoConstants.TEXT_HORIZONTAL_MARGIN,
48 (int) frameMaxY - fm.getMaxDescent() - MapInfoConstants.TEXT_VERTICAL_MARGIN);
53 setMapInfoNextY(g2d, yOffsetFromBottom + rect.getHeight() + MapInfoConstants.INFO_ROW_SPACING);