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 { private ThemeLibrary themeLibrary = new StreetThemeLibrary(); /** * */ public StreetSegmentCartographer() { } @Override public void paintHighlights(final CartographyDocument model, final Graphics2D g2, final AffineTransform at) { StreetSegment segment; Iterator 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 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())); } } }