
com.threerings.media.sprite.SpriteIcon Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nenya Show documentation
Show all versions of nenya Show documentation
Facilities for making networked multiplayer games.
The newest version!
//
// Nenya library - tools for developing networked games
// Copyright (C) 2002-2012 Three Rings Design, Inc., All Rights Reserved
// https://github.com/threerings/nenya
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.threerings.media.sprite;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.Icon;
/**
* Implements the icon interface, using a {@link Sprite} to render the
* icon image.
*/
public class SpriteIcon implements Icon
{
/**
* Creates a sprite icon that will use the supplied sprite to render
* itself. This sprite should not be used for anything else while
* being used in this icon because it will be "moved" when the icon is
* rendered. The sprite's origin will be set to the bottom center of
* the label.
*/
public SpriteIcon (Sprite sprite)
{
this(sprite, 0);
}
/**
* Creates a sprite icon that will use the supplied sprite to render
* itself. This sprite should not be used for anything else while
* being used in this icon because it will be "moved" when the icon is
* rendered. The sprite's origin will be set to the bottom center of
* the label.
*
* @param sprite the sprite to render in this label.
* @param padding the number of pixels of blank space to put on all
* four sides of the sprite.
*/
public SpriteIcon (Sprite sprite, int padding)
{
_sprite = sprite;
// the sprite should be ticked once so that we can safely paint it
_sprite.tick(System.currentTimeMillis());
_padding = padding;
}
// documentation inherited from interface
public void paintIcon (Component c, Graphics g, int x, int y)
{
// move the sprite to a "location" that results in its image being
// in the upper left of the rectangle we desire
_sprite.setLocation(x + _sprite.getXOffset() + _padding,
y + _sprite.getYOffset() + _padding);
_sprite.paint((Graphics2D)g);
}
// documentation inherited from interface
public int getIconWidth ()
{
return _sprite.getWidth() + 2*_padding;
}
// documentation inherited from interface
public int getIconHeight ()
{
return _sprite.getHeight() + 2*_padding;
}
/** The sprite used to render this icon. */
protected Sprite _sprite;
/** Used to put a bit of padding around the sprite image. */
protected int _padding;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy