/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.g2d.image.impl; import java.awt.Color; import java.awt.Paint; import java.awt.Shape; import java.awt.Stroke; import java.awt.geom.Rectangle2D; import java.util.EnumSet; import org.simantics.g2d.image.Image; import org.simantics.scenegraph.Node; import org.simantics.scenegraph.g2d.G2DParentNode; import org.simantics.scenegraph.g2d.nodes.ShapeNode; /** * @author Tuukka Lehtonen */ public class ShapeImage extends AbstractImage implements Image { private static final EnumSet defaultFeats = VECTOR; Shape shape; Paint paint; Stroke stroke; EnumSet feats; boolean scaleStroke = false; public ShapeImage(Shape shape, Paint fill, Stroke stroke) { this(shape, fill, stroke, defaultFeats); } public ShapeImage(Shape shape, Paint fill, Stroke stroke, boolean scaleStroke) { this(shape, fill, stroke, scaleStroke, defaultFeats); } public ShapeImage(Shape shape, Paint fill, Stroke stroke, EnumSet features) { this(shape, fill, stroke, false, features); } public ShapeImage(Shape shape, Paint fill, Stroke stroke, boolean scaleStroke, EnumSet features) { this.shape = shape; this.paint = fill; this.stroke = stroke; this.scaleStroke = scaleStroke; this.feats = features; } @Override public Rectangle2D getBounds() { return shape.getBounds2D(); } @Override public EnumSet getFeatures() { return feats; } @Override public Shape getOutline() { return shape; } @Override public Node init(G2DParentNode parent) { ShapeNode shapeNode = parent.getOrCreateNode("ShapeImage", ShapeNode.class); shapeNode.setShape(shape); shapeNode.setStroke(stroke); shapeNode.setFill(paint != null); shapeNode.setColor(paint != null ? paint : Color.BLACK); shapeNode.setScaleStroke(scaleStroke); return shapeNode; } };