summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2011-01-01 21:15:50 +0000
committeryexo <yexo@openttd.org>2011-01-01 21:15:50 +0000
commit7814e6e7925b93ea83f77141649522b69f3c3845 (patch)
tree7e4dc3d70ad8fd0ff98b85379a6d1f950485e90d /src
parent2d17f099025cd625625f17e22461671f64c40f2e (diff)
downloadopenttd-7814e6e7925b93ea83f77141649522b69f3c3845.tar.xz
(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
Diffstat (limited to 'src')
-rw-r--r--src/screenshot.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/screenshot.cpp b/src/screenshot.cpp
index 406553875..df3783171 100644
--- 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 @@ static bool MakeWorldScreenshot()
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;