Functions

heightmap.cpp File Reference

Creating of maps from heightmaps. More...

#include "stdafx.h"
#include "heightmap.h"
#include "clear_map.h"
#include "void_map.h"
#include "gui.h"
#include "saveload/saveload.h"
#include "bmp.h"
#include "gfx_func.h"
#include "fios.h"
#include "fileio_func.h"
#include "table/strings.h"
#include <png.h>

Go to the source code of this file.

Functions

static byte RGBToGrayscale (byte red, byte green, byte blue)
 Convert RGB colours to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue (average luminosity formula, NTSC Colour Space).
static void ReadHeightmapPNGImageData (byte *map, png_structp png_ptr, png_infop info_ptr)
 The PNG Heightmap loader.
static bool ReadHeightmapPNG (char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap and/or size of the heightmap from a PNG file.
static void ReadHeightmapBMPImageData (byte *map, BmpInfo *info, BmpData *data)
 The BMP Heightmap loader.
static bool ReadHeightmapBMP (char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap and/or size of the heightmap from a BMP file.
static void GrayscaleToMapHeights (uint img_width, uint img_height, byte *map)
 Converts a given grayscale map to something that fits in OTTD map system and create a map of that data.
void FixSlopes ()
 This function takes care of the fact that land in OpenTTD can never differ more than 1 in height.
static bool ReadHeightMap (char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap with the correct file reader.
bool GetHeightmapDimensions (char *filename, uint *x, uint *y)
 Get the dimensions of a heightmap.
void LoadHeightmap (char *filename)
 Load a heightmap from file and change the map in his current dimensions to a landscape representing the heightmap.
void FlatEmptyWorld (byte tile_height)
 Make an empty world where all tiles are of height 'tile_height'.

Detailed Description

Creating of maps from heightmaps.

Definition in file heightmap.cpp.


Function Documentation

void FlatEmptyWorld ( byte  tile_height  ) 

Make an empty world where all tiles are of height 'tile_height'.

Parameters:
tile_height of the desired new empty world

Definition at line 490 of file heightmap.cpp.

References _settings_game, GameSettings::construction, FixSlopes(), ConstructionSettings::freeform_edges, MapSizeX(), MapSizeY(), MarkWholeScreenDirty(), SetTileHeight(), and TileXY().

Referenced by _GenerateWorld().

bool GetHeightmapDimensions ( char *  filename,
uint *  x,
uint *  y 
)

Get the dimensions of a heightmap.

Parameters:
filename to query
x dimension x
y dimension y
Returns:
Returns false if loading of the image failed.

Definition at line 458 of file heightmap.cpp.

References ReadHeightMap().

static void GrayscaleToMapHeights ( uint  img_width,
uint  img_height,
byte *  map 
) [static]

Converts a given grayscale map to something that fits in OTTD map system and create a map of that data.

Parameters:
img_width the with of the image in pixels/tiles
img_height the height of the image in pixels/tiles
map the input map

Definition at line 292 of file heightmap.cpp.

References _settings_game, CLEAR_GRASS, GameSettings::construction, DistanceFromEdge(), ConstructionSettings::freeform_edges, GameSettings::game_creation, Window::height, GameCreationSettings::heightmap_rotation, HM_CLOCKWISE, HM_COUNTER_CLOCKWISE, MakeClear(), MakeVoid(), MapMaxX(), MapMaxY(), MapSizeX(), MapSizeY(), SetTileHeight(), TileX(), TileXY(), TileY(), and Window::width.

Referenced by LoadHeightmap().

void LoadHeightmap ( char *  filename  ) 

Load a heightmap from file and change the map in his current dimensions to a landscape representing the heightmap.

It converts pixels to height. The brighter, the higher.

Parameters:
filename of the heighmap file to be imported

Definition at line 469 of file heightmap.cpp.

References FixSlopes(), free(), GrayscaleToMapHeights(), MarkWholeScreenDirty(), and ReadHeightMap().

Referenced by GenerateLandscape().

static bool ReadHeightmapBMP ( char *  filename,
uint *  x,
uint *  y,
byte **  map 
) [static]

Reads the heightmap and/or size of the heightmap from a BMP file.

If map == NULL only the size of the BMP is read, otherwise a map with grayscale pixels is allocated and assigned to *map.

Definition at line 231 of file heightmap.cpp.

References BmpInfo::bpp, FioFOpenFile(), BmpInfo::height, HEIGHTMAP_DIR, ReadHeightmapBMPImageData(), ShowErrorMessage(), BmpInfo::width, and WL_ERROR.

Referenced by ReadHeightMap().

static void ReadHeightmapBMPImageData ( byte *  map,
BmpInfo info,
BmpData data 
) [static]

The BMP Heightmap loader.

For a non-gray palette of size 16 we assume that the order of the palette determines the height; the first entry is the sea (level 0), the second one level 1, etc.

For a palette of size 2 we assume that the order of the palette determines the height; the first entry is the sea (level 0), the second one is the land (level 1)

Definition at line 174 of file heightmap.cpp.

References BmpInfo::bpp, BmpInfo::height, BmpInfo::palette_size, RGBToGrayscale(), and BmpInfo::width.

Referenced by ReadHeightmapBMP().

static bool ReadHeightmapPNG ( char *  filename,
uint *  x,
uint *  y,
byte **  map 
) [static]

Reads the heightmap and/or size of the heightmap from a PNG file.

If map == NULL only the size of the PNG is read, otherwise a map with grayscale pixels is allocated and assigned to *map.

Definition at line 101 of file heightmap.cpp.

References FioFOpenFile(), Window::height, HEIGHTMAP_DIR, ReadHeightmapPNGImageData(), ShowErrorMessage(), Window::width, and WL_ERROR.

Referenced by ReadHeightMap().

static void ReadHeightmapPNGImageData ( byte *  map,
png_structp  png_ptr,
png_infop  info_ptr 
) [static]

The PNG Heightmap loader.

For a non-gray palette of size 16 we assume that the order of the palette determines the height; the first entry is the sea (level 0), the second one level 1, etc.

Definition at line 44 of file heightmap.cpp.

References RGBToGrayscale().

Referenced by ReadHeightmapPNG().