
package uk.co.wingpath.gpx;

import java.io.*;
import java.util.*;
import uk.co.wingpath.xml.*;
import uk.co.wingpath.util.*;

// Two lat/lon pairs defining the extent of an element.

public class Bounds
    implements Xml.Savable, Xml.Loader
{
    private double minlat;      // The minimum latitude.
                                // -90.0 <= value <= 90.0
    private double minlon;      // The minimum longitude.
                                // -180.0 <= value < 180.0
    private double maxlat;      // The maximum latitude.
                                // -90.0 <= value <= 90.0
    private double maxlon;      // The maximum longitude.
                                // -180.0 <= value < 180.0

    public Bounds ()
    {
        minlat = 0.0;
        minlon = 0.0;
        maxlat = 0.0;
        maxlon = 0.0;
    }

    public double getMinLatitude ()
    {
        return minlat;
    }

    public double getMaxLatitude ()
    {
        return maxlat;
    }

    public double getMinLongitude ()
    {
        return minlon;
    }

    public double getMaxLongitude ()
    {
        return maxlon;
    }

    public Xml.Loader startChild (String tag)
    {
        return null;
    }

    public void end (String value)
        throws ValueException
    {
        if (!value.equals (""))
            throw new ValueException ("Value not allowed");
    }

    public void cleanup ()
    {
    }

    public void attribute (String attr, String value)
    {
        if (attr.equals ("minlat"))
            minlat = Double.parseDouble (value);
        else if (attr.equals ("minlon"))
            minlon = Double.parseDouble (value);
        else if (attr.equals ("maxlat"))
            maxlat = Double.parseDouble (value);
        else if (attr.equals ("maxlon"))
            maxlon = Double.parseDouble (value);
    }

    public void save (Xml.Saver saver)
        throws IOException
    {
        saver.saveAttribute ("minlat", "" + minlat);
        saver.saveAttribute ("minlon", "" + minlon);
        saver.saveAttribute ("maxlat", "" + maxlat);
        saver.saveAttribute ("maxlon", "" + maxlon);
    }
}

