Search in sources :

Example 81 with Path2D

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;
}
Also used : Point2D(java.awt.geom.Point2D) Path2D(java.awt.geom.Path2D) Point(java.awt.Point)

Example 82 with Path2D

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);
        }
    }
}
Also used : BasicStroke(java.awt.BasicStroke) Point2D(java.awt.geom.Point2D) IMapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer) Color(java.awt.Color) Path2D(java.awt.geom.Path2D) Rectangle2D(java.awt.geom.Rectangle2D) IMapObject(de.gurkenlabs.litiengine.environment.tilemap.IMapObject) MapObjectType(de.gurkenlabs.litiengine.environment.tilemap.MapObjectType)

Example 83 with Path2D

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);
}
Also used : GeneralPath(java.awt.geom.GeneralPath) GeneralPath(java.awt.geom.GeneralPath) Point2D(java.awt.geom.Point2D) Path2D(java.awt.geom.Path2D) ArrayList(java.util.ArrayList)

Example 84 with Path2D

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;
}
Also used : Path2D(java.awt.geom.Path2D)

Example 85 with Path2D

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;
}
Also used : Path2D(java.awt.geom.Path2D) PathConsumer2D(sun.awt.geom.PathConsumer2D)

Aggregations

Path2D (java.awt.geom.Path2D)126 Point2D (java.awt.geom.Point2D)20 Area (java.awt.geom.Area)16 Rectangle2D (java.awt.geom.Rectangle2D)13 Shape (java.awt.Shape)9 Point (java.awt.Point)8 Line2D (java.awt.geom.Line2D)8 PathIterator (java.awt.geom.PathIterator)8 ArrayList (java.util.ArrayList)8 AffineTransform (java.awt.geom.AffineTransform)7 GeneralPath (java.awt.geom.GeneralPath)7 Color (java.awt.Color)6 Graphics2D (java.awt.Graphics2D)6 Paint (java.awt.Paint)6 ShapeRoi (ij.gui.ShapeRoi)5 BasicStroke (java.awt.BasicStroke)4 RadialGradientPaint (java.awt.RadialGradientPaint)4 Point2D_F64 (georegression.struct.point.Point2D_F64)3 RoundRectangle2D (java.awt.geom.RoundRectangle2D)3 Vector2D (de.gurkenlabs.litiengine.util.geom.Vector2D)2