[tiled] r603 - in trunk: . src/tiled/core src/tiled/io/xml src/tiled/mapeditor/animation src/tiled/mapeditor/dialogs src/tiled/mapeditor/util/cutter src/tiled/mapeditor/widget src/tiled/util src/tiled/view

svn@biggeruniverse.com svn at biggeruniverse.com
Sun Apr 9 12:41:22 PDT 2006


Author: bjorn
Date: 2006-04-09 14:41:21 -0500 (Sun, 09 Apr 2006)
New Revision: 603

Modified:
   trunk/README
   trunk/src/tiled/core/Tile.java
   trunk/src/tiled/core/TileSet.java
   trunk/src/tiled/io/xml/XMLMapTransformer.java
   trunk/src/tiled/mapeditor/animation/KeyDialog.java
   trunk/src/tiled/mapeditor/dialogs/TileDialog.java
   trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java
   trunk/src/tiled/mapeditor/util/cutter/TileCutter.java
   trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
   trunk/src/tiled/util/NumberedSet.java
   trunk/src/tiled/view/OrthoMapView.java
Log:
Fixed the drawing problems related to tile height. The top of the white trees in the iso demo still get cut off, but that's another problem.

Modified: trunk/README
===================================================================
--- trunk/README	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/README	2006-04-09 19:41:21 UTC (rev 603)
@@ -7,9 +7,9 @@
 most people at the moment. We need your feedback!
 
 
-Website:     http://tiled.rpgdx.net/
-Subversion:  svn://www.biggeruniverse.com/tiled/
-Bugtracker:  http://www.biggeruniverse.com/projects/flyspray/
+Website:     http://mapeditor.org/
+Subversion:  svn://svn.mapeditor.org/
+Bugtracker:  http://bugs.mapeditor.org/
 
 
 -----------------
@@ -48,3 +48,5 @@
 - GNOME and GIMP for their magnificent icons
 - Nephilim for suggesting layer opacity
 - Rainer Deyke for useful suggestions and many code contributions
+- Matthias Hartmann for the German translation
+- ElvenProgrammer for the Italian translation

Modified: trunk/src/tiled/core/Tile.java
===================================================================
--- trunk/src/tiled/core/Tile.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/core/Tile.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -54,7 +54,6 @@
             scaledImage = getImage().getScaledInstance(
                     -1, -1, Image.SCALE_DEFAULT);
         }
-        groundHeight = getHeight();
     }
 
     /**
@@ -79,12 +78,10 @@
         } else {
             internalImage = i;
         }
-        groundHeight = getHeight();
     }
 
     public void setImage(int id) {
         tileImageId = id;
-        groundHeight = getHeight();
     }
 
     /**
@@ -164,28 +161,12 @@
      * @param zoom Zoom level to draw the tile
      */
     public void drawRaw(Graphics g, int x, int y, double zoom) {
-        if (scaledImage == null || zoom != myZoom) {
-            scaledImage = getScaledImage(zoom);
-            myZoom = zoom;
-            if (scaledImage != null) {
-                MediaTracker mediaTracker = new MediaTracker(new Canvas());
-                mediaTracker.addImage(scaledImage, 0);
-                try {
-                    mediaTracker.waitForID(0);
-                }
-                catch (InterruptedException ie) {
-                    System.err.println(ie);
-                    return;
-                }
-                mediaTracker.removeImage(scaledImage);
-                g.drawImage(
-                        scaledImage, x, y, null);
-            } else {
-                // TODO: Allow drawing IDs when no image data exists as a
-                // config option
-            }
+        Image img = getScaledImage(zoom);
+        if (img != null) {
+            g.drawImage(img, x, y - img.getHeight(null), null);
         } else {
-            g.drawImage(scaledImage, x, y, null);
+            // TODO: Allow drawing IDs when no image data exists as a
+            // config option
         }
     }
 
@@ -206,8 +187,7 @@
 
     public int getWidth() {
         if (tileset != null) {
-            Dimension d
-              = tileset.getImageDimensions(tileImageId, tileOrientation);
+            Dimension d = tileset.getImageDimensions(tileImageId);
             return d.width;
         } else if (internalImage != null){
             return internalImage.getWidth(null);
@@ -217,8 +197,7 @@
 
     public int getHeight() {
         if (tileset != null) {
-            Dimension d
-              = tileset.getImageDimensions(tileImageId, tileOrientation);
+            Dimension d = tileset.getImageDimensions(tileImageId);
             return d.height;
         } else if (internalImage != null) {
             return internalImage.getHeight(null);
@@ -252,22 +231,42 @@
     }
 
     /**
-     * Returns a scaled instance of the tile image.
+     * Returns a scaled instance of the tile image. Using a MediaTracker
+     * instance, this function waits until the scaling operation is done.
+     * <p/>
+     * Internally it caches the scaled image in order to optimize the common
+     * case, where the same scale is requested as the last time.
      *
-     * @param zoom
+     * @param zoom the requested zoom level
      * @return Image
      */
     public Image getScaledImage(double zoom) {
-        Image i = getImage();
-        if (i != null) {
-            if (zoom == 1.0) {
-                return i;
-            } else {
-                return i.getScaledInstance(
+        if (zoom == 1.0) {
+            return getImage();
+        } else if (zoom == myZoom && scaledImage != null) {
+            return scaledImage;
+        } else {
+            Image img = getImage();
+            if (img != null)
+            {
+                scaledImage = img.getScaledInstance(
                         (int)(getWidth() * zoom), (int)(getHeight() * zoom),
                         BufferedImage.SCALE_SMOOTH);
+
+                MediaTracker mediaTracker = new MediaTracker(new Canvas());
+                mediaTracker.addImage(scaledImage, 0);
+                try {
+                    mediaTracker.waitForID(0);
+                }
+                catch (InterruptedException ie) {
+                    System.err.println(ie);
+                }
+                mediaTracker.removeImage(scaledImage);
+                myZoom = zoom;
+                return scaledImage;
             }
         }
+
         return null;
     }
 

Modified: trunk/src/tiled/core/TileSet.java
===================================================================
--- trunk/src/tiled/core/TileSet.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/core/TileSet.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -67,7 +67,8 @@
      * @throws Exception
      * @see TileSet#importTileBitmap(BufferedImage, TileCutter, boolean)
      */
-    public void importTileBitmap(String imgFilename, TileCutter cutter, boolean createTiles) throws Exception
+    public void importTileBitmap(String imgFilename, TileCutter cutter,
+                                 boolean createTiles) throws Exception
     {
         File imgFile = null;
         try {
@@ -83,7 +84,8 @@
     }
 
     /**
-     * Creates a tileset from a buffered image. Tiles are cut by the passed cutter.
+     * Creates a tileset from a buffered image. Tiles are cut by the passed
+     * cutter.
      *
      * @param tilebmp     the image to be used
      * @param cutter
@@ -91,8 +93,9 @@
      *                    Tiles
      * @throws Exception
      */
-    public void importTileBitmap(BufferedImage tilebmp, TileCutter cutter, boolean createTiles) throws Exception{
-
+    public void importTileBitmap(BufferedImage tilebmp, TileCutter cutter,
+                                 boolean createTiles) throws Exception
+    {
         if (tilebmp == null) {
             throw new Exception("Failed to load " + tilebmpFile);
         }
@@ -144,14 +147,6 @@
     }
 
     /**
-     * @deprecated
-     * @param i
-     */
-    public void setTilesetImage(Image i) {
-        tileSetImage = i;
-    }
-
-    /**
      * Sets the URI path of the external source of this tile set. By setting
      * this, the set is implied to be external in all other operations.
      *
@@ -219,14 +214,14 @@
             t.setId(tiles.getMaxId());
         }
 
-        if (tileDimensions.height < t.getHeight()) {
-        	tileDimensions.height = t.getHeight();
-        }
-
         if (tileDimensions.width < t.getWidth()) {
         	tileDimensions.width = t.getWidth();
         }
 
+        if (tileDimensions.height < t.getHeight()) {
+        	tileDimensions.height = t.getHeight();
+        }
+
         // Add any default properties
         // todo: use parent properties instead?
         t.getProperties().putAll(defaultTileProperties);
@@ -468,14 +463,16 @@
     }
 
     /**
-     * Returns the dimensions of an image as specified by the id
-     * <code>key</code>.
+     * Returns the dimensions of an image as specified by the id.
      *
-     * @param id
-     * @param orientation
+     * @deprecated Unless somebody can explain the purpose of this function in
+     *             its documentation, I consider this function deprecated. It
+     *             is only used by tiles, but they should in my opinion just
+     *             use their "internalImage". - Bjorn
+     * @param id the image id
      * @return dimensions of image with referenced by given key
      */
-    public Dimension getImageDimensions(int id, int orientation) {
+    public Dimension getImageDimensions(int id) {
         Image i = (Image) images.get(id);
         if (i != null) {
             return new Dimension(i.getWidth(null), i.getHeight(null));

Modified: trunk/src/tiled/io/xml/XMLMapTransformer.java
===================================================================
--- trunk/src/tiled/io/xml/XMLMapTransformer.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/io/xml/XMLMapTransformer.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -449,6 +449,7 @@
         }
 
         tile.setTileSet(set);
+
         Properties tileProps = tile.getProperties();
 
         for (int i = 0; i < children.getLength(); i++) {
@@ -460,7 +461,8 @@
                 }
                 tile.setImage(id);
             } else if (child.getNodeName().equalsIgnoreCase("property")) {
-                tileProps.setProperty(getAttributeValue(child, "name"),
+                tileProps.setProperty(
+                        getAttributeValue(child, "name"),
                         getAttributeValue(child, "value"));
             } else if (child.getNodeName().equalsIgnoreCase("animation")) {
                 // TODO: fill this in once XMLMapWriter is complete

Modified: trunk/src/tiled/mapeditor/animation/KeyDialog.java
===================================================================
--- trunk/src/tiled/mapeditor/animation/KeyDialog.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/mapeditor/animation/KeyDialog.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -1,5 +1,5 @@
 /*
- *  Tiled Map Editor, (c) 2005
+ *  Tiled Map Editor, (c) 2005-2006
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -19,21 +19,24 @@
 
 import tiled.core.*;
 
-public class KeyDialog extends JDialog implements ActionListener,MouseListener {
-
+/**
+ * $Id$
+ */
+public class KeyDialog extends JDialog implements ActionListener, MouseListener
+{
 	private Sprite sprite;
 	private JDialog owner;
 	private JList keysList;
-	private JTextField tName,tStart,tFinish,tRate;
-	private JRadioButton rbLoop,rbStop,rbReverse,rbAuto;
-	
-	public KeyDialog(JDialog o, Sprite s){
+	private JTextField tName, tStart, tFinish, tRate;
+	private JRadioButton rbLoop, rbStop, rbReverse, rbAuto;
+
+	public KeyDialog(JDialog o, Sprite s) {
 		owner = o;
 		sprite = s;
 	}
 
-	private void init(){
-		JButton b;			
+	private void init() {
+		JButton b;
 		ButtonGroup bg = new ButtonGroup();
 		setSize(380,180);
 		GridBagConstraints c=new GridBagConstraints();
@@ -41,8 +44,8 @@
 		c.fill=GridBagConstraints.BOTH;
 		getContentPane().setLayout(new GridBagLayout());
 		sp.setSize(50,200);
-		keysList = new JList();	
-		queryKeys();		
+		keysList = new JList();
+		queryKeys();
 		keysList.addMouseListener(this);
 		c.weightx=1;
 		c.weighty=1;
@@ -89,15 +92,15 @@
 		b=new JButton("OK");
 		b.addActionListener(this);
 		getContentPane().add(b,c);
-		
+
 		c.gridheight=1;
 		c.gridwidth=1;
 		c.gridx=3;
 		c.gridy=0;
-		
+
 		rbLoop = new JRadioButton("Looping");
 		rbLoop.setActionCommand("loop");
-		rbLoop.addActionListener(this);		
+		rbLoop.addActionListener(this);
 		getContentPane().add(rbLoop,c);
 		bg.add(rbLoop);
 		rbStop = new JRadioButton("Stop");
@@ -118,16 +121,16 @@
 		c.gridy=3;
 		getContentPane().add(rbAuto,c);
 		bg.add(rbAuto);
-		
+
 	}
-	
-	private void updateFields(){
+
+	private void updateFields() {
 		Sprite.KeyFrame key = sprite.getKey((String)keysList.getSelectedValue());
-		if(key!=null){		
+		if(key!=null){
 			tName.setText(key.getName());
 			//tStart.setText(""+key.getStartFrame());
 			//tFinish.setText(""+key.getFinishFrame());
-			tRate.setText(""+key.getFrameRate());
+			tRate.setText(String.valueOf(key.getFrameRate()));
 			rbLoop.setSelected(false);
 			rbStop.setSelected(false);
 			rbReverse.setSelected(false);
@@ -148,36 +151,36 @@
 			}
 		}
 	}
-	
-	private void queryKeys(){
-		try{		
-			//keysList.setListData(sprite.getKeys());		
+
+	private void queryKeys() {
+		try{
+			//keysList.setListData(sprite.getKeys());
 			repaint();
 		}catch(Exception e){
 			System.out.println("Message: " + e.getMessage());
 		}
 	}
-	
-	public void doKeys(){
+
+	public void doKeys() {
 		init();
-		show();
+		setVisible(true);
 	}
-	
+
 	/* (non-Javadoc)
 	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
 	 */
 	public void actionPerformed(ActionEvent e) {
-		if(e.getActionCommand().equalsIgnoreCase("New Key")){
+		if (e.getActionCommand().equalsIgnoreCase("New Key")) {
 			//sprite.createKey("(new)",0,0,Sprite.KeyFrame.KEY_LOOP);
 			queryKeys();
-			owner.repaint();			
-		}else if(e.getActionCommand().equalsIgnoreCase("Delete Key")){
 			owner.repaint();
-		}else if(e.getActionCommand().equalsIgnoreCase("OK")){
-			this.dispose();
-		}else if(e.getActionCommand().equalsIgnoreCase("Apply")){
+		} else if (e.getActionCommand().equalsIgnoreCase("Delete Key")) {
+			owner.repaint();
+		} else if (e.getActionCommand().equalsIgnoreCase("OK")) {
+			dispose();
+		} else if (e.getActionCommand().equalsIgnoreCase("Apply")) {
 			Sprite.KeyFrame k = sprite.getKey((String)keysList.getSelectedValue());
-			if(k!=null){ 			
+			if (k != null) {
 				k.setName(tName.getText());
 				//k.setStartFinish(Integer.parseInt(tStart.getText()),Integer.parseInt(tFinish.getText()));
 				k.setFrameRate(Float.parseFloat(tRate.getText()));
@@ -204,7 +207,6 @@
 	 */
 	public void mouseClicked(MouseEvent e) {
 		updateFields();
-		
 	}
 
 	/* (non-Javadoc)
@@ -212,7 +214,6 @@
 	 */
 	public void mousePressed(MouseEvent e) {
 		// TODO Auto-generated method stub
-		
 	}
 
 	/* (non-Javadoc)
@@ -220,7 +221,6 @@
 	 */
 	public void mouseReleased(MouseEvent e) {
 		// TODO Auto-generated method stub
-		
 	}
 
 	/* (non-Javadoc)
@@ -228,7 +228,6 @@
 	 */
 	public void mouseEntered(MouseEvent e) {
 		// TODO Auto-generated method stub
-		
 	}
 
 	/* (non-Javadoc)
@@ -236,7 +235,5 @@
 	 */
 	public void mouseExited(MouseEvent e) {
 		// TODO Auto-generated method stub
-		
 	}
-
 }

Modified: trunk/src/tiled/mapeditor/dialogs/TileDialog.java
===================================================================
--- trunk/src/tiled/mapeditor/dialogs/TileDialog.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/mapeditor/dialogs/TileDialog.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -41,9 +41,14 @@
     private Tile currentTile;
     private TileSet tileset;
     private Map map;
-    private JList tileList, imageList;
+    private JList tileList;
+    private JList imageList;
     private JTable tileProperties;
-    private JButton okButton, newTileButton, deleteTileButton, changeImageButton, duplicateTileButton;
+    private JButton okButton;
+    private JButton newTileButton;
+    private JButton deleteTileButton;
+    private JButton changeImageButton;
+    private JButton duplicateTileButton;
     private JButton createTileButton;
     private JButton animationButton;
     private String location;

Modified: trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java
===================================================================
--- trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -20,13 +20,12 @@
  */
 public class BorderTileCutter implements TileCutter
 {
-	
 	public String getName() {
 		return "Border";
 	}
+
     public void setImage(Image image) {
         // TODO Auto-generated method stub
-
     }
 
     public Image getNextTile() throws Exception {


Property changes on: trunk/src/tiled/mapeditor/util/cutter/BorderTileCutter.java
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: trunk/src/tiled/mapeditor/util/cutter/TileCutter.java
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: trunk/src/tiled/mapeditor/widget/TilePalettePanel.java
===================================================================
--- trunk/src/tiled/mapeditor/widget/TilePalettePanel.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/mapeditor/widget/TilePalettePanel.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -5,7 +5,7 @@
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- * 
+ *
  *  Adam Turk <aturk at biggeruniverse.com>
  *  Bjorn Lindeijer <b.lindeijer at xs4all.nl>
  */
@@ -88,8 +88,13 @@
         int tilesPerRow = (getWidth() - 1) / twidth;
         int tileId = ty * tilesPerRow + tx;
 
-        //now that we're in the right "spot", find the next valid tile
-        while((ret = tileset.getTile(tileId++)) == null) if(tileId > tileset.getMaxTileId()) break;
+        // Now that we're in the right "spot", find the next valid tile
+        // todo: Assumes to gab is so big that a tile can be found between the
+        // todo: right spot and the tile that was actually clicked, actually
+        // todo: I'm not sure whether this works at all. - Bjorn
+        while ((ret = tileset.getTile(tileId++)) == null) {
+            if (tileId > tileset.getMaxTileId()) break;
+        }
 
         return ret;
     }
@@ -104,31 +109,30 @@
         }
 
         for (int i = 0; i < tilesets.size(); i++) {
-            TileSet tileset = (TileSet)tilesets.get(i);
+            TileSet tileset = (TileSet) tilesets.get(i);
 
             if (tileset != null) {
                 // Draw the tiles
-                int maxHeight = tileset.getTileHeight();
                 int twidth = tileset.getTileWidth() + 1;
                 int theight = tileset.getTileHeight() + 1;
                 int tilesPerRow = Math.max(1, (getWidth() - 1) / twidth);
 
-                int startY = clip.y / maxHeight;
+                int startY = clip.y / theight;
                 int endY = (clip.y + clip.height) / theight + 1;
                 int tileAt = tilesPerRow * startY;
 
-                for (int y = startY, gy = startY * maxHeight; y < endY && tileAt < tileset.getMaxTileId(); y++) {
+                for (int y = startY, gy = startY * theight; y < endY && tileAt < tileset.getMaxTileId(); y++) {
                     for (int x = 0, gx = 1; x < tilesPerRow; x++) {
                         Tile tile = null;
-                        while((tile = tileset.getTile(tileAt++)) == null) 
+                        while ((tile = tileset.getTile(tileAt++)) == null)
                         	if(tileAt > tileset.getMaxTileId() || tileAt-1 == 0) break;
-                        
+
                         if (tile != null) {
                             tile.drawRaw(g, gx, gy + theight, 1.0);
                         }
                         gx += twidth;
                     }
-                    gy += maxHeight;
+                    gy += theight;
                 }
             }
         }

Modified: trunk/src/tiled/util/NumberedSet.java
===================================================================
--- trunk/src/tiled/util/NumberedSet.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/util/NumberedSet.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -24,8 +24,8 @@
  *
  * @author rainerd
  */
-public class NumberedSet {
-
+public class NumberedSet
+{
 	private Vector data;
 
 	/**
@@ -73,8 +73,10 @@
 	public int put(int id, Object o) throws IllegalArgumentException {
 		if (id < 0) throw new IllegalArgumentException();
 
-		//make sure there is sufficient space to overlay
-		for(int i=id-data.size();i>0;i--) data.add(null);
+		// Make sure there is sufficient space to overlay
+		for (int i = id - data.size(); i > 0; i--) {
+            data.add(null);
+        }
 
 		data.add(id, o);
 		return id;
@@ -97,11 +99,11 @@
 	 */
 	public int getMaxId() {
 		int id = -1;
-		for(int i=0;i<data.size();i++) {
-			if(data.get(i) != null) id = i;
+		for (int i = 0; i < data.size(); i++) {
+			if (data.get(i) != null) id = i;
 		}
 
-		return id+1;
+		return id + 1;
 	}
 
 	/**

Modified: trunk/src/tiled/view/OrthoMapView.java
===================================================================
--- trunk/src/tiled/view/OrthoMapView.java	2006-04-09 17:37:18 UTC (rev 602)
+++ trunk/src/tiled/view/OrthoMapView.java	2006-04-09 19:41:21 UTC (rev 603)
@@ -120,7 +120,7 @@
             g.fillOval((int)ox, (int)oy, (int)(10 * zoom), (int)(10 * zoom));
             if (zoom > 0.0625) {
                 g.setColor(Color.white);
-                g.drawString(mo.getType(),(int)(ox - 12),(int)(oy - 5));
+                g.drawString(mo.getType(), (int)(ox - 12), (int)(oy - 5));
             }
         }
     }




More information about the tiled-commit mailing list