changeset 16954:c42d3f94eb23 draft

(svn r21690) -Fix: the top of a tall building standing on a hill at the top of the map could be cut off in a giant screenshot
author yexo <yexo@openttd.org>
date Sat, 01 Jan 2011 21:15:50 +0000
parents bdbffbe0e465
children b8fc595a0650
files src/screenshot.cpp
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/screenshot.cpp
+++ b/src/screenshot.cpp
@@ -25,6 +25,7 @@
 #include "gui.h"
 #include "window_gui.h"
 #include "window_func.h"
+#include "tile_map.h"
 
 #include "table/strings.h"
 
@@ -682,14 +683,19 @@
 	ViewPort vp;
 	const ScreenshotFormat *sf;
 
+	/* We need to account for a hill or high building at tile 0,0. */
+	int extra_height_top = TileHeight(0) * TILE_HEIGHT + 150;
+	/* If there is a hill at the bottom don't create a large black area. */
+	int reclaim_height_bottom = TileHeight(MapSize() - 1) * TILE_HEIGHT;
+
 	vp.zoom = ZOOM_LVL_WORLD_SCREENSHOT;
 	vp.left = 0;
 	vp.top = 0;
 	vp.virtual_left = -(int)MapMaxX() * TILE_PIXELS;
-	vp.virtual_top = 0;
+	vp.virtual_top = -extra_height_top;
 	vp.virtual_width = (MapMaxX() + MapMaxY()) * TILE_PIXELS;
 	vp.width = vp.virtual_width;
-	vp.virtual_height = (MapMaxX() + MapMaxY()) * TILE_PIXELS >> 1;
+	vp.virtual_height = ((MapMaxX() + MapMaxY()) * TILE_PIXELS >> 1) + extra_height_top - reclaim_height_bottom;
 	vp.height = vp.virtual_height;
 
 	sf = _screenshot_formats + _cur_screenshot_format;