Whitespace

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@918 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Dave Hoover
2010-05-14 18:57:52 +00:00
parent 251da6cb22
commit 8d54026f63
4 changed files with 102 additions and 149 deletions
@@ -27,16 +27,13 @@ package com.threerings.cast;
public interface ActionCache
{
/**
* Fetches from the cache a composited set of images for a particular
* character for a particular action.
* Fetches from the cache a composited set of images for a particular character for a
* particular action.
*/
public ActionFrames getActionFrames (
CharacterDescriptor descrip, String action);
public ActionFrames getActionFrames (CharacterDescriptor descrip, String action);
/**
* Requests that the specified set of action frames for the specified
* character be cached.
* Requests that the specified set of action frames for the specified character be cached.
*/
public void cacheActionFrames (
CharacterDescriptor descrip, String action, ActionFrames frames);
public void cacheActionFrames (CharacterDescriptor descrip, String action, ActionFrames frames);
}
@@ -43,27 +43,24 @@ import com.threerings.media.util.Pathable;
import static com.threerings.media.Log.log;
/**
* Extends the base media panel with the notion of a virtual coordinate
* system. All entities in the virtual media panel have virtual
* coordinates and the virtual media panel displays a window into that
* virtual view. The panel can be made to scroll by adjusting the view
* offset slightly at the start of each tick and it will efficiently copy
* the unmodified view data and generate repaint requests for the exposed
* regions.
* Extends the base media panel with the notion of a virtual coordinate system. All entities in
* the virtual media panel have virtual coordinates and the virtual media panel displays a window
* into that virtual view. The panel can be made to scroll by adjusting the view offset slightly
* at the start of each tick and it will efficiently copy the unmodified view data and generate
* repaint requests for the exposed regions.
*/
public class VirtualMediaPanel extends MediaPanel
{
/** The code for the pathable following mode wherein we keep the view
* centered on the pathable's location. */
/** The code for the pathable following mode wherein we keep the view centered on the
* pathable's location. */
public static final byte CENTER_ON_PATHABLE = 0;
/** The code for the pathable following mode wherein we ensure that
* the marked pathable is always kept within the visible bounds of the
* view. */
/** The code for the pathable following mode wherein we ensure that the marked pathable is
* always kept within the visible bounds of the view. */
public static final byte ENCLOSE_PATHABLE = 1;
/** The code for the pathable following mode wherein we set the upper-left
* corner of the view to the coordinates of the pathable. */
/** The code for the pathable following mode wherein we set the upper-left corner of the view
* to the coordinates of the pathable. */
public static final byte TRACK_PATHABLE = 2;
/**
@@ -122,9 +119,10 @@ public class VirtualMediaPanel extends MediaPanel
{
_trackers.remove(tracker);
}
/**
* Instructs the view to follow the supplied pathable; ensuring that
* the view's coordinates are adjusted according to the follow mode.
* Instructs the view to follow the supplied pathable; ensuring that the view's coordinates
* are adjusted according to the follow mode.
*
* @param pable the pathable to follow.
* @param followMode the strategy for keeping the pathable in view.
@@ -137,8 +135,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* Clears out the pathable that was being enclosed or followed due to
* a previous call to {@link #setFollowsPathable}.
* Clears out the pathable that was being enclosed or followed due to a previous call to
* {@link #setFollowsPathable}.
*/
public void clearPathable ()
{
@@ -147,9 +145,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* We overload this to translate mouse events into the proper
* coordinates before they are dispatched to any of the mouse
* listeners.
* We overload this to translate mouse events into the proper coordinates before they are
* dispatched to any of the mouse listeners.
*/
@Override
protected void processMouseEvent (MouseEvent event)
@@ -159,9 +156,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* We overload this to translate mouse events into the proper
* coordinates before they are dispatched to any of the mouse
* listeners.
* We overload this to translate mouse events into the proper coordinates before they are
* dispatched to any of the mouse listeners.
*/
@Override
protected void processMouseMotionEvent (MouseEvent event)
@@ -171,9 +167,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* We overload this to translate mouse events into the proper
* coordinates before they are dispatched to any of the mouse
* listeners.
* We overload this to translate mouse events into the proper coordinates before they are
* dispatched to any of the mouse listeners.
*/
@Override
protected void processMouseWheelEvent (MouseWheelEvent event)
@@ -223,9 +218,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* Determines the absolute screen coordinates at which this panel is
* located and stores them for reference later when rendering. This
* is necessary in order to work around the Windows
* Determines the absolute screen coordinates at which this panel is located and stores them
* for reference later when rendering. This is necessary in order to work around the Windows
* <code>copyArea()</code> bug.
*/
protected void findRootBounds ()
@@ -245,8 +239,7 @@ public class VirtualMediaPanel extends MediaPanel
{
int width = getWidth(), height = getHeight();
// adjusts our view location to track any pathable we might be
// tracking
// adjusts our view location to track any pathable we might be tracking
trackPathable();
// if we have a new target location, we'll need to generate dirty
@@ -282,9 +275,8 @@ public class VirtualMediaPanel extends MediaPanel
}
// now go ahead and update our location so that changes in
// between here and the call to paint() for this tick don't
// booch everything
// now go ahead and update our location so that changes in between here and the call
// to paint() for this tick don't booch everything
_vbounds.x = _nx; _vbounds.y = _ny;
addObscurerDirtyRegions(false);
@@ -295,9 +287,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* Called during our tick when we have adjusted the view location. The
* {@link #_vbounds} will already have been updated to reflect our new
* view coordinates.
* Called during our tick when we have adjusted the view location. The {@link #_vbounds} will
* already have been updated to reflect our new view coordinates.
*
* @param dx the delta scrolled in the x direction (in pixels).
* @param dy the delta scrolled in the y direction (in pixels).
@@ -314,9 +305,8 @@ public class VirtualMediaPanel extends MediaPanel
}
/**
* Implements the standard pathable tracking support. Derived classes
* may wish to override this if they desire custom tracking
* functionality.
* Implements the standard pathable tracking support. Derived classes may wish to override
* this if they desire custom tracking functionality.
*/
protected void trackPathable ()
{
@@ -375,14 +365,13 @@ public class VirtualMediaPanel extends MediaPanel
int cx = (_dx > 0) ? _dx : 0;
int cy = (_dy > 0) ? _dy : 0;
// set the clip to the bounds of the component (we can't
// assume the clip is anything sensible upon entry to paint()
// because the frame manager expects us to set our own clip)
// set the clip to the bounds of the component (we can't assume the clip is anything
// sensible upon entry to paint() because the frame manager expects us to set our own
// clip)
gfx.setClip(0, 0, width, height);
// on windows, attempting to call copyArea() on a translated
// graphics context results in boochness; so we have to
// untranslate the graphics context, do our copyArea() and
// on windows, attempting to call copyArea() on a translated graphics context results
// in boochness; so we have to untranslate the graphics context, do our copyArea() and
// then translate it back
if (RunAnywhere.isWindows()) {
gfx.translate(-_abounds.x, -_abounds.y);
@@ -396,8 +385,8 @@ public class VirtualMediaPanel extends MediaPanel
width - Math.abs(_dx),
height - Math.abs(_dy), -_dx, -_dy);
} catch (Exception e) {
// HACK when it throws an exception trying to do the
// copy area, just repaint everything
// HACK when it throws an exception trying to do the copy area, just repaint
// everything
dirty = new Rectangle[] { new Rectangle(_vbounds) };
}
} else {
@@ -35,8 +35,8 @@ public class TransformedMirage
implements Mirage
{
/**
* Constructor for backwards compatability that automatically repositions the
* transformed mirage so its new upper-left corner is still at the origin.
* Constructor for backwards compatibility that automatically repositions the transformed
* mirage so its new upper-left corner is still at the origin.
*/
public TransformedMirage (Mirage base, AffineTransform transform)
{
@@ -119,8 +119,7 @@ public class TransformedMirage
}
/**
* Compute the bounds of the base Mirage after it has been
* transformed.
* Compute the bounds of the base Mirage after it has been transformed.
*/
protected void computeTransformedBounds ()
{
@@ -37,22 +37,19 @@ import com.threerings.media.tile.ObjectTile;
import static com.threerings.media.Log.log;
/**
* The dirty item list keeps track of dirty sprites and object tiles
* in a scene.
* The dirty item list keeps track of dirty sprites and object tiles in a scene.
*/
public class DirtyItemList
{
/**
* Creates a dirt item list that will handle dirty items for the
* specified view.
* Creates a dirt item list that will handle dirty items for the specified view.
*/
public DirtyItemList ()
{
}
/**
* Appends the dirty sprite at the given coordinates to the dirty item
* list.
* Appends the dirty sprite at the given coordinates to the dirty item list.
*
* @param sprite the dirty sprite itself.
* @param tx the sprite's x tile position.
@@ -66,8 +63,7 @@ public class DirtyItemList
}
/**
* Appends the dirty object tile at the given coordinates to the dirty
* item list.
* Appends the dirty object tile at the given coordinates to the dirty item list.
*
* @param scobj the scene object that is dirty.
*/
@@ -87,8 +83,8 @@ public class DirtyItemList
}
/**
* Returns an array of the {@link DirtyItem} objects in the list
* sorted in proper rendering order.
* Returns an array of the {@link DirtyItem} objects in the list sorted in proper rendering
* order.
*/
public void sort ()
{
@@ -121,8 +117,7 @@ public class DirtyItemList
log.info("Sorted by rear-depth", "items", toString(_ditems));
}
// now insertion sort the items from back to front into the
// render-sorted array
// now insertion sort the items from back to front into the render-sorted array
_items.clear();
POS_LOOP:
for (int ii = 0; ii < size; ii++) {
@@ -136,8 +131,7 @@ public class DirtyItemList
continue POS_LOOP;
}
}
// we don't render in front of anyone, so we go at the
// front of the list
// we don't render in front of anyone, so we go at the front of the list
_items.add(0, item);
}
@@ -160,9 +154,8 @@ public class DirtyItemList
}
/**
* Paints all the dirty items in this list using the supplied graphics
* context. The items are removed from the dirty list after being
* painted and the dirty list ends up empty.
* Paints all the dirty items in this list using the supplied graphics context. The items are
* removed from the dirty list after being painted and the dirty list ends up empty.
*/
public void paintAndClear (Graphics2D gfx)
{
@@ -197,8 +190,8 @@ public class DirtyItemList
}
/**
* Obtains a new dirty item instance, reusing an old one if possible
* or creating a new one otherwise.
* Obtains a new dirty item instance, reusing an old one if possible or creating a new one
* otherwise.
*/
protected DirtyItem getDirtyItem ()
{
@@ -210,9 +203,8 @@ public class DirtyItemList
}
/**
* Returns an abbreviated string representation of the given dirty
* item describing only its origin coordinates and render priority.
* Intended for debugging purposes.
* Returns an abbreviated string representation of the given dirty item describing only its
* origin coordinates and render priority. Intended for debugging purposes.
*/
protected static String toString (DirtyItem a)
{
@@ -222,8 +214,8 @@ public class DirtyItemList
}
/**
* Returns an abbreviated string representation of the two given dirty
* items. See {@link #toString(DirtyItem)}.
* Returns an abbreviated string representation of the two given dirty items. See
* {@link #toString(DirtyItem)}.
*/
protected static String toString (DirtyItem a, DirtyItem b)
{
@@ -234,8 +226,8 @@ public class DirtyItemList
}
/**
* Returns an abbreviated string representation of the given dirty
* items. See {@link #toString(DirtyItem)}.
* Returns an abbreviated string representation of the given dirty items. See
* {@link #toString(DirtyItem)}.
*/
protected static String toString (SortableArrayList<DirtyItem> items)
{
@@ -259,9 +251,9 @@ public class DirtyItemList
}
/**
* A class to hold the items inserted in the dirty list along with
* all of the information necessary to render their dirty regions
* to the target graphics context when the time comes to do so.
* A class to hold the items inserted in the dirty list along with all of the information
* necessary to render their dirty regions to the target graphics context when the time comes
* to do so.
*/
public class DirtyItem
{
@@ -280,15 +272,13 @@ public class DirtyItemList
/**
* Initializes a dirty item.
*/
public void init (Object obj, int x, int y)
{
public void init (Object obj, int x, int y) {
this.obj = obj;
this.ox = x;
this.oy = y;
// calculate the item's leftmost and rightmost tiles; note
// that normal (Non-MultiTile) sprites occupy only a single tile, so leftmost and
// rightmost tiles are equivalent
// calculate the item's leftmost and rightmost tiles; note that normal (Non-MultiTile)
// sprites occupy only a single tile, so leftmost and rightmost tiles are equivalent
lx = rx = ox;
ly = ry = oy;
if (obj instanceof SceneObject) {
@@ -303,12 +293,10 @@ public class DirtyItemList
}
/**
* Paints the dirty item to the given graphics context. Only
* the portion of the item that falls within the given dirty
* rectangle is actually drawn.
* Paints the dirty item to the given graphics context. Only the portion of the item that
* falls within the given dirty rectangle is actually drawn.
*/
public void paint (Graphics2D gfx)
{
public void paint (Graphics2D gfx) {
if (obj instanceof Sprite) {
((Sprite)obj).paint(gfx);
} else {
@@ -319,18 +307,15 @@ public class DirtyItemList
/**
* Returns the "depth" of our rear-most tile.
*/
public int getRearDepth ()
{
public int getRearDepth () {
return ry + lx;
}
/**
* Returns the render priority for this dirty item. It will be
* zero unless this is a display object which may have a custom
* render priority.
* Returns the render priority for this dirty item. It will be zero unless this is a
* display object which may have a custom render priority.
*/
public int getRenderPriority ()
{
public int getRenderPriority () {
if (obj instanceof SceneObject) {
return ((SceneObject)obj).getPriority();
} else {
@@ -339,18 +324,15 @@ public class DirtyItemList
}
/**
* Releases all references held by this dirty item so that it
* doesn't inadvertently hold on to any objects while waiting to
* be reused.
* Releases all references held by this dirty item so that it doesn't inadvertently hold
* on to any objects while waiting to be reused.
*/
public void clear ()
{
public void clear () {
obj = null;
}
@Override
public boolean equals (Object other)
{
public boolean equals (Object other) {
// we're never equal to something that's not our kind
if (!(other instanceof DirtyItem)) {
return false;
@@ -362,14 +344,12 @@ public class DirtyItemList
}
@Override
public int hashCode ()
{
public int hashCode () {
return obj.hashCode();
}
@Override
public String toString ()
{
public String toString () {
StringBuilder buf = new StringBuilder();
buf.append("[obj=").append(obj);
buf.append(", ox=").append(ox);
@@ -383,24 +363,21 @@ public class DirtyItemList
}
/**
* A comparator class for use in sorting dirty items in ascending
* origin x- or y-axis coordinate order.
* A comparator class for use in sorting dirty items in ascending origin x- or y-axis
* coordinate order.
*/
protected static class OriginComparator implements Comparator<DirtyItem>
{
/**
* Constructs an origin comparator that sorts dirty items in
* ascending order based on their origin coordinate on the given
* axis.
*/
public OriginComparator (int axis)
{
* Constructs an origin comparator that sorts dirty items in ascending order based on
* their origin coordinate on the given axis.
*/
public OriginComparator (int axis) {
_axis = axis;
}
// documentation inherited
public int compare (DirtyItem da, DirtyItem db)
{
public int compare (DirtyItem da, DirtyItem db) {
// if they don't overlap, sort them normally
if (_axis == X_AXIS) {
if (da.ox != db.ox) {
@@ -422,16 +399,14 @@ public class DirtyItemList
}
/**
* A comparator class for use in sorting the dirty sprites and
* objects in a scene in ascending x- and y-coordinate order
* suitable for rendering in the isometric view with proper visual
* A comparator class for use in sorting the dirty sprites and objects in a scene in ascending
* x- and y-coordinate order suitable for rendering in the isometric view with proper visual
* results.
*/
protected class RenderComparator implements Comparator<DirtyItem>
{
// documentation inherited
public int compare (DirtyItem da, DirtyItem db)
{
public int compare (DirtyItem da, DirtyItem db) {
// if the two objects are scene objects and they overlap, we
// compare them solely based on their human assigned priority
if ((da.obj instanceof SceneObject) &&
@@ -479,11 +454,10 @@ public class DirtyItemList
}
/**
* Returns whether two dirty items have a partitioning object
* between them on the given axis.
* Returns whether two dirty items have a partitioning object between them on the given
* axis.
*/
protected int comparePartitioned (int axis, DirtyItem da, DirtyItem db)
{
protected int comparePartitioned (int axis, DirtyItem da, DirtyItem db) {
// prepare for the partitioning check
SortableArrayList<DirtyItem> sitems;
Comparator<DirtyItem> comp;
@@ -529,8 +503,7 @@ public class DirtyItemList
break;
}
// get the bounding item indices and the number of
// potentially-partitioning dirty items
// get the bounding item indices and the number of potentially-partitioning dirty items
int aidx = sitems.binarySearch(da, comp);
int bidx = sitems.binarySearch(db, comp);
int size = bidx - aidx - 1;
@@ -576,11 +549,9 @@ public class DirtyItemList
}
/**
* Compares the two dirty items assuming there are no partitioning
* objects between them.
* Compares the two dirty items assuming there are no partitioning objects between them.
*/
protected int compareNonPartitioned (DirtyItem da, DirtyItem db)
{
protected int compareNonPartitioned (DirtyItem da, DirtyItem db) {
if (da.ox == db.ox &&
da.oy == db.oy) {
if (da.equals(db)) {
@@ -674,16 +645,13 @@ public class DirtyItemList
protected static final int X_AXIS = 0;
protected static final int Y_AXIS = 1;
/** The comparator used to sort dirty items in ascending origin
* x-coordinate order. */
/** The comparator used to sort dirty items in ascending origin x-coordinate order. */
protected static final Comparator<DirtyItem> ORIGIN_X_COMP = new OriginComparator(X_AXIS);
/** The comparator used to sort dirty items in ascending origin
* y-coordinate order. */
/** The comparator used to sort dirty items in ascending origin y-coordinate order. */
protected static final Comparator<DirtyItem> ORIGIN_Y_COMP = new OriginComparator(Y_AXIS);
/** The comparator used to sort dirty items in ascending "rear-depth"
* order. */
/** The comparator used to sort dirty items in ascending "rear-depth" order. */
protected static final Comparator<DirtyItem> REAR_DEPTH_COMP = new Comparator<DirtyItem>() {
public int compare (DirtyItem o1, DirtyItem o2) {
int depthDiff = (o1.getRearDepth() - o2.getRearDepth());