be-graphes/src/main/org/insa/graphics/drawing/utils/PolylineAutoScaling.java

59 lines
1.6 KiB
Java

package org.insa.graphics.drawing.utils;
import java.awt.Color;
import java.util.ArrayList;
import org.insa.graph.Point;
import org.mapsforge.core.graphics.Canvas;
import org.mapsforge.core.graphics.GraphicFactory;
import org.mapsforge.core.model.BoundingBox;
import org.mapsforge.core.model.LatLong;
import org.mapsforge.map.awt.graphics.AwtGraphicFactory;
import org.mapsforge.map.layer.overlay.Polyline;
public class PolylineAutoScaling extends Polyline {
// Graphic factory.
private static final GraphicFactory GRAPHIC_FACTORY = AwtGraphicFactory.INSTANCE;
// Original width of the polyline.
private final int width;
/**
* @param width
* @param color
*/
public PolylineAutoScaling(int width, Color color) {
super(GRAPHIC_FACTORY.createPaint(), GRAPHIC_FACTORY);
getPaintStroke().setColor(PaintUtils.convertColor(color));
this.width = width;
}
/**
* @param point
*/
public void add(Point point) {
getLatLongs().add(new LatLong(point.getLatitude(), point.getLongitude()));
}
/**
* @param points
*/
public void add(ArrayList<Point> points) {
for (Point point: points) {
add(point);
}
}
@Override
public synchronized void draw(BoundingBox boundingBox, byte zoomLevel, Canvas canvas,
org.mapsforge.core.model.Point topLeftPoint) {
// Update paint stroke with width for level
this.getPaintStroke().setStrokeWidth(PaintUtils.getStrokeWidth(width, zoomLevel));
super.draw(boundingBox, zoomLevel, canvas, topLeftPoint);
}
}