(svn r8074) -Fix (FS#537, r7555, r5749): revert r7555 because it was really wrong and fix the off-by-one error due to truncation that was supposedly fixed by r7555.
authorrubidium
Fri, 12 Jan 2007 08:37:14 +0000
changeset 5867 724600f8ae0d
parent 5866 20a8aa5fbc36
child 5868 baa704b6dc4f
(svn r8074) -Fix (FS#537, r7555, r5749): revert r7555 because it was really wrong and fix the off-by-one error due to truncation that was supposedly fixed by r7555.
src/heightmap.cpp
--- a/src/heightmap.cpp	Fri Jan 12 07:37:35 2007 +0000
+++ b/src/heightmap.cpp	Fri Jan 12 08:37:14 2007 +0000
@@ -304,11 +304,11 @@
 	if ((img_width * num_div) / img_height > ((width * num_div) / height)) {
 		/* Image is wider than map - center vertically */
 		img_scale = (width * num_div) / img_width;
-		row_pad = (height - ((img_height * img_scale) / num_div)) / 2;
+		row_pad = (1 + height - ((img_height * img_scale) / num_div)) / 2;
 	} else {
 		/* Image is taller than map - center horizontally */
 		img_scale = (height * num_div) / img_height;
-		col_pad = (width - ((img_width * img_scale) / num_div)) / 2;
+		col_pad = (1 + width - ((img_width * img_scale) / num_div)) / 2;
 	}
 
 	/* Form the landscape */
@@ -322,8 +322,8 @@
 
 			/* Check if current tile is within the 1-pixel map edge or padding regions */
 			if ((DistanceFromEdge(tile) <= 1) ||
-					(row < row_pad) || (row >= (img_height + row_pad)) ||
-					(col < col_pad) || (col >= (img_width  + col_pad))) {
+					(row < row_pad) || (row >= (height - row_pad - 1)) ||
+					(col < col_pad) || (col >= (width  - col_pad - 1))) {
 				SetTileHeight(tile, 0);
 			} else {
 				/* Use nearest neighbor resizing to scale map data.