OpenTTD
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 "error.h"
#include "saveload/saveload.h"
#include "bmp.h"
#include "gfx_func.h"
#include "fios.h"
#include "fileio_func.h"
#include "table/strings.h"
#include "safeguards.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. More...
 
static bool ReadHeightmapPNG (const char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap and/or size of the heightmap from a PNG file. More...
 
static void ReadHeightmapBMPImageData (byte *map, BmpInfo *info, BmpData *data)
 The BMP Heightmap loader. More...
 
static bool ReadHeightmapBMP (const char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap and/or size of the heightmap from a BMP file. More...
 
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. More...
 
void FixSlopes ()
 This function takes care of the fact that land in OpenTTD can never differ more than 1 in height.
 
static bool ReadHeightMap (DetailedFileType dft, const char *filename, uint *x, uint *y, byte **map)
 Reads the heightmap with the correct file reader. More...
 
bool GetHeightmapDimensions (DetailedFileType dft, const char *filename, uint *x, uint *y)
 Get the dimensions of a heightmap. More...
 
void LoadHeightmap (DetailedFileType dft, const char *filename)
 Load a heightmap from file and change the map in his current dimensions to a landscape representing the heightmap. More...
 
void FlatEmptyWorld (byte tile_height)
 Make an empty world where all tiles are of height 'tile_height'. More...
 

Detailed Description

Creating of maps from heightmaps.

Definition in file heightmap.cpp.

Function Documentation

◆ FlatEmptyWorld()

void FlatEmptyWorld ( byte  tile_height)

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

Parameters
tile_heightof the desired new empty world

Definition at line 512 of file heightmap.cpp.

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

◆ GetHeightmapDimensions()

bool GetHeightmapDimensions ( DetailedFileType  dft,
const char *  filename,
uint *  x,
uint *  y 
)

Get the dimensions of a heightmap.

Parameters
dftType of image file.
filenameto query
xdimension x
ydimension y
Returns
Returns false if loading of the image failed.

Definition at line 479 of file heightmap.cpp.

◆ GrayscaleToMapHeights()

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_widththe with of the image in pixels/tiles
img_heightthe height of the image in pixels/tiles
mapthe input map

Definition at line 296 of file heightmap.cpp.

◆ LoadHeightmap()

void LoadHeightmap ( DetailedFileType  dft,
const 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
dftType of image file.
filenameof the heightmap file to be imported

Definition at line 491 of file heightmap.cpp.

◆ ReadHeightMap()

static bool ReadHeightMap ( DetailedFileType  dft,
const char *  filename,
uint *  x,
uint *  y,
byte **  map 
)
static

Reads the heightmap with the correct file reader.

Parameters
dftType of image file.
filenameName of the file to load.
[out]xLength of the image.
[out]yHeight of the image.
[in,out]mapIf not NULL, destination to store the loaded block of image data.
Returns
Whether loading was successful.

Definition at line 455 of file heightmap.cpp.

◆ ReadHeightmapBMP()

static bool ReadHeightmapBMP ( const 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 235 of file heightmap.cpp.

◆ ReadHeightmapBMPImageData()

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 178 of file heightmap.cpp.

◆ ReadHeightmapPNG()

static bool ReadHeightmapPNG ( const 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 105 of file heightmap.cpp.

◆ ReadHeightmapPNGImageData()

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 46 of file heightmap.cpp.