From: Kimmo R. <ki...@us...> - 2014-06-29 18:15:30
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client/gui In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22908/src/games/stendhal/client/gui Modified Files: ItemPanel.java Added Files: TransparencyMode.java Log Message: Enabled translucency for fast enough systems --- NEW FILE: TransparencyMode.java --- package games.stendhal.client.gui; import games.stendhal.client.gui.wt.core.WtWindowManager; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Transparency; import java.awt.image.BufferedImage; import org.apache.log4j.Logger; /** * Class for determining the used transparency mode. The behavior depends on the * setting ui.transparency. Mode "bitmask" means bitmask transparency, and * "translucent" means that full alpha transparency is used. Mode "auto", means * that the appropriate mode is decided based on a speed test. */ public class TransparencyMode { /** The transparency mode that should be used for images. */ public static final int TRANSPARENCY = getMode(); /** * Determine the mode. * * @return transparency mode */ private static int getMode() { String preference = WtWindowManager.getInstance().getProperty("ui.transparency", "auto"); if ("bitmask".equals(preference)) { return Transparency.BITMASK; } if ("translucent".equals(preference)) { return Transparency.TRANSLUCENT; } // auto, and any broken value return autoMode(); } /** * Determine the appropriate transparency mode based on a speed test. * * @return transparency mode */ private static int autoMode() { long time = speedTest(); if (time < 300000000) { return Transparency.TRANSLUCENT; } Logger.getLogger(TransparencyMode.class).info("The system is slow - disabling translucency."); return Transparency.BITMASK; } /** * Run a rendering speed test. * * @return time used for running the test */ private static long speedTest() { BufferedImage buf = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); Graphics2D g = buf.createGraphics(); g.setColor(new Color(255, 232, 12, 128)); long start = System.nanoTime(); for (int i = 0; i < 1000; i++) { g.fillRect(0, 0, 32, 32); } return System.nanoTime() - start; } } Index: ItemPanel.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/ItemPanel.java,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** ItemPanel.java 19 Mar 2014 22:37:16 -0000 1.29 --- ItemPanel.java 29 Jun 2014 18:14:56 -0000 1.30 *************** *** 16,20 **** import games.stendhal.client.IGameScreen; import games.stendhal.client.StendhalClient; - import games.stendhal.client.stendhal; import games.stendhal.client.entity.IEntity; import games.stendhal.client.entity.Inspector; --- 16,19 ---- *************** *** 125,129 **** */ private Sprite preparePlaceholder(Sprite original) { ! if ((original == null) || (stendhal.TRANSPARENCY == Transparency.BITMASK)) { return original; } --- 124,128 ---- */ private Sprite preparePlaceholder(Sprite original) { ! if ((original == null) || (TransparencyMode.TRANSPARENCY == Transparency.BITMASK)) { return original; } |