[vassalengine-svn] SF.net SVN: vassalengine:[8247] VASSAL-src/trunk
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2012-07-29 22:05:28
|
Revision: 8247 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=8247&view=rev Author: uckelman Date: 2012-07-29 22:05:22 +0000 (Sun, 29 Jul 2012) Log Message: ----------- Merged 3.1@8246. Fixed Bug 2807: ArrayIndexOutOfBoundsException in CropOpBitmapImpl.eval() 180 and 270 degree rotations had tile boundaries which were off by one. Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/tools/imageop/CropOpBitmapImpl.java VASSAL-src/trunk/src/VASSAL/tools/imageop/OrthoRotateOpBitmapImpl.java Property Changed: ---------------- VASSAL-src/trunk/ Property changes on: VASSAL-src/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /VASSAL-src/branches/3.1:7756,7764,7810,7812-7813,7872,7876,7879,7909,7913,7964,7966,7968,7998,8097,8111-8112,8159-8162,8172,8181-8182,8233,8235-8238,8241,8244 /VASSAL-src/branches/Brent-3.2:8206,8216-8217,8219-8220,8222,8225,8227 /VASSAL-src/branches/brent-3.2:7824-7825,7862-7865,7875,7878,7882,7884,7886,7896,7903,7911,7917,7929,7942,7988,7995 /VASSAL-src/branches/george973-bugs:7800,7806,7962-7963 /VASSAL-src/branches/george973-bugs-3.2:8081 /VASSAL-src/branches/george973-ocs:8167-8169 /VASSAL-src/branches/lance-3.2 8085:8127 /VASSAL-src/branches/lancel-3.1:7680 /VASSAL-src/branches/pgeerkens-3.2:7836-7837,7839,7841-7842,7849,7893,7899,7902,7904,7906,7922,7930 /VASSAL-src/branches/uckelman-integration:7971-8007 /VASSAL-src/branches/uckelman-working2:7194-7700 /VASSAL-src/branches/viewport-3.2:7992 + /VASSAL-src/branches/3.1:7756,7764,7810,7812-7813,7872,7876,7879,7909,7913,7964,7966,7968,7998,8097,8111-8112,8159-8162,8172,8181-8182,8233,8235-8238,8241,8244,8246 /VASSAL-src/branches/Brent-3.2:8206,8216-8217,8219-8220,8222,8225,8227 /VASSAL-src/branches/brent-3.2:7824-7825,7862-7865,7875,7878,7882,7884,7886,7896,7903,7911,7917,7929,7942,7988,7995 /VASSAL-src/branches/george973-bugs:7800,7806,7962-7963 /VASSAL-src/branches/george973-bugs-3.2:8081 /VASSAL-src/branches/george973-ocs:8167-8169 /VASSAL-src/branches/lance-3.2 8085:8127 /VASSAL-src/branches/lancel-3.1:7680 /VASSAL-src/branches/pgeerkens-3.2:7836-7837,7839,7841-7842,7849,7893,7899,7902,7904,7906,7922,7930 /VASSAL-src/branches/uckelman-integration:7971-8007 /VASSAL-src/branches/uckelman-working2:7194-7700 /VASSAL-src/branches/viewport-3.2:7992 Modified: VASSAL-src/trunk/src/VASSAL/tools/imageop/CropOpBitmapImpl.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/imageop/CropOpBitmapImpl.java 2012-07-29 22:03:17 UTC (rev 8246) +++ VASSAL-src/trunk/src/VASSAL/tools/imageop/CropOpBitmapImpl.java 2012-07-29 22:05:22 UTC (rev 8247) @@ -58,6 +58,14 @@ throw new IllegalArgumentException(); } + if (x0 < 0) { + throw new IllegalArgumentException("left = " + x0); + } + + if (y0 < 0) { + throw new IllegalArgumentException("top = " + y0); + } + if (x1 <= x0) { throw new IllegalArgumentException("left = "+ x0 + ", right = " + x1); } @@ -106,28 +114,21 @@ final int tw = sop.getTileWidth(); final int th = sop.getTileHeight(); - try { - // match the transparency of the first tile - final BufferedImage dst = ImageUtils.createCompatibleImage( - size.width, size.height, - sop.getTile(tiles[0], null).getTransparency() != BufferedImage.OPAQUE - ); + // match the transparency of the first tile + final BufferedImage dst = ImageUtils.createCompatibleImage( + size.width, size.height, + sop.getTile(tiles[0], null).getTransparency() != BufferedImage.OPAQUE + ); - final Graphics2D g = dst.createGraphics(); + final Graphics2D g = dst.createGraphics(); - for (Point tile : tiles) { - g.drawImage(sop.getTile(tile, null), tile.x*tw-x0, tile.y*th-y0, null); - } + for (Point tile : tiles) { + g.drawImage(sop.getTile(tile, null), tile.x*tw-x0, tile.y*th-y0, null); + } - g.dispose(); + g.dispose(); - return dst; - } - catch (ArrayIndexOutOfBoundsException e) { - // FIXME: Added for Bug 2807, so we can see what x0, y0, x1, y1 are. - System.err.println(x0 + " " + y0 + " " + x1 + " " + y1); - throw e; - } + return dst; } protected void fixSize() {} Modified: VASSAL-src/trunk/src/VASSAL/tools/imageop/OrthoRotateOpBitmapImpl.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/imageop/OrthoRotateOpBitmapImpl.java 2012-07-29 22:03:17 UTC (rev 8246) +++ VASSAL-src/trunk/src/VASSAL/tools/imageop/OrthoRotateOpBitmapImpl.java 2012-07-29 22:05:22 UTC (rev 8247) @@ -120,29 +120,27 @@ sy1 = Math.min((tileY+1)*rop.tileSize.height, rop.size.height); break; case 1: - // FIXME: test this sx0 = tileY*rop.tileSize.height; sy0 = tileX*rop.tileSize.width; sx1 = Math.min((tileY+1)*rop.tileSize.height, rop.size.height); sy1 = Math.min((tileX+1)*rop.tileSize.width, rop.size.width); break; case 2: - sx1 = rop.size.width - tileX*rop.tileSize.width - 1; - sy1 = rop.size.height - tileY*rop.tileSize.height - 1; + sx1 = rop.size.width - tileX*rop.tileSize.width; + sy1 = rop.size.height - tileY*rop.tileSize.height; sx0 = rop.size.width - - Math.min((tileX+1)*rop.tileSize.width, rop.size.width) -1; + Math.min((tileX+1)*rop.tileSize.width, rop.size.width); sy0 = rop.size.height - - Math.min((tileY+1)*rop.tileSize.height, rop.size.height) - 1; + Math.min((tileY+1)*rop.tileSize.height, rop.size.height); break; case 3: default: - // FIXME: test this - sx1 = rop.size.height - tileY*rop.tileSize.height - 1; - sy1 = rop.size.width - tileX*rop.tileSize.width - 1; + sx1 = rop.size.height - tileY*rop.tileSize.height; + sy1 = rop.size.width - tileX*rop.tileSize.width; sx0 = rop.size.height - - Math.min((tileY+1)*rop.tileSize.height, rop.size.height) - 1; + Math.min((tileY+1)*rop.tileSize.height, rop.size.height); sy0 = rop.size.width - - Math.min((tileX+1)*rop.tileSize.width, rop.size.width) -1; + Math.min((tileX+1)*rop.tileSize.width, rop.size.width); break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |