55 lines
1.4 KiB
Java
55 lines
1.4 KiB
Java
package gui;
|
|
|
|
import java.awt.Graphics2D;
|
|
import java.awt.geom.AffineTransform;
|
|
import java.util.Iterator;
|
|
|
|
import feature.StreetSegment;
|
|
import feature.StreetThemeLibrary;
|
|
import geography.Theme;
|
|
import geography.ThemeLibrary;
|
|
|
|
/**
|
|
* A cartographer for rendering street segments.
|
|
*/
|
|
public class StreetSegmentCartographer implements Cartographer<StreetSegment>
|
|
{
|
|
private ThemeLibrary themeLibrary = new StreetThemeLibrary();
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public StreetSegmentCartographer()
|
|
{
|
|
}
|
|
|
|
@Override
|
|
public void paintHighlights(final CartographyDocument<StreetSegment> model, final Graphics2D g2,
|
|
final AffineTransform at)
|
|
{
|
|
StreetSegment segment;
|
|
Iterator<StreetSegment> it = model.highlighted();
|
|
while (it.hasNext())
|
|
{
|
|
segment = it.next();
|
|
Theme theme = themeLibrary.getHighlightTheme();
|
|
g2.setColor(theme.getColor());
|
|
g2.setStroke(theme.getStroke());
|
|
g2.draw(at.createTransformedShape(segment.getGeographicShape().getShape()));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void paintShapes(final CartographyDocument<StreetSegment> model, final Graphics2D g2,
|
|
final AffineTransform at)
|
|
{
|
|
for (StreetSegment segment : model)
|
|
{
|
|
Theme theme = themeLibrary.getTheme(segment.getCode());
|
|
g2.setColor(theme.getColor());
|
|
g2.setStroke(theme.getStroke());
|
|
g2.draw(at.createTransformedShape(segment.getGeographicShape().getShape()));
|
|
}
|
|
}
|
|
}
|