Allow specification of a background image to tile the background
of the panel in an aligned manner. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2553 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: VirtualMediaPanel.java,v 1.18 2003/05/02 23:49:57 mdb Exp $
|
// $Id: VirtualMediaPanel.java,v 1.19 2003/05/08 04:52:24 ray Exp $
|
||||||
|
|
||||||
package com.threerings.media;
|
package com.threerings.media;
|
||||||
|
|
||||||
@@ -16,6 +16,9 @@ import javax.swing.SwingUtilities;
|
|||||||
import com.samskivert.util.RunAnywhere;
|
import com.samskivert.util.RunAnywhere;
|
||||||
import com.samskivert.util.StringUtil;
|
import com.samskivert.util.StringUtil;
|
||||||
|
|
||||||
|
import com.threerings.media.image.ImageUtil;
|
||||||
|
import com.threerings.media.image.Mirage;
|
||||||
|
import com.threerings.media.util.MathUtil;
|
||||||
import com.threerings.media.util.Path;
|
import com.threerings.media.util.Path;
|
||||||
import com.threerings.media.util.Pathable;
|
import com.threerings.media.util.Pathable;
|
||||||
|
|
||||||
@@ -38,6 +41,14 @@ public class VirtualMediaPanel extends MediaPanel
|
|||||||
super(framemgr);
|
super(framemgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a background image to tile the background of the media panel.
|
||||||
|
*/
|
||||||
|
public void setBackground (Mirage background)
|
||||||
|
{
|
||||||
|
_background = background;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the upper-left coordinate of the view port in virtual
|
* Sets the upper-left coordinate of the view port in virtual
|
||||||
* coordinates. The view will be as efficient as possible about
|
* coordinates. The view will be as efficient as possible about
|
||||||
@@ -358,6 +369,22 @@ public class VirtualMediaPanel extends MediaPanel
|
|||||||
return Math.min(Math.max(tx, 0), vlen-len);
|
return Math.min(Math.max(tx, 0), vlen-len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// documentation inherited
|
||||||
|
protected void paintBehind (Graphics2D gfx, Rectangle dirtyRect)
|
||||||
|
{
|
||||||
|
// if we have a background image specified, tile it!
|
||||||
|
if (_background != null) {
|
||||||
|
// make sure it's aligned
|
||||||
|
int iw = _background.getWidth();
|
||||||
|
int ih = _background.getHeight();
|
||||||
|
int lowx = iw * MathUtil.floorDiv(dirtyRect.x, iw);
|
||||||
|
int lowy = ih * MathUtil.floorDiv(dirtyRect.y, ih);
|
||||||
|
ImageUtil.tileImage(gfx, _background, lowx, lowy,
|
||||||
|
dirtyRect.width + (dirtyRect.x - lowx),
|
||||||
|
dirtyRect.height + (dirtyRect.y - lowy));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Our viewport bounds in virtual coordinates. */
|
/** Our viewport bounds in virtual coordinates. */
|
||||||
protected Rectangle _vbounds = new Rectangle();
|
protected Rectangle _vbounds = new Rectangle();
|
||||||
|
|
||||||
@@ -367,6 +394,9 @@ public class VirtualMediaPanel extends MediaPanel
|
|||||||
/** Our scroll offsets. */
|
/** Our scroll offsets. */
|
||||||
protected int _dx, _dy;
|
protected int _dx, _dy;
|
||||||
|
|
||||||
|
/** Our tiling background image. */
|
||||||
|
protected Mirage _background;
|
||||||
|
|
||||||
/** A region of interest which we'll try to keep visible. */
|
/** A region of interest which we'll try to keep visible. */
|
||||||
protected Rectangle _interest;
|
protected Rectangle _interest;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user