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 (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 501 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 469 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 | ( | 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 heightmap file to be imported |
Definition at line 480 of file heightmap.cpp.
References FixSlopes(), free(), GrayscaleToMapHeights(), MarkWholeScreenDirty(), and ReadHeightMap().
Referenced by GenerateLandscape().
|
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().