Move listener class outside of MainWindow.
This commit is contained in:
35
src/main/org/insa/graphics/drawing/utils/PaintUtils.java
Normal file
35
src/main/org/insa/graphics/drawing/utils/PaintUtils.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package org.insa.graphics.drawing.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import org.mapsforge.core.graphics.GraphicFactory;
|
||||
import org.mapsforge.map.awt.graphics.AwtGraphicFactory;
|
||||
|
||||
public class PaintUtils {
|
||||
|
||||
// Graphic factory.
|
||||
private static final GraphicFactory GRAPHIC_FACTORY = AwtGraphicFactory.INSTANCE;
|
||||
|
||||
/**
|
||||
* @param color
|
||||
* @return
|
||||
*/
|
||||
public static int convertColor(Color color) {
|
||||
return GRAPHIC_FACTORY.createColor(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param width
|
||||
* @return
|
||||
*/
|
||||
public static int getStrokeWidth(int width, byte zoomLevel) {
|
||||
int mul = 2;
|
||||
if (zoomLevel < 8) {
|
||||
mul = 1;
|
||||
}
|
||||
else {
|
||||
mul += 2 * (zoomLevel - 8) / 3;
|
||||
}
|
||||
return width * mul;
|
||||
}
|
||||
}
|
@@ -0,0 +1,58 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user