[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