[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine: [1668] VASSAL-src/trunk/VASSA
Brought to you by:
rodneykinney,
uckelman
From: <rod...@us...> - 2007-01-29 05:10:16
|
Revision: 1668 http://svn.sourceforge.net/vassalengine/?rev=1668&view=rev Author: rodneykinney Date: 2007-01-28 21:10:10 -0800 (Sun, 28 Jan 2007) Log Message: ----------- Get Board image size without loading image Merge from uckelman-merge@1609, 1627, 1634 Modified Paths: -------------- VASSAL-src/trunk/VASSAL/build/module/map/boardPicker/Board.java VASSAL-src/trunk/VASSAL/tools/DataArchive.java Modified: VASSAL-src/trunk/VASSAL/build/module/map/boardPicker/Board.java =================================================================== --- VASSAL-src/trunk/VASSAL/build/module/map/boardPicker/Board.java 2007-01-29 04:46:39 UTC (rev 1667) +++ VASSAL-src/trunk/VASSAL/build/module/map/boardPicker/Board.java 2007-01-29 05:10:10 UTC (rev 1668) @@ -50,6 +50,7 @@ import VASSAL.configure.ColorConfigurer; import VASSAL.configure.SingleChildInstance; import VASSAL.configure.VisibilityCondition; +import VASSAL.tools.DataArchive; public class Board extends AbstractConfigurable implements GridContainer { /** @@ -70,6 +71,7 @@ protected String boardName = "Board 1"; protected boolean reversible = false; protected boolean reversed = false; + protected boolean fixedBoundaries = false; private Color color = null; private MapGrid grid = null; private Map map; @@ -292,11 +294,13 @@ return b; } - /** @deprecated */ + /** + * @deprecated Use {@link #fixImage()} instead. + */ public void fixImage(Component map) { fixImage(); } - + public void fixImage() { if (imageFile != null && boardImage == null) { try { @@ -306,6 +310,7 @@ boardImage = GameModule.getGameModule().getDataArchive().getImage(imageFile); Icon icon = new ImageIcon(boardImage); boundaries.setSize(icon.getIconWidth(), icon.getIconHeight()); + fixedBoundaries = true; } catch (IOException e) { JOptionPane.showMessageDialog(null, "Error reading board image " + imageFile + " in " + GameModule.getGameModule().getDataArchive().getName(), @@ -351,10 +356,23 @@ * @return The (read-only) boundaries of this Board within the overall Map */ public Rectangle bounds() { - fixImage(); + fixBounds(); return new Rectangle(boundaries); } + protected void fixBounds() { + if (imageFile != null && boardImage == null && !fixedBoundaries) { + try { + boundaries.setSize(GameModule.getGameModule().getDataArchive().getImageSize(imageFile)); + fixedBoundaries = true; + } + catch (IOException e) { + JOptionPane.showMessageDialog(null, "Error reading board image " + imageFile + " in " + GameModule.getGameModule().getDataArchive().getName(), + "Not Found", JOptionPane.ERROR_MESSAGE); + } + } + } + /** * Translate the location of the board by the given number of pixels * Modified: VASSAL-src/trunk/VASSAL/tools/DataArchive.java =================================================================== --- VASSAL-src/trunk/VASSAL/tools/DataArchive.java 2007-01-29 04:46:39 UTC (rev 1667) +++ VASSAL-src/trunk/VASSAL/tools/DataArchive.java 2007-01-29 05:10:10 UTC (rev 1668) @@ -53,6 +53,9 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.stream.MemoryCacheImageInputStream; import javax.swing.ImageIcon; import sun.applet.AppletAudioClip; @@ -283,6 +286,26 @@ return Toolkit.getDefaultToolkit().createImage(prod); } + public Dimension getImageSize(String name) throws IOException { + String path = IMAGE_DIR + name; + String gifPath = path + ".gif"; + + String ext = name.substring(name.lastIndexOf('.') + 1); + ImageReader reader = + (ImageReader) ImageIO.getImageReadersBySuffix(ext).next(); + + try { + reader.setInput(new MemoryCacheImageInputStream(getFileStream(path))); + } + catch (IOException e) { + reader.setInput( + new MemoryCacheImageInputStream(getFileStream(gifPath))); + } + + return new Dimension(reader.getWidth(0), reader.getHeight(0)); + } + + /* private Shape getImageShape(String imageName) { Shape s = (Shape) imageShapes.get(imageName); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |