We've discovered that setting the clipping rectangle generates a crapload
of rectangle objects. Thus rendering hundreds of tiles each frame has an "undesirable" impact on garbage collection. I think Walter and I were seeing something like 400k per second of garbage. So we're back to extracting a subimage, which we're pretty sure doesn't copy the image data, but simply draws the cropped image data directly from the original rasters without creating shitloads of garbage. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1474 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: Tile.java,v 1.19 2002/05/06 18:08:32 mdb Exp $
|
// $Id: Tile.java,v 1.20 2002/06/18 22:19:56 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile;
|
package com.threerings.media.tile;
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@ public class Tile implements Cloneable
|
|||||||
{
|
{
|
||||||
_image = image;
|
_image = image;
|
||||||
_bounds = bounds;
|
_bounds = bounds;
|
||||||
|
_subimage = getImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,20 +55,11 @@ public class Tile implements Cloneable
|
|||||||
*/
|
*/
|
||||||
public void paint (Graphics gfx, int x, int y)
|
public void paint (Graphics gfx, int x, int y)
|
||||||
{
|
{
|
||||||
Shape oclip = gfx.getClip();
|
// Shape oclip = gfx.getClip();
|
||||||
gfx.clipRect(x, y, getWidth(), getHeight());
|
// gfx.clipRect(x, y, getWidth(), getHeight());
|
||||||
gfx.drawImage(_image, x - _bounds.x, y - _bounds.y, null);
|
// gfx.drawImage(_image, x - _bounds.x, y - _bounds.y, null);
|
||||||
gfx.setClip(oclip);
|
// gfx.setClip(oclip);
|
||||||
}
|
gfx.drawImage(_subimage, x, y, null);
|
||||||
|
|
||||||
/**
|
|
||||||
* Render the tile image at the top-left corner of the given shape in
|
|
||||||
* the given graphics context.
|
|
||||||
*/
|
|
||||||
public void paint (Graphics gfx, Shape dest)
|
|
||||||
{
|
|
||||||
Rectangle bounds = dest.getBounds();
|
|
||||||
paint(gfx, bounds.x, bounds.y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,6 +127,9 @@ public class Tile implements Cloneable
|
|||||||
/** Our tileset image. */
|
/** Our tileset image. */
|
||||||
protected Image _image;
|
protected Image _image;
|
||||||
|
|
||||||
|
/** Our cropped tileset image. */
|
||||||
|
protected Image _subimage;
|
||||||
|
|
||||||
/** The bounds of the tile image within the tileset image. */
|
/** The bounds of the tile image within the tileset image. */
|
||||||
protected Rectangle _bounds;
|
protected Rectangle _bounds;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user