[tiled] r706 - in trunk/src/tiled: core mapeditor mapeditor/resources mapeditor/util/cutter
svn at biggeruniverse.com
svn at biggeruniverse.com
Sat Nov 4 13:24:19 PST 2006
Author: bjorn
Date: 2006-11-04 15:24:18 -0600 (Sat, 04 Nov 2006)
New Revision: 706
Modified:
trunk/src/tiled/core/TileSet.java
trunk/src/tiled/mapeditor/MapEditor.java
trunk/src/tiled/mapeditor/resources/gui.properties
trunk/src/tiled/mapeditor/util/cutter/BasicTileCutter.java
trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java
trunk/src/tiled/mapeditor/util/cutter/TileCutter.java
Log:
Accepted patch by Pedro Miller Rabinovitch that adds manual refreshing of changed tilesets.
Modified: trunk/src/tiled/core/TileSet.java
===================================================================
--- trunk/src/tiled/core/TileSet.java 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/core/TileSet.java 2006-11-04 21:24:18 UTC (rev 706)
@@ -17,11 +17,7 @@
import java.awt.image.FilteredImageSource;
import java.io.File;
import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.LinkedList;
+import java.util.*;
import javax.imageio.ImageIO;
import tiled.mapeditor.util.TransparentImageFilter;
@@ -137,10 +133,73 @@
}
}
- public void checkUpdate() {
+ /**
+ * Refreshes a tileset from a tileset image file.
+ *
+ * @throws IOException
+ * @see TileSet#importTileBitmap(BufferedImage,TileCutter)
+ */
+ private void refreshImportedTileBitmap()
+ throws IOException
+ {
+ String imgFilename = tilebmpFile.getPath();
+
+ Image image = ImageIO.read(new File(imgFilename));
+ if (image == null) {
+ throw new IOException("Failed to load " + tilebmpFile);
+ }
+
+ Toolkit tk = Toolkit.getDefaultToolkit();
+
+ if (transparentColor != null) {
+ int rgb = transparentColor.getRGB();
+ image = tk.createImage(
+ new FilteredImageSource(image.getSource(),
+ new TransparentImageFilter(rgb)));
+ }
+
+ BufferedImage buffered = new BufferedImage(
+ image.getWidth(null),
+ image.getHeight(null),
+ BufferedImage.TYPE_INT_ARGB);
+ buffered.getGraphics().drawImage(image, 0, 0, null);
+
+ refreshImportedTileBitmap(buffered);
+ }
+
+ /**
+ * Refreshes a tileset from a buffered image. Tiles are cut by the passed
+ * cutter.
+ *
+ * @param tilebmp the image to be used, must not be null
+ */
+ private void refreshImportedTileBitmap(BufferedImage tilebmp) {
+ assert tilebmp != null;
+
+ tileCutter.reset();
+ tileCutter.setImage(tilebmp);
+
+ tileSetImage = tilebmp;
+ tileDimensions = new Rectangle(tileCutter.getTileDimensions());
+
+ int id = 0;
+ Image tile = tileCutter.getNextTile();
+ while (tile != null) {
+ int imgId = getTile(id).tileImageId;
+ overlayImage(imgId, tile);
+ tile = tileCutter.getNextTile();
+ id++;
+ }
+
+ fireTilesetChanged();
+ }
+
+ public void checkUpdate() throws IOException {
if (tilebmpFile != null &&
tilebmpFile.lastModified() > tilebmpFileLastModified)
{
+ refreshImportedTileBitmap();
+ tilebmpFileLastModified = tilebmpFile.lastModified();
}
}
Modified: trunk/src/tiled/mapeditor/MapEditor.java
===================================================================
--- trunk/src/tiled/mapeditor/MapEditor.java 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/mapeditor/MapEditor.java 2006-11-04 21:24:18 UTC (rev 706)
@@ -148,6 +148,8 @@
private final Action moveLayerDownAction, moveLayerUpAction;
private final Action mergeLayerDownAction, mergeAllLayersAction;
+ private static final String IMPORT_ERROR_MSG = Resources.getString("dialog.newtileset.import.error.message");
+
private static final String TOOL_PAINT = Resources.getString("tool.paint.name");
private static final String TOOL_ERASE = Resources.getString("tool.erase.name");
private static final String TOOL_FILL = Resources.getString("tool.fill.name");
@@ -406,16 +408,24 @@
layerMenu.add(new TMenuItem(mergeLayerDownAction));
layerMenu.add(new TMenuItem(mergeAllLayersAction));
layerMenu.addSeparator();
- layerMenu.add(createMenuItem(Resources.getString("menu.layer.properties"), null,
+ layerMenu.add(createMenuItem(
+ Resources.getString("menu.layer.properties"), null,
Resources.getString("menu.layer.properties.tooltip")));
JMenu tilesetMenu = new JMenu(Resources.getString("menu.tilesets"));
- tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.new"), null,
+ tilesetMenu.add(createMenuItem(
+ Resources.getString("menu.tilesets.new"), null,
Resources.getString("menu.tilesets.new.tooltip")));
- tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.import"), null,
+ tilesetMenu.add(createMenuItem(
+ Resources.getString("menu.tilesets.import"), null,
Resources.getString("menu.tilesets.import.tooltip")));
tilesetMenu.addSeparator();
- tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.manager"), null,
+ tilesetMenu.add(createMenuItem(
+ Resources.getString("menu.tilesets.refresh"), null,
+ Resources.getString("menu.tilesets.refresh.tooltip"), "F5"));
+ tilesetMenu.addSeparator();
+ tilesetMenu.add(createMenuItem(
+ Resources.getString("menu.tilesets.manager"), null,
Resources.getString("menu.tilesets.manager.tooltip")));
@@ -1227,6 +1237,23 @@
}
}
}
+ } else if (command.equals(Resources.getString("menu.tilesets.refresh"))) {
+ if (currentMap != null) {
+ Vector tilesets = currentMap.getTilesets();
+ Iterator iter = tilesets.iterator();
+ while (iter.hasNext()) {
+ TileSet tileset = (TileSet) iter.next();
+ try {
+ tileset.checkUpdate();
+ } catch (IOException e) {
+ JOptionPane.showMessageDialog(appFrame,
+ e.getLocalizedMessage(),
+ IMPORT_ERROR_MSG, JOptionPane.WARNING_MESSAGE);
+ }
+ }
+ mapView.repaint();
+ tilePaletteButton.setTile(currentTile);
+ }
} else if (command.equals(Resources.getString("menu.tilesets.manager"))) {
if (currentMap != null) {
TilesetManager manager = new TilesetManager(appFrame, currentMap);
@@ -2132,7 +2159,7 @@
else if (prefs.node("io").getBoolean("autoOpenLast", false)) {
// Load last map if it still exists
java.util.List recent = TiledConfiguration.getRecentFiles();
- if (recent.size() > 0) {
+ if (!recent.isEmpty()) {
String filename = (String) recent.get(0);
if (new File(filename).exists()) {
editor.loadMap(filename);
Modified: trunk/src/tiled/mapeditor/resources/gui.properties
===================================================================
--- trunk/src/tiled/mapeditor/resources/gui.properties 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/mapeditor/resources/gui.properties 2006-11-04 21:24:18 UTC (rev 706)
@@ -221,6 +221,8 @@
menu.tilesets.manager.tooltip=Open the tileset manager
menu.tilesets.new=New Tileset...
menu.tilesets.new.tooltip=Add a new internal tileset
+menu.tilesets.refresh=Refresh tilesets
+menu.tilesets.refresh.tooltip=Refresh the loaded tileset images from disk
menu.view=View
menu.view.boundaries=Show Boundaries
menu.view.boundaries.tooltip=Toggle layer boundaries
Modified: trunk/src/tiled/mapeditor/util/cutter/BasicTileCutter.java
===================================================================
--- trunk/src/tiled/mapeditor/util/cutter/BasicTileCutter.java 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/mapeditor/util/cutter/BasicTileCutter.java 2006-11-04 21:24:18 UTC (rev 706)
@@ -39,9 +39,7 @@
this.tileSpacing = tileSpacing;
this.offset = offset;
- // Do initial setup
- nextX = offset;
- nextY = offset;
+ reset();
}
public String getName() {
@@ -69,6 +67,11 @@
return null;
}
+ public void reset() {
+ nextX = offset;
+ nextY = offset;
+ }
+
public Dimension getTileDimensions() {
return new Dimension(tileWidth, tileHeight);
}
Modified: trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java
===================================================================
--- trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java 2006-11-04 21:24:18 UTC (rev 706)
@@ -34,6 +34,10 @@
return null;
}
+ public void reset() {
+ // TODO Auto-generated method stub
+ }
+
public Dimension getTileDimensions() {
// TODO Auto-generated method stub
return null;
Modified: trunk/src/tiled/mapeditor/util/cutter/TileCutter.java
===================================================================
--- trunk/src/tiled/mapeditor/util/cutter/TileCutter.java 2006-11-04 20:11:27 UTC (rev 705)
+++ trunk/src/tiled/mapeditor/util/cutter/TileCutter.java 2006-11-04 21:24:18 UTC (rev 706)
@@ -25,7 +25,7 @@
{
/**
* Sets the image that this cutter should cut in tile images.
- * @param image
+ * @param image the image that this cutter should cut
*/
public void setImage(BufferedImage image);
@@ -37,10 +37,20 @@
public Image getNextTile();
/**
+ * Resets the tile cutter so that the next call to <code>getNextTile</code>
+ * will return the first tile.
+ */
+ void reset();
+
+ /**
* Returns the default tile dimensions of tiles cut by this cutter.
* @return the default tile dimensions of tiles cut by this cutter.
*/
public Dimension getTileDimensions();
+ /**
+ * Returns the name of this tile cutter.
+ * @return the name of this tile cutter
+ */
public String getName();
}
More information about the tiled-commit
mailing list