package org.droidplanner.services.android.impl.core.polygon;
import org.droidplanner.services.android.impl.core.helpers.geoTools.GeoTools;
import org.droidplanner.services.android.impl.core.helpers.geoTools.LineLatLong;
import org.droidplanner.services.android.impl.core.helpers.units.Area;
import com.o3dr.services.android.lib.coordinate.LatLong;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Polygon {
private List<LatLong> points = new ArrayList<LatLong>();
public void addPoints(List<LatLong> pointList) {
for (LatLong point : pointList) {
addPoint(point);
}
}
public void addPoint(LatLong coord) {
points.add(coord);
}
public void clearPolygon() {
points.clear();
}
public List<LatLong> getPoints() {
return points;
}
public List<LineLatLong> getLines() {
List<LineLatLong> list = new ArrayList<LineLatLong>();
for (int i = 0; i < points.size(); i++) {
int endIndex = (i == 0) ? points.size() - 1 : i - 1;
list.add(new LineLatLong(points.get(i), points.get(endIndex)));
}
return list;
}
public void movePoint(LatLong coord, int number) {
points.get(number).set(coord);
}
public Area getArea() {
return GeoTools.getArea(this);
}
/*
* @Override public List<LatLng> getPathPoints() { List<LatLng> path =
* getLatLngList(); if (getLatLngList().size() > 2) { path.add(path.get(0));
* } return path; }
*/
public void checkIfValid() throws Exception {
if (points.size() < 3) {
throw new InvalidPolygon(points.size());
}
}
public class InvalidPolygon extends Exception {
private static final long serialVersionUID = 1L;
public int size;
public InvalidPolygon(int size) {
this.size = size;
}
}
public void reversePoints() {
Collections.reverse(points);
}
}