From b44864c506091076f49a319252c8199f86d249e9 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 19 Dec 2006 21:45:43 +0000 Subject: [PATCH] Some fiddling to support a potential wacky project. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@104 ed5b42cb-e716-0410-a449-f6a68f950b19 --- src/java/com/threerings/media/AbstractMediaManager.java | 8 +++++--- .../threerings/media/animation/FadeLabelAnimation.java | 2 +- src/java/com/threerings/media/sprite/ButtonSprite.java | 7 ++++++- src/java/com/threerings/media/sprite/LabelSprite.java | 8 ++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/java/com/threerings/media/AbstractMediaManager.java b/src/java/com/threerings/media/AbstractMediaManager.java index 2526e906..05f2e057 100644 --- a/src/java/com/threerings/media/AbstractMediaManager.java +++ b/src/java/com/threerings/media/AbstractMediaManager.java @@ -56,11 +56,13 @@ public abstract class AbstractMediaManager } /** - * Returns the media panel with which we are coordinating. + * Creates a graphics that can be used to compute metrics or whatever else a media might need. + * The caller should call {@link Graphics2D#dispose} on the returned object when it is done + * with it. */ - public MediaPanel getMediaPanel () + public Graphics2D createGraphics () { - return _panel; + return (Graphics2D)_panel.getGraphics(); } /** diff --git a/src/java/com/threerings/media/animation/FadeLabelAnimation.java b/src/java/com/threerings/media/animation/FadeLabelAnimation.java index 68837883..02efea64 100644 --- a/src/java/com/threerings/media/animation/FadeLabelAnimation.java +++ b/src/java/com/threerings/media/animation/FadeLabelAnimation.java @@ -61,7 +61,7 @@ public class FadeLabelAnimation extends FadeAnimation // if our label is not yet laid out, do the deed if (!_label.isLaidOut()) { - Graphics2D gfx = (Graphics2D)_mgr.getMediaPanel().getGraphics(); + Graphics2D gfx = (Graphics2D)_mgr.createGraphics(); if (gfx != null) { gfx.setRenderingHint(RenderingHints.KEY_ANTIALIASING, _antiAliased ? diff --git a/src/java/com/threerings/media/sprite/ButtonSprite.java b/src/java/com/threerings/media/sprite/ButtonSprite.java index e79e3c6b..5fe3cc58 100644 --- a/src/java/com/threerings/media/sprite/ButtonSprite.java +++ b/src/java/com/threerings/media/sprite/ButtonSprite.java @@ -254,7 +254,12 @@ public class ButtonSprite extends Sprite // lay out the label if not already if (!_label.isLaidOut()) { - _label.layout(_mgr.getMediaPanel()); + Graphics2D gfx = _mgr.createGraphics(); + try { + _label.layout(gfx); + } finally { + gfx.dispose(); + } } updateBounds(); diff --git a/src/java/com/threerings/media/sprite/LabelSprite.java b/src/java/com/threerings/media/sprite/LabelSprite.java index 00c930d1..ed3ff25c 100644 --- a/src/java/com/threerings/media/sprite/LabelSprite.java +++ b/src/java/com/threerings/media/sprite/LabelSprite.java @@ -96,13 +96,17 @@ public class LabelSprite extends Sprite */ protected void layoutLabel () { - Graphics2D gfx = (Graphics2D)_mgr.getMediaPanel().getGraphics(); - if (gfx != null) { + Graphics2D gfx = _mgr.createGraphics(); + if (gfx == null) { + return; + } + try { gfx.setRenderingHint(RenderingHints.KEY_ANTIALIASING, (_antiAliased) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF); _label.layout(gfx); + } finally { gfx.dispose(); } }