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 <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'. | |
Creating of maps from heightmaps.
Definition in file heightmap.cpp.
| void FlatEmptyWorld | ( | byte | tile_height | ) |
Make an empty world where all tiles are of height 'tile_height'.
| 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.
| filename | to query | |
| x | dimension x | |
| y | dimension y |
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.
| 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.
| 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().
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().
1.7.1