// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.mappaint;
import java.awt.Color;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
import org.openstreetmap.josm.data.osm.visitor.paint.MapPainter;
public class SimpleNodeElemStyle extends ElemStyle {
public static final SimpleNodeElemStyle INSTANCE = new SimpleNodeElemStyle();
private SimpleNodeElemStyle() {
minScale = 0;
maxScale = 1500;
}
private static final int max(int a, int b, int c, int d) {
return Math.max(Math.max(a, b), Math.max(c, d));
}
@Override
public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, MapPainter painter,
boolean selected) {
Node n = (Node)primitive;
String name = painter.isShowNames()?painter.getNodeName(n):null;
if (n.isHighlighted()) {
painter.drawNode(n, settings.getHighlightColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name);
} else {
Color color;
if (painter.isInactive() || n.isDisabled()) {
color = settings.getInactiveColor();
} else if (selected) {
color = settings.getSelectedColor();
} else if (n.isConnectionNode()) {
if (n.isTagged()) {
color = settings.getTaggedConnectionColor();
} else {
color = settings.getConnectionColor();
}
} else {
if (n.isTagged()) {
color = settings.getTaggedColor();
} else {
color = settings.getNodeColor();
}
}
final int size = max((selected ? settings.getSelectedNodeSize() : 0),
(n.isTagged() ? settings.getTaggedNodeSize() : 0),
(n.isConnectionNode() ? settings.getConnectionNodeSize() : 0),
settings.getUnselectedNodeSize());
final boolean fill = (selected && settings.isFillSelectedNode()) ||
(n.isTagged() && settings.isFillTaggedNode()) ||
(n.isConnectionNode() && settings.isFillConnectionNode()) ||
settings.isFillUnselectedNode();
painter.drawNode(n, color, size, fill, name);
}
}
}