package org.opentrafficsim.demo.ntm.shapeobjects;
import java.awt.geom.Path2D;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Set;
import javax.media.j3d.Bounds;
import org.locationtech.jts.geom.Geometry;
import nl.tudelft.simulation.dsol.animation.Locatable;
import nl.tudelft.simulation.language.d3.DirectedPoint;
/**
 * 
 * Copyright (c) 2013-2017 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. 
 * BSD-style license. See OpenTrafficSim License.
 * 
 * $LastChangedDate$, @version $Revision$, by $Author$,
 * initial version 13 Nov 2014 
 * @author Alexander Verbraeck
 * @author Hans van Lint
 * @author Peter Knoppers
 * @author Guus Tamminga
 * @author Yufei Yuan
 */
public class ShapeObject implements Locatable
{
    /** */
    private Geometry geometry;
    /** */
    private ArrayList values;
    /** The lines for the animation, relative to the centroid. */
    private Set lines = null;
    /**
     * @param theGeom
     * @param values ArrayList<String>;
     */
    public ShapeObject(Geometry geometry, ArrayList values)
    {
        this.geometry = geometry;
        this.values = values;
    }
    /*    *//**
             * @return polygon
             * @throws RemoteException
             */
    /*
     * public Set getLines() throws RemoteException { // create the polygon if it did not exist before if (this.lines ==
     * null) { double dx = this.getLocation().getX(); double dy = this.getLocation().getY(); // double dx = 0; // double dy = 0;
     * this.lines = new LinkedHashSet(); for (int i = 0; i < this.getDesignLine().getLineString().getNumGeometries(); i++) {
     * Path2D line = new Path2D.Double(); Geometry g = this.getDesignLine().getLineString().getDesignLineN(i); boolean start =
     * true; for (Coordinate c : g.getCoordinates()) { if (start) { line.moveTo(c.x - dx, dy - c.y); start = false; } else {
     * line.lineTo(c.x - dx, dy - c.y); } } this.lines.add(line); } } return this.lines; }
     */
    /**
     * @return theGeom.
     */
    public Geometry getDesignLine()
    {
        return this.geometry;
    }
    /**
     * @param theGeom set theGeom.
     */
    public void setGeometry(Geometry geometry)
    {
        this.geometry = geometry;
    }
    /**
     * @return table.
     */
    public ArrayList getValues()
    {
        return this.values;
    }
    /**
     * @param table set table.
     */
    public void setValues(ArrayList values)
    {
        this.values = values;
    }
    /** {@inheritDoc} */
    @Override
    public DirectedPoint getLocation() throws RemoteException
    {
        return null;
    }
    /** {@inheritDoc} */
    @Override
    public Bounds getBounds() throws RemoteException
    {
        return null;
    }
}