private PointFigure createPointFigure(Point geometry, FigureStyle style) { return new SimpleFeaturePointFigure(createSimpleFeature(geometry), sceneTransformProvider, style); }
@Override public Object createMemento() { return getGeometry().clone(); }
@Override public void setMemento(Object memento) { Point point = (Point) memento; simpleFeature.setDefaultGeometry(point); forceRegeneration(); fireFigureChanged(); }
@Test public void testScaling() throws Exception { SimpleFeatureType type = createShipTrackFeatureType(); SimpleFeature feature = createFeature(type, 1, 53.1F, 13.2F, 0.5); sceneTransformProvider = new SceneTransformProvider() { @Override public MathTransform2D getModelToSceneTransform() { return MathTransform2D.IDENTITY; } @Override public MathTransform2D getSceneToModelTransform() { return MathTransform2D.IDENTITY; } }; SimpleFeaturePointFigure figure = new SimpleFeaturePointFigure(feature, sceneTransformProvider, new DefaultFigureStyle()); Coordinate coordinate = figure.getGeometry().getCoordinate(); assertEquals(13.2F, coordinate.x, 1e-10); assertEquals(53.1F, coordinate.y, 1e-10); boolean closeTo = figure.isCloseTo(new Point2D.Double(13.2F, 53.1F), new AffineTransform()); assertEquals(true, closeTo); }
private void drawLabel(Rendering rendering, String label) { final Graphics2D graphics = rendering.getGraphics(); final Font oldFont = graphics.getFont(); final Stroke oldStroke = graphics.getStroke(); final Paint oldPaint = graphics.getPaint(); try { graphics.setFont(labelFont); GlyphVector glyphVector = labelFont.createGlyphVector(graphics.getFontRenderContext(), label); Rectangle2D logicalBounds = glyphVector.getLogicalBounds(); float tx = (float) (logicalBounds.getX() - 0.5 * logicalBounds.getWidth()); float ty = (float) (getSymbol().getBounds().getMaxY() + logicalBounds.getHeight() + 1.0); Shape labelOutline = glyphVector.getOutline(tx, ty); for (int i = 0; i < labelOutlineAlphas.length; i++) { graphics.setStroke(labelOutlineStrokes[i]); graphics.setPaint(labelOutlineColors[i]); graphics.draw(labelOutline); } graphics.setPaint(labelFontColor); graphics.fill(labelOutline); } finally { graphics.setPaint(oldPaint); graphics.setStroke(oldStroke); graphics.setFont(oldFont); } }
@Override public void setLocation(double x, double y) { Coordinate coordinate = geometry.getCoordinate(); coordinate.x = x; coordinate.y = y; final Point2D.Double modelCoords = new Point2D.Double(x, y); final Point2D.Double sceneCoords = new Point2D.Double(); try { sceneTransformProvider.getModelToSceneTransform().transform(modelCoords, sceneCoords); simpleFeature.setDefaultGeometry(new AwtGeomToJtsGeomConverter().createPoint(sceneCoords)); } catch (TransformException e) { coordinate.x = Double.NaN; coordinate.y = Double.NaN; } geometry.geometryChanged(); fireFigureChanged(); }
public static Color getPlacemarkColor(Placemark placemark, ProductSceneView view) { final String styleCss = placemark.getStyleCss(); if (styleCss.contains(DefaultFigureStyle.FILL_COLOR.getName())) { return DefaultFigureStyle.createFromCss(styleCss).getFillColor(); } final Figure[] figures = getFigures(view); for (Figure figure : figures) { if (figure instanceof SimpleFeaturePointFigure) { final SimpleFeature simpleFeature = ((SimpleFeaturePointFigure) figure).getSimpleFeature(); if (simpleFeature.getID().equals(placemark.getName())) { return figure.getNormalStyle().getFillColor(); } } } return Color.BLUE; }
@Override public Handle[] createHandles(int selectionStage) { if (selectionStage == 1) { DefaultFigureStyle handleStyle = new DefaultFigureStyle(); handleStyle.setStrokeColor(Color.YELLOW); handleStyle.setStrokeOpacity(0.8); handleStyle.setStrokeWidth(1.0); handleStyle.setFillColor(Color.YELLOW); handleStyle.setFillOpacity(0.4); Symbol symbol = getSymbol(); if (symbol instanceof NamedSymbol) { NamedSymbol namedSymbol = (NamedSymbol) symbol; symbol = namedSymbol.getSymbol(); } if (symbol instanceof ShapeSymbol) { ShapeSymbol shapeSymbol = (ShapeSymbol) symbol; return new Handle[]{new PointHandle(this, handleStyle, shapeSymbol.getShape())}; } return new Handle[]{new PointHandle(this, handleStyle)}; } return super.createHandles(selectionStage); } }
public SimpleFeatureFigure createSimpleFeatureFigure(SimpleFeature simpleFeature, String defaultStyleCss) { final String css = getStyleCss(simpleFeature, defaultStyleCss); final FigureStyle normalStyle = DefaultFigureStyle.createFromCss(css); final FigureStyle selectedStyle = deriveSelectedStyle(normalStyle); final Object geometry = simpleFeature.getDefaultGeometry(); if (geometry instanceof Point) { return new SimpleFeaturePointFigure(simpleFeature, sceneTransformProvider, normalStyle, selectedStyle); } else { return new SimpleFeatureShapeFigure(simpleFeature, sceneTransformProvider, normalStyle, selectedStyle); } }
@Override public Object clone() { SimpleFeaturePointFigure clone = (SimpleFeaturePointFigure) super.clone(); SimpleFeatureBuilder builder = new SimpleFeatureBuilder(simpleFeature.getFeatureType()); builder.init(simpleFeature); clone.simpleFeature = builder.buildFeature(null); clone.simpleFeature.setDefaultGeometry(getGeometry().clone()); clone.geometry = (Point) geometry.clone(); clone.sceneTransformProvider = sceneTransformProvider; return clone; }
@Override protected void loadFigureCollection(File file, FigureCollection figureCollection) throws IOException { FeatureSource<SimpleFeatureType, SimpleFeature> featureFeatureSource; FeatureCollection<SimpleFeatureType, SimpleFeature> featureTypeSimpleFeatureFeatureCollection; featureFeatureSource = getFeatureSource(file); featureTypeSimpleFeatureFeatureCollection = featureFeatureSource.getFeatures(); try(FeatureIterator<SimpleFeature> featureIterator = featureTypeSimpleFeatureFeatureCollection.features();) { while (featureIterator.hasNext()) { SimpleFeature simpleFeature = featureIterator.next(); DefaultFigureStyle figureStyle = createDefaultFigureStyle(); Object o = simpleFeature.getDefaultGeometry(); if (o instanceof Point) { figureCollection.addFigure(new SimpleFeaturePointFigure(simpleFeature, sceneTransformProvider, figureStyle)); } else { figureCollection.addFigure(new SimpleFeatureShapeFigure(simpleFeature, sceneTransformProvider, figureStyle)); } } } }