Search in sources :

Example 21 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class EditRecordGeometryOverlay method modeMoveGeometryFinish.

protected boolean modeMoveGeometryFinish(final MouseEvent event) {
    if (event.getButton() == MouseEvent.BUTTON1) {
        if (clearOverlayAction(ACTION_MOVE_GEOMETRY)) {
            clearOverlayAction(ACTION_ADD_GEOMETRY_EDIT_VERTICES);
            clearOverlayAction(ACTION_EDIT_GEOMETRY_VERTICES);
            final MultipleUndo edit = new MultipleUndo();
            for (final CloseLocation location : this.moveGeometryLocations) {
                final GeometryFactory geometryFactory = location.getGeometryFactory();
                final Point from = this.moveGeometryStart.convertGeometry(geometryFactory);
                final Point to = this.moveGeometryEnd.convertGeometry(geometryFactory);
                final double deltaX = to.getX() - from.getX();
                final double deltaY = to.getY() - from.getY();
                if (deltaX != 0 || deltaY != 0) {
                    final Geometry geometry = location.getGeometry();
                    if (geometry instanceof GeometryEditor<?>) {
                        final GeometryEditor<?> geometryEditor = (GeometryEditor<?>) geometry;
                        edit.addEdit(new MoveGeometryUndoEdit(geometryEditor, deltaX, deltaY));
                    } else {
                        final Geometry newGeometry = geometry.edit(editor -> {
                            editor.move(deltaX, deltaY);
                            for (final Vertex vertex : editor.vertices()) {
                                final double z = getElevation(vertex);
                                if (Double.isFinite(z)) {
                                    vertex.setZ(z);
                                }
                            }
                            return editor;
                        });
                        final UndoableEdit geometryEdit = setGeometry(location, newGeometry);
                        edit.addEdit(geometryEdit);
                    }
                }
            }
            if (!edit.isEmpty()) {
                edit.addEdit(new ClearXorUndoEdit());
                addUndo(edit);
            }
            modeMoveGeometryClear();
            repaint();
            return true;
        }
    }
    return false;
}
Also used : CloseLocation(com.revolsys.swing.map.overlay.CloseLocation) Geometry(com.revolsys.geometry.model.Geometry) MoveGeometryUndoEdit(com.revolsys.swing.map.overlay.record.geometryeditor.MoveGeometryUndoEdit) Vertex(com.revolsys.geometry.model.vertex.Vertex) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) UndoableEdit(javax.swing.undo.UndoableEdit) AbstractUndoableEdit(com.revolsys.swing.undo.AbstractUndoableEdit) Point(com.revolsys.geometry.model.Point) MultipleUndo(com.revolsys.swing.undo.MultipleUndo) GeometryEditor(com.revolsys.geometry.model.editor.GeometryEditor)

Example 22 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class MapPanel method findCloseLocation.

public CloseLocation findCloseLocation(final GeometryFactory viewportGeometryFactory2d, final AbstractRecordLayer layer, final LayerRecord record, final Geometry geometry, final double x, final double y, final double maxDistance) {
    final Geometry convertedGeometry = geometry.convertGeometry(viewportGeometryFactory2d);
    final Pair<GeometryComponent, Double> closestGeometryComponent = convertedGeometry.findClosestGeometryComponent(x, y, maxDistance);
    if (!closestGeometryComponent.isEmpty()) {
        final GeometryComponent geometryComponent = closestGeometryComponent.getValue1();
        if (geometryComponent instanceof Vertex) {
            final Vertex convertedVertex = (Vertex) geometryComponent;
            final int[] vertexId = convertedVertex.getVertexId();
            // Get the vertex from the original geometry
            final Vertex vertex = geometry.getVertex(vertexId);
            return new CloseLocation(layer, record, vertex);
        } else if (geometryComponent instanceof Segment) {
            final Segment convertedSegment = (Segment) geometryComponent;
            final int[] segmentId = convertedSegment.getSegmentId();
            // Get the segment from the original geometry
            final Segment segment = geometry.getSegment(segmentId);
            final Point closePoint = convertedSegment.project(x, y);
            final Point sourcePoint = geometry.convertGeometry(closePoint);
            return new CloseLocation(layer, record, segment, closePoint, sourcePoint);
        }
    }
    return null;
}
Also used : Geometry(com.revolsys.geometry.model.Geometry) CloseLocation(com.revolsys.swing.map.overlay.CloseLocation) GeometryComponent(com.revolsys.geometry.model.GeometryComponent) Vertex(com.revolsys.geometry.model.vertex.Vertex) Point(com.revolsys.geometry.model.Point) Segment(com.revolsys.geometry.model.segment.Segment)

Example 23 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class MarkerStyleRenderer method renderMarkers.

public static void renderMarkers(final Viewport2D viewport, final Graphics2D graphics, LineString line, final MarkerStyle styleFirst, final MarkerStyle styleLast, final MarkerStyle styleVertex) {
    if (line != null) {
        final GeometryFactory geometryFactory = viewport.getGeometryFactory2dFloating();
        line = line.convertGeometry(geometryFactory);
        for (final Vertex vertex : line.vertices()) {
            MarkerStyle style;
            if (vertex.isFrom()) {
                style = styleFirst;
            } else if (vertex.isTo()) {
                style = styleLast;
            } else {
                style = styleVertex;
            }
            final double orientation = vertex.getOrientaton();
            renderMarker(viewport, graphics, vertex, style, orientation);
        }
    }
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) MarkerStyle(com.revolsys.swing.map.layer.record.style.MarkerStyle)

Example 24 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class MarkerStyleRenderer method renderMarkerVertices.

public static final void renderMarkerVertices(final Viewport2D viewport, final Graphics2D graphics, Geometry geometry, final MarkerStyle style) {
    geometry = getGeometry(viewport, geometry);
    if (Property.hasValue(geometry)) {
        final String orientationType = style.getMarkerOrientationType();
        if ("none".equals(orientationType)) {
            for (final Vertex vertex : geometry.vertices()) {
                renderMarker(viewport, graphics, vertex, style, 0);
            }
        } else {
            for (final Vertex vertex : geometry.vertices()) {
                final double orientation = vertex.getOrientaton();
                renderMarker(viewport, graphics, vertex, style, orientation);
            }
        }
    }
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex) LineString(com.revolsys.geometry.model.LineString)

Example 25 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class SelectRecordsOverlay method paintComponent.

@Override
public void paintComponent(final Viewport2D viewport, final Graphics2D graphics) {
    final GeoreferencedImage imageSelected = this.imageSelected.getResource();
    if (imageSelected != null) {
        GeoreferencedImageLayerRenderer.render(viewport, graphics, imageSelected, false);
    }
    final GeometryFactory viewportGeometryFactory = getViewportGeometryFactory2d();
    final MapPanel map = getMap();
    final List<LayerRecord> closeSelectedRecords = map.getCloseSelectedRecords();
    if (!closeSelectedRecords.isEmpty()) {
        try (BaseCloseable transformCloseable = viewport.setUseModelCoordinates(graphics, true)) {
            for (final LayerRecord record : closeSelectedRecords) {
                final Geometry geometry = record.getGeometry();
                if (record.isHighlighted()) {
                    this.highlightVertexRenderer.paintSelected(viewport, graphics, viewportGeometryFactory, geometry);
                } else {
                    this.selectVertexRenderer.paintSelected(viewport, graphics, viewportGeometryFactory, geometry);
                }
            }
        }
    }
    final List<CloseLocation> closeSelectedLocations = map.getCloseSelectedLocations();
    if (Property.hasValue(closeSelectedLocations)) {
        for (final CloseLocation location : closeSelectedLocations) {
            final Vertex vertex = location.getVertex();
            CLOSE_VERTEX_STYLE_RENDERER.paintSelected(viewport, graphics, viewportGeometryFactory, vertex);
        }
    }
    paintSelectBox(graphics);
}
Also used : Geometry(com.revolsys.geometry.model.Geometry) CloseLocation(com.revolsys.swing.map.overlay.CloseLocation) Vertex(com.revolsys.geometry.model.vertex.Vertex) MapPanel(com.revolsys.swing.map.MapPanel) BaseCloseable(com.revolsys.io.BaseCloseable) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) GeoreferencedImage(com.revolsys.raster.GeoreferencedImage) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord)

Aggregations

Vertex (com.revolsys.geometry.model.vertex.Vertex)42 Point (com.revolsys.geometry.model.Point)18 Geometry (com.revolsys.geometry.model.Geometry)16 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)14 LineString (com.revolsys.geometry.model.LineString)10 Polygon (com.revolsys.geometry.model.Polygon)6 Segment (com.revolsys.geometry.model.segment.Segment)6 ArrayList (java.util.ArrayList)6 GeometryEditor (com.revolsys.geometry.model.editor.GeometryEditor)4 AbstractVertex (com.revolsys.geometry.model.vertex.AbstractVertex)4 LineStringVertex (com.revolsys.geometry.model.vertex.LineStringVertex)4 BaseCloseable (com.revolsys.io.BaseCloseable)4 CloseLocation (com.revolsys.swing.map.overlay.CloseLocation)4 DataType (com.revolsys.datatype.DataType)3 LinearRing (com.revolsys.geometry.model.LinearRing)3 PointDoubleXY (com.revolsys.geometry.model.impl.PointDoubleXY)3 LineSegment (com.revolsys.geometry.model.segment.LineSegment)3 MapPanel (com.revolsys.swing.map.MapPanel)3 WebColors (com.revolsys.awt.WebColors)2 Maps (com.revolsys.collection.map.Maps)2