/*
* SerializableGeneralPath.java
*
* Created on December 8, 2001, 12:57 PM Last edited on October 11, 2002
*/
package nl.javel.gisbeans.geom;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
/**
* The SerializableRectangle2D class is a serializable version of the java.awt.geom.Rectangle2D
class.
* @author Peter Jacobs
* Paul Jacobs
* @since JDK 1.2
*/
public abstract class SerializableRectangle2D extends java.awt.geom.Rectangle2D
implements java.io.Serializable, java.awt.Shape, java.lang.Cloneable
{
/**
* constructs a new nl.javel.gisbeans.geom.SerializableRectangle2D.
*/
protected SerializableRectangle2D()
{
super();
}
/**
* The SerializableRectangle2D.Double class is a serializable version of the
* java.awt.geom.Rectangle2D.Double
class.
* @author Peter Jacobs
* Paul Jacobs
* @since JDK 1.2
*/
public static class Double extends SerializableRectangle2D
{
/** the rectangle. */
private Rectangle2D rectangle;
/**
* constructs a new nl.javel.gisbeans.geom.SerializableRectangle2D.Double.
*/
public Double()
{
this.rectangle = new Rectangle2D.Double();
}
/**
* constructs a new Double.
* @param x double; x
* @param y double; y
* @param w double; w
* @param h double; h
*/
public Double(final double x, final double y, final double w, final double h)
{
this.rectangle = new Rectangle2D.Double(x, y, w, h);
}
/** {@inheritDoc} */
@Override
public Rectangle2D createIntersection(final Rectangle2D r)
{
return this.rectangle.createIntersection(r);
}
/** {@inheritDoc} */
@Override
public Rectangle2D createUnion(final Rectangle2D r)
{
return this.rectangle.createUnion(r);
}
/** {@inheritDoc} */
@Override
public Rectangle2D getBounds2D()
{
return this.rectangle.getBounds2D();
}
/** {@inheritDoc} */
@Override
public double getHeight()
{
return this.rectangle.getHeight();
}
/** {@inheritDoc} */
@Override
public double getWidth()
{
return this.rectangle.getWidth();
}
/** {@inheritDoc} */
@Override
public double getX()
{
return this.rectangle.getX();
}
/** {@inheritDoc} */
@Override
public double getY()
{
return this.rectangle.getY();
}
/** {@inheritDoc} */
@Override
public boolean isEmpty()
{
return this.rectangle.isEmpty();
}
/** {@inheritDoc} */
@Override
public int outcode(final double x, final double y)
{
return this.rectangle.outcode(x, y);
}
/** {@inheritDoc} */
@Override
public void setRect(final double x, final double y, final double w, final double h)
{
this.rectangle.setRect(x, y, w, h);
}
/** {@inheritDoc} */
@Override
public void setRect(final Rectangle2D r)
{
this.rectangle.setRect(r);
}
/** {@inheritDoc} */
@Override
public String toString()
{
return this.rectangle.toString();
}
/**
* Now the private serialization methods.
* @param out java.io.ObjectOutputStream; the outputstream
* @throws java.io.IOException on exception
*/
private void writeObject(final java.io.ObjectOutputStream out) throws java.io.IOException
{
out.writeDouble(this.rectangle.getX());
out.writeDouble(this.rectangle.getY());
out.writeDouble(this.rectangle.getWidth());
out.writeDouble(this.rectangle.getHeight());
}
/**
* we read the stream.
* @param in java.io.ObjectInputStream; the input
* @throws java.io.IOException on exception
*/
private void readObject(final java.io.ObjectInputStream in) throws java.io.IOException
{
this.rectangle = new Rectangle2D.Double(in.readDouble(), in.readDouble(), in.readDouble(), in.readDouble());
}
}
/**
* The SerializableRectangle2D.Float class is a serializable version of the
* java.awt.geom.Rectangle2D.Double
class.
* @author Peter Jacobs
* Paul Jacobs
* @since JDK 1.2
*/
public static class Float extends SerializableRectangle2D
{
/** the rectangle. */
private Rectangle2D rectangle;
/**
* constructs a new nl.javel.gisbeans.geom.SerializableRectangle2D.Float
*/
public Float()
{
this.rectangle = new Rectangle2D.Float();
}
/**
* constructs a new nl.javel.gisbeans.geom.SerializableRectangle2D.Float
* @param x float; the x
* @param y float; the y
* @param w float; the width
* @param h float; the height
*/
public Float(final float x, final float y, final float w, final float h)
{
this.rectangle = new Rectangle2D.Float(x, y, w, h);
}
/** {@inheritDoc} */
@Override
public Rectangle2D createIntersection(final Rectangle2D r)
{
return this.rectangle.createIntersection(r);
}
/** {@inheritDoc} */
@Override
public Rectangle2D createUnion(final Rectangle2D r)
{
return this.rectangle.createUnion(r);
}
/** {@inheritDoc} */
@Override
public Rectangle2D getBounds2D()
{
return this.rectangle.getBounds2D();
}
/** {@inheritDoc} */
@Override
public double getHeight()
{
return this.rectangle.getHeight();
}
/** {@inheritDoc} */
@Override
public double getWidth()
{
return this.rectangle.getWidth();
}
/** {@inheritDoc} */
@Override
public double getX()
{
return this.rectangle.getX();
}
/** {@inheritDoc} */
@Override
public double getY()
{
return this.rectangle.getY();
}
/** {@inheritDoc} */
@Override
public boolean isEmpty()
{
return this.rectangle.isEmpty();
}
/** {@inheritDoc} */
@Override
public int outcode(final double x, final double y)
{
return this.rectangle.outcode(x, y);
}
/**
* @param x float; the x
* @param y float; the y
* @param w float; the width
* @param h float; the height
*/
public void setRect(final float x, final float y, final float w, final float h)
{
this.rectangle.setRect(x, y, w, h);
}
/** {@inheritDoc} */
@Override
public void setRect(final double x, final double y, final double w, final double h)
{
this.rectangle.setRect(x, y, w, h);
}
/** {@inheritDoc} */
@Override
public void setRect(final Rectangle2D r)
{
this.rectangle.setRect(r);
}
/** {@inheritDoc} */
@Override
public String toString()
{
return this.rectangle.toString();
}
/**
* writes to the stream
* @param out java.io.ObjectOutputStream; the stream
* @throws IOException on IOException
*/
private void writeObject(final java.io.ObjectOutputStream out) throws IOException
{
out.writeDouble(this.rectangle.getX());
out.writeDouble(this.rectangle.getY());
out.writeDouble(this.rectangle.getWidth());
out.writeDouble(this.rectangle.getHeight());
}
/**
* Now the private serialization methods
* @param in java.io.ObjectInputStream; the stream
* @throws IOException on IOException
*/
private void readObject(final java.io.ObjectInputStream in) throws IOException
{
this.rectangle = new Rectangle2D.Float();
this.rectangle.setRect(in.readDouble(), in.readDouble(), in.readDouble(), in.readDouble());
}
}
}