# 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) -- Dalestan This in fact is the NTSC Colour Space -- TrueLight.
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 455 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 433 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 274 of file heightmap.cpp.

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

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

References FixSlopes(), 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 221 of file heightmap.cpp.

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

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

References FioFOpenFile(), ReadHeightmapPNGImageData(), and ShowErrorMessage().

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

References RGBToGrayscale().

Referenced by ReadHeightmapPNG().