|
OpenTTD
|
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. | |
| 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. | |
| static void | ReadHeightmapBMPImageData (byte *map, BmpInfo *info, BmpData *data) |
| The BMP Heightmap loader. | |
| 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. | |
| 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 (DetailedFileType dft, const char *filename, uint *x, uint *y, byte **map) |
| Reads the heightmap with the correct file reader. | |
| bool | GetHeightmapDimensions (DetailedFileType dft, const char *filename, uint *x, uint *y) |
| Get the dimensions of a heightmap. | |
| 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. | |
| 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 512 of file heightmap.cpp.
References _settings_game, GameSettings::construction, FixSlopes(), ConstructionSettings::freeform_edges, MapSizeX(), MapSizeY(), MarkWholeScreenDirty(), SetTileHeight(), and TileXY().
Referenced by _GenerateWorld().
| bool GetHeightmapDimensions | ( | DetailedFileType | dft, |
| const char * | filename, | ||
| uint * | x, | ||
| uint * | y | ||
| ) |
Get the dimensions of a heightmap.
| dft | Type of image file. |
| filename | to query |
| x | dimension x |
| y | dimension y |
Definition at line 479 of file heightmap.cpp.
References ReadHeightMap().
|
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 296 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, IsInnerTile(), MakeClear(), MakeVoid(), MapSizeX(), MapSizeY(), ConstructionSettings::max_heightlevel, SetTileHeight(), TileXY(), and Window::width.
Referenced by 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.
| dft | Type of image file. |
| filename | of the heightmap file to be imported |
Definition at line 491 of file heightmap.cpp.
References FixSlopes(), free(), GrayscaleToMapHeights(), MarkWholeScreenDirty(), and ReadHeightMap().
Referenced by GenerateLandscape().
|
static |
Reads the heightmap with the correct file reader.
| dft | Type of image file. | |
| filename | Name of the file to load. | |
| [out] | x | Length of the image. |
| [out] | y | Height of the image. |
| [inout] | map If not NULL, destination to store the loaded block of image data. |
Definition at line 455 of file heightmap.cpp.
References DFT_HEIGHTMAP_BMP, DFT_HEIGHTMAP_PNG, ReadHeightmapBMP(), and ReadHeightmapPNG().
Referenced by GetHeightmapDimensions(), and LoadHeightmap().
|
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.
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 178 of file heightmap.cpp.
References BmpInfo::bpp, BmpInfo::height, BmpInfo::palette_size, RGBToGrayscale(), and BmpInfo::width.
Referenced by ReadHeightmapBMP().
|
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.
References FioFOpenFile(), Window::height, HEIGHTMAP_DIR, ReadHeightmapPNGImageData(), ShowErrorMessage(), Window::width, and WL_ERROR.
Referenced by ReadHeightMap().
|
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.
References RGBToGrayscale().
Referenced by ReadHeightmapPNG().
1.8.1.2