// // $Id: ObjectTile.java,v 1.13 2003/01/13 22:49:46 mdb Exp $ package com.threerings.media.tile; import com.threerings.media.image.Mirage; /** * An object tile extends the base tile to provide support for objects * whose image spans more than one unit tile. * *
An object tile is generally positioned based on its origin rather * than the upper left of its image. Generally this origin is in the * bottom center of the object image, but can be configured to be anywhere * that the natural center point of "contact" is for the object. Note that * this does not automatically adjust the semantics of {@link #paint}, it * is just expected that the caller will account for the object tile's * origin when painting, if appropriate. * *
An object tile has dimensions (in tile units) that represent its
* footprint or "shadow".
*/
public class ObjectTile extends Tile
{
/**
* Constructs a new object tile with the specified image. The base
* width and height should be set before using this tile.
*/
public ObjectTile (Mirage image)
{
super(image);
}
/**
* Returns the object footprint width in tile units.
*/
public int getBaseWidth ()
{
return _baseWidth;
}
/**
* Returns the object footprint height in tile units.
*/
public int getBaseHeight ()
{
return _baseHeight;
}
/**
* Sets the object footprint in tile units.
*/
protected void setBase (int width, int height)
{
_baseWidth = width;
_baseHeight = height;
}
/**
* Returns the x offset into the tile image of the origin (which will
* be aligned with the bottom center of the origin tile) or
* Integer.MIN_VALUE if the origin is not explicitly
* specified and should be computed from the image size and tile
* footprint.
*/
public int getOriginX ()
{
return _originX;
}
/**
* Returns the y offset into the tile image of the origin (which will
* be aligned with the bottom center of the origin tile) or
* Integer.MIN_VALUE if the origin is not explicitly
* specified and should be computed from the image size and tile
* footprint.
*/
public int getOriginY ()
{
return _originY;
}
/**
* Sets the offset in pixels from the origin of the tile image to the
* origin of the object. The object will be rendered such that its
* origin is at the bottom center of its origin tile. If no origin is
* specified, the bottom of the image is aligned with the bottom of
* the origin tile and the left side of the image is aligned with the
* left edge of the left-most base tile.
*/
protected void setOrigin (int x, int y)
{
_originX = x;
_originY = y;
}
// documentation inherited
public void toString (StringBuffer buf)
{
super.toString(buf);
buf.append(", baseWidth=").append(_baseWidth);
buf.append(", baseHeight=").append(_baseHeight);
buf.append(", originX=").append(_originX);
buf.append(", originY=").append(_originY);
}
/** The object footprint width in unit tile units. */
protected int _baseWidth = 1;
/** The object footprint height in unit tile units. */
protected int _baseHeight = 1;
/** The x offset from the origin of the tile image to the object's
* origin or MIN_VALUE if the origin should be calculated based on the
* footprint. */
protected int _originX = Integer.MIN_VALUE;
/** The y offset from the origin of the tile image to the object's
* origin or MIN_VALUE if the origin should be calculated based on the
* footprint. */
protected int _originY = Integer.MIN_VALUE;
}