001
002/*
003 * Copyright (C) 2010 Archie L. Cobbs. All rights reserved.
004 *
005 * $Id$
006 */
007
008package org.dellroad.jibxbindings.pidf.lo.gml;
009
010import java.net.URI;
011
012/**
013 * GML ellipse.
014 */
015public class Ellipse extends Surface {
016
017    private double[] center;
018    private Measure semiMajorAxis;
019    private Measure semiMinorAxis;
020    private Measure orientation;
021
022    public Ellipse() {
023    }
024
025    public Ellipse(String gid, URI srsName, int srsDimension,
026      double[] center, Measure semiMajorAxis, Measure semiMinorAxis, Measure orientation) {
027        super(gid, srsName, srsDimension);
028        this.setCenter(center);
029        this.setSemiMajorAxis(semiMajorAxis);
030        this.setSemiMinorAxis(semiMinorAxis);
031        this.setOrientation(orientation);
032    }
033
034    /**
035     * The center of the ellipse.
036     */
037    public double[] getCenter() {
038        return this.center;
039    }
040    public void setCenter(double[] center) {
041        this.center = center;
042    }
043
044    /**
045     * The ellipse's {@code <gs:semiMajorAxis>}.
046     */
047    public Measure getSemiMajorAxis() {
048        return this.semiMajorAxis;
049    }
050    public void setSemiMajorAxis(Measure semiMajorAxis) {
051        this.semiMajorAxis = semiMajorAxis;
052    }
053
054    /**
055     * The ellipse's {@code <gs:semiMinorAxis>}.
056     */
057    public Measure getSemiMinorAxis() {
058        return this.semiMinorAxis;
059    }
060    public void setSemiMinorAxis(Measure semiMinorAxis) {
061        this.semiMinorAxis = semiMinorAxis;
062    }
063
064    /**
065     * The ellipse's {@code <gs:orientation>}.
066     */
067    public Measure getOrientation() {
068        return this.orientation;
069    }
070    public void setOrientation(Measure orientation) {
071        this.orientation = orientation;
072    }
073
074    @Override
075    public void visit(GMLObjectSwitch gmlObjectSwitch) {
076        gmlObjectSwitch.caseEllipse(this);
077    }
078
079// Cloneable
080
081    @Override
082    public Ellipse clone() {
083        final Ellipse clone = (Ellipse)super.clone();
084        clone.center = this.center != null ? this.center.clone() : null;
085        clone.semiMajorAxis = this.semiMajorAxis != null ? this.semiMajorAxis.clone() : null;
086        clone.semiMinorAxis = this.semiMinorAxis != null ? this.semiMinorAxis.clone() : null;
087        clone.orientation = this.orientation != null ? this.orientation.clone() : null;
088        return clone;
089    }
090}
091