use of java.awt.geom.Path2D in project litiengine by gurkenlabs.
the class MapUtilities method convertPolylineToPath.
public static Path2D convertPolylineToPath(final IMapObject mapObject) {
if (mapObject == null || mapObject.getPolyline() == null || mapObject.getPolyline().getPoints().isEmpty()) {
return null;
}
Path2D path = new Path2D.Float();
path.moveTo(mapObject.getLocation().getX(), mapObject.getLocation().getY());
for (int i = 1; i < mapObject.getPolyline().getPoints().size(); i++) {
Point2D point = mapObject.getPolyline().getPoints().get(i);
path.lineTo(mapObject.getLocation().getX() + point.getX(), mapObject.getLocation().getY() + point.getY());
}
return path;
}
use of java.awt.geom.Path2D in project litiengine by gurkenlabs.
the class MapComponent method renderMapObjectBounds.
private void renderMapObjectBounds(Graphics2D g) {
// render all entities
for (final IMapObjectLayer layer : Game.getEnvironment().getMap().getMapObjectLayers()) {
if (layer == null) {
continue;
}
if (!EditorScreen.instance().getMapSelectionPanel().isVisibleMapObjectLayer(layer.getName())) {
continue;
}
Color colorBoundingBoxFill;
if (layer.getColor() != null) {
colorBoundingBoxFill = new Color(layer.getColor().getRed(), layer.getColor().getGreen(), layer.getColor().getBlue(), 15);
} else {
colorBoundingBoxFill = DEFAULT_COLOR_BOUNDING_BOX_FILL;
}
for (final IMapObject mapObject : layer.getMapObjects()) {
if (mapObject == null) {
continue;
}
MapObjectType type = MapObjectType.get(mapObject.getType());
final BasicStroke shapeStroke = new BasicStroke(1f / Game.getCamera().getRenderScale());
// render spawn points
if (type == MapObjectType.SPAWNPOINT) {
g.setColor(COLOR_SPAWNPOINT);
Game.getRenderEngine().renderShape(g, new Rectangle2D.Double(mapObject.getBoundingBox().getCenterX() - 1, mapObject.getBoundingBox().getCenterY() - 1, 2, 2));
} else if (type == MapObjectType.PATH) {
if (mapObject.getPolyline() == null || mapObject.getPolyline().getPoints().isEmpty()) {
continue;
}
// found the path for the rat
final Path2D path = MapUtilities.convertPolylineToPath(mapObject);
if (path == null) {
continue;
}
g.setColor(COLOR_LANE);
Game.getRenderEngine().renderOutline(g, path, shapeStroke);
Point2D start = new Point2D.Double(mapObject.getLocation().getX(), mapObject.getLocation().getY());
Game.getRenderEngine().renderShape(g, new Ellipse2D.Double(start.getX() - 1, start.getY() - 1, 3, 3));
Game.getRenderEngine().renderText(g, "#" + mapObject.getId() + "(" + mapObject.getName() + ")", start.getX(), start.getY() - 5);
}
if (type != MapObjectType.COLLISIONBOX) {
this.renderBoundingBox(g, mapObject, colorBoundingBoxFill, shapeStroke);
}
this.renderCollisionBox(g, mapObject, shapeStroke);
}
}
}
use of java.awt.geom.Path2D in project litiengine by gurkenlabs.
the class PathFinder method findDirectPath.
public Path findDirectPath(final Point2D start, final Point2D target) {
final Path2D path2D = new GeneralPath(Path2D.WIND_NON_ZERO);
path2D.moveTo(start.getX(), start.getY());
path2D.lineTo(target.getX(), target.getY());
final List<Point2D> points = new ArrayList<>();
points.add(start);
points.add(target);
return new Path(start, target, path2D, points);
}
use of java.awt.geom.Path2D in project processdash by dtuma.
the class AbstractRecolorableIcon method shape.
protected Shape shape(float... coords) {
Path2D result = new Path2D.Float();
result.moveTo(coords[0], coords[1]);
for (int i = 2; i < coords.length; i += 2) result.lineTo(coords[i], coords[i + 1]);
result.closePath();
return result;
}
use of java.awt.geom.Path2D in project jdk8u_jdk by JetBrains.
the class PiscesRenderingEngine method createStrokedShape.
/**
* Create a widened path as specified by the parameters.
* <p>
* The specified {@code src} {@link Shape} is widened according
* to the specified attribute parameters as per the
* {@link BasicStroke} specification.
*
* @param src the source path to be widened
* @param width the width of the widened path as per {@code BasicStroke}
* @param caps the end cap decorations as per {@code BasicStroke}
* @param join the segment join decorations as per {@code BasicStroke}
* @param miterlimit the miter limit as per {@code BasicStroke}
* @param dashes the dash length array as per {@code BasicStroke}
* @param dashphase the initial dash phase as per {@code BasicStroke}
* @return the widened path stored in a new {@code Shape} object
* @since 1.7
*/
public Shape createStrokedShape(Shape src, float width, int caps, int join, float miterlimit, float[] dashes, float dashphase) {
final Path2D p2d = new Path2D.Float();
strokeTo(src, null, width, NormMode.OFF, caps, join, miterlimit, dashes, dashphase, new PathConsumer2D() {
public void moveTo(float x0, float y0) {
p2d.moveTo(x0, y0);
}
public void lineTo(float x1, float y1) {
p2d.lineTo(x1, y1);
}
public void closePath() {
p2d.closePath();
}
public void pathDone() {
}
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) {
p2d.curveTo(x1, y1, x2, y2, x3, y3);
}
public void quadTo(float x1, float y1, float x2, float y2) {
p2d.quadTo(x1, y1, x2, y2);
}
public long getNativeConsumer() {
throw new InternalError("Not using a native peer");
}
});
return p2d;
}
Aggregations