package org.mapfish.print.processor.map.scalebar;
import java.awt.Graphics2D;
/**
* Scalebar type.
*/
public enum Type {
/**
* A simple line with ticks.
*/
LINE("line") {
@Override
public ScalebarDrawer createDrawer(final Graphics2D graphics2d, final ScaleBarRenderSettings settings) {
return new LineScalebarDrawer(graphics2d, settings);
}
},
/**
* A bar with alternating black and white zones marking the sub-intervals.
*/
BAR("bar") {
@Override
public ScalebarDrawer createDrawer(final Graphics2D graphics2d, final ScaleBarRenderSettings settings) {
return new BarScalebarDrawer(graphics2d, settings);
}
},
/**
* A bar with alternating black and white zones marking the sub-intervals.
* Intervals have small additional ticks.
*/
BAR_SUB("bar_sub") {
@Override
public ScalebarDrawer createDrawer(final Graphics2D graphics2d, final ScaleBarRenderSettings settings) {
return new BarSubScalebarDrawer(graphics2d, settings);
}
};
private final String label;
Type(final String label) {
this.label = label;
}
/**
* Create a {@link ScalebarDrawer} instance for this type.
*
* @param graphics2d The graphics context.
* @param settings Parameters for rendering the scalebar.
*/
public abstract ScalebarDrawer createDrawer(final Graphics2D graphics2d, final ScaleBarRenderSettings settings);
/**
* Get a type from its label.
* @param label the type label
*/
public static Type fromString(final String label) {
if (label != null) {
for (Type type : Type.values()) {
if (label.equalsIgnoreCase(type.label)) {
return type;
}
}
}
return null;
}
public final String getLabel() {
return this.label;
}
}