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