diff options
author | Luis Martinez | 2022-08-24 16:21:44 -0500 |
---|---|---|
committer | Luis Martinez | 2022-08-24 16:25:53 -0500 |
commit | 76d05d04efdb8e7bc05d2215c69e14bc95379862 (patch) | |
tree | e7ebcb9db00649ce0377b7bef20e9cdab688be28 | |
parent | b797454ae7036d646ee2d6b0b1ae4e0f429c496e (diff) | |
download | aur-76d05d04efdb8e7bc05d2215c69e14bc95379862.tar.gz |
update to 1.22.0
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | CHANGELOG.md | 1383 | ||||
-rw-r--r-- | PKGBUILD | 3 | ||||
-rw-r--r-- | get-changelog.sh | 3 |
4 files changed, 1391 insertions, 3 deletions
@@ -1,15 +1,16 @@ pkgbase = libtcod pkgdesc = Roguelike graphics/utility library - pkgver = 1.21.0 + pkgver = 1.22.0 pkgrel = 1 url = https://github.com/libtcod/libtcod + changelog = CHANGELOG.md arch = x86_64 license = BSD makedepends = git makedepends = python depends = sdl2 provides = libtcod.so - source = libtcod::git+https://github.com/libtcod/libtcod#tag=1.21.0?signed + source = libtcod::git+https://github.com/libtcod/libtcod#tag=1.22.0?signed validpgpkeys = 9EF1E80F3817BC043097A7C15814977902B194CC sha256sums = SKIP diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000000..e9dc3b476ff1 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1383 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) + +This project attempts to adhere to [Semantic Versioning](http://semver.org/) since `1.7.0`. +Versions since `1.7.0` only track ABI breaks and not API breaks. + +## [Unreleased] + +## [1.22.0] - 2022-08-24 +### Added +- Libtcod can now be built without zlib by passing the `-DLIBTCOD_ZLIB=disable` flag to CMake or by setting `CMAKE_DISABLE_FIND_PACKAGE_ZLIB=1`. +- Libtcod can now be built without PNG support by passing the `-DLIBTCOD_LODEPNG=disable` flag to CMake. +- Added context screen capture functions to take screenshots into memory instead of a file. + +### Changed +- The OpenGL2 renderer now defaults to the nearest filter unless `SDL_HINT_RENDER_SCALE_QUALITY` is set otherwise. + This makes the renderer consistent with the SDL2 renderer. +- Parser function parameters are more const correct. + +### Fixed +- SDL2 console rendering is no longer likely to stack overflow. +- Fixed regression where new keywords would prevent older config files from loading. +- Exceptions were not correctly thrown on errors when reading colors from streams. + +## [1.21.0] - 2022-07-15 +### Added +- Added the `tcod::Context` class to better handle contexts in C++. +- Added a CMake toggle `LIBTCOD_THREADS` to remove deprecated threading functions. + `CMAKE_DISABLE_FIND_PACKAGE_Threads=1` can also be used. +- Libtcod can now be built without SDL by passing the `-DLIBTCOD_SDL2=disable` flag in CMake or by setting + `CMAKE_DISABLE_FIND_PACKAGE_SDL2=1`. + +### Changed +- SDL-based accumulate functions can now handle a non-window render target. +- The SDL2 renderer has been rewritten to use `SDL_RenderGeometry` when compiled with SDL 2.0.18. + [#104](https://github.com/libtcod/libtcod/issues/104) +- C++ inline functions switched to use C++17 filesystem types. +- Error messages are no longer thread-local. +- C++ objects have been moved to their `.hpp` headers: + `tcod::ColorRGB`, `tcod::ColorRGBA`, `tcod::BresenhamLine`, REXPaint functions. + +### Deprecated +- Older REXPaint functions using `TCOD_list_t` have been deprecated. +- C++ methods gotten through TCOD_Context have been moved to a specialized class. + Replace ``tcod.new_context(params)`` with ``tcod::Console(params)``. + +### Fixed +- Fixed poor attribute handing causing compile errors in GCC 12. + [#116](https://github.com/libtcod/libtcod/issues/116) +- Context screenshots no longer crash when given NULL which the API implied was possible. + +## [1.20.1] - 2022-01-07 +### Fixed +- BDF files with blank lines no longer fail to load with an "Unknown keyword" error. + +## [1.20.0] - 2021-12-24 +### Added +- `TCOD_RENDERER_XTERM` was added. + [#100](https://github.com/libtcod/libtcod/pull/100) + +### Fixed +- `const` was missing from `tcod::Tileset`'s `get_X` methods. +- Fixed segfault during cleanup when an OpenGL2 context fails to load. + +### Removed +- Removed deprecated overrides that existed to help transition obsolete code. + This affects `Console::clear` and the C++ printing methods which take pointers to colors such as `tcod::print`. + +## [1.19.0] - 2021-11-12 +### Added +- Added `TCOD_context_convert_event_coordinates` and `TCOD_Context::convert_event_coordinates` as an easier way to convert mouse pixel coordinates to tile coordinates. +- Added `tcod::print`, `tcod::print_rect`, and `tcod::get_height_rect` to replace the older C++ functions. +- Added `tcod::Tileset`, `tcod::load_tilesheet`, and `tcod::load_bdf` for working with tilesets in C++ along with the character maps `tcod::CHARMAP_CP437` and `tcod::CHARMAP_TCOD`. +- `TCOD_Context`, `TCOD_ContextParams`, `TCOD_ViewportOptions`, and `tcod::new_context` are now public. +- Added vprintf-like console printing functions: `TCOD_console_vprintf` and `TCOD_console_vprintf_rect`. +- Added the `tcod::Timer` class. A way of handing frame limiting and delta time without depending on libtcod's internals. +- Added `TCOD_sys_get_internal_context`. An easy way to get a `TCOD_Context` from the old API. +- Added `TCOD_sys_get_internal_console`. This returns a pointer to the root console used by the old API. +- Added `tcod::ColorRGB` and `tcod::ColorRGBA` to help with color type conversions. +- Added libtcod logging functions, for debugging and internal use. +- Added `tcod::draw_quartergraphics` to replace older C++ blit2x functions. +- Added `tcod::blit` to replace older C++ blit functions. +- Added `tcod::stringf` to encapsulate printf formatted strings so that other C++ functions won't have to deal with them. + A library like [fmt](https://fmt.dev/latest/index.html) is safer and faster if you have access to it. + +### Changed +- Initializing libtcod with the old API will now enable VSync by default. + You can set the environment variable `TCOD_VSYNC=0` to disable this or use the new API where VSync is a setting. +- `TCODConsole::get_data` now returns a non-NULL pointer to the root console. +- Fixes to Gaussian number generation will have changed the resulting numbers and any subsequent random numbers. +- `TCOD_Random` now points to a union type. +- Libtcod now uses the C++17 standard. +- The newer C++ printing functions now take `std::string_view` instead of `std::string`. +- `TCODConsole`, `TCODBsp`, `TCODPath`, `TCODDijkstra`, `TCODNoise`, `TCODImage`, and `TCODMap` can now handle move operations. + Their copy operators have been deleted. This makes them safe to use as a value instead of using `new`/`delete`. + +### Deprecated +- Deprecate `TCOD_chars_t` enum values because they are non-Unicode. +- Deprecated C++ color constants because of class `static const` initialization issues. +- Deprecated libtcod's older timing functions. +- Deprecated older font loading functions. +- Deprecated `TCOD_random_t` type. +- Console defaults have been deprecated. +- Root console initiation has been deprecated. + +### Fixed +- Gaussian number generation no longer affects the results of unrelated RNG's. +- Gaussian number generation is now reentrant and thread-safe. + +### Removed +- Dropped support for C++14. + +## [1.18.1] - 2021-05-21 +### Fixed +- Fixed potential crash in PNG image loading. + +## [1.18.0] - 2021-05-15 +### Added +- Added REXPaint functions which don't use TCOD lists for multiple consoles. + +### Fixed +- Resolved C++17 deprecation warnings with `tcod::BresenhamLine`. + +## [1.17.1] - 2021-05-15 +### Fixed +- Fixed regression with loading PNG images. + +## [1.17.0] - 2021-05-13 +### Added +- Added `tcod::BresenhamLine`, a C++ Bresenham line iterator. + [#91](https://github.com/libtcod/libtcod/pull/91) + [#92](https://github.com/libtcod/libtcod/issues/92) + [#93](https://github.com/libtcod/libtcod/pull/93) +- Added `TCODImage::get_data` to return its `TCOD_Image*` object. + +### Changed +- CMake scripts now use `CMAKE_INSTALL_DATAROOTDIR` correctly. + +### Deprecated +- Deprecated the `TCOD_List` and `TCODList` classes since they don't work for their intended purpose. +- Deprecated libtcod's event handling API, you should use SDL for events instead of libtcod. + +### Fixed +- Fixed `TCOD_load_library`. +- Fixed `TCODList(TCOD_list_t)` constructor. +- Fixed a regression in `TCOD_console_printf_frame` where a `fmt` of NULL would prevent the frame from being drawn. + +## [1.16.7] - 2021-03-31 +### Changed +- CMake files now use lower-case `libtcod` to be consistent with the previous + usage of this name. + +### Fixed +- Fixed PNG loading issues when using Vcpkg. +- Fixed crashes from loading tilesets with non-square tile sizes. +- Tilesets with a size of 0 should no longer crash when used. +- Prevent division by zero from recommended-console-size functions. + +## [1.16.6] - 2021-03-02 +### Fixed +- Fixed static linking. + +## [1.16.5] - 2021-03-02 +### Added +- CMake scripts now support fetching dependencies from Vcpkg. + +## [1.16.4] - 2021-02-28 +### Fixed +- Simplified libtcod's system calls which should fix support for Microsoft's + UWP. + +## [1.16.3] - 2021-02-24 +### Fixed +- Libtcod's CMake config file is now aware of its dependencies. + +## [1.16.2] - 2021-02-22 +### Fixed +- The `SDL_WINDOW_ALLOW_HIGHDPI` flag has been added to SDL windows created + with the non-context API. This fixes issues on some MacOS systems. + [#90](https://github.com/libtcod/libtcod/issues/90) + +## [1.16.1] - 2021-02-17 +### Fixed +- Fixed the case-sensitive file name `LibtcodConfig.cmake.in` which was causing + CMake to fail. + +## [1.16.0] - 2021-02-11 +### Added +- SCons builder now supports MacOS ARM64 and Universal 2 architectures. + +### Changed +- `TCOD_sys_get_current_resolution` now returns error codes. + +### Deprecated +- Deprecated `TCOD_sys_get_current_resolution` + +### Fixed +- Code points from the Private Use Area will now print correctly. +- Fixed regression in `TCOD_sys_get_current_resolution` behavior. This + function now returns the monitor resolution as was previously expected. +- The OpenGL 2 renderer was ignoring `SDL_HINT_RENDER_SCALE_QUALITY=nearest`. + +### Removed +- `TCOD_rng_splitmix64_next` has been marked as provisional. + +## [1.16.0-alpha.15] - 2020-11-13 +### Deprecated +- Deprecated the zip functions. + +### Fixed +- Context functions won't crash when methods are missing. + +## [1.16.0-alpha.14] - 2020-10-30 +### Added +- Added new algorithm `FOV_SYMMETRIC_SHADOWCAST` based off of the code + provided [here](https://www.albertford.com/shadowcasting/). + +### Changed +- `TCOD_map_compute_fov` and `TCOD_map_copy` now return error codes. + +## [1.16.0-alpha.13] - 2020-10-23 +### Added +- Tilesets can now be loaded from an in-memory PNG file or from raw data. +- The character mappings `TCOD_CHARMAP_CP437` and `TCOD_CHARMAP_TCOD` are now + public. +- Added `TCOD_rng_splitmix64_next`. +- Added the `TCOD_VERSIONNUM` and `TCOD_COMPILEDVERSION` macros. +- Added vectorized noise generator functions. + +### Changed +- Video driver status info has been added to SDL video driver errors. +- Console blits now ignore alpha compositing which would result in division by + zero. +- Image loading now returns an error code. +- Added window `x, y` coordinates when creating contexts. +- Added `argc` and `argv` to contexts so that they can optionally support CLI + commands. +- A struct is used to pass parameters for creating contexts. +- The OpenGL 2 renderer can now use `SDL_HINT_RENDER_SCALE_QUALITY` to + determine the tileset upscaling filter. +- Improved performance of the FOV_BASIC algorithm. + [#77](https://github.com/libtcod/libtcod/issues/77) + +### Deprecated +- Deprecated the following macros: + `TCOD_HEXVERSION`, `TCOD_TECHVERSION`, and `TCOD_STRVERSIONNAME`. + +### Fixed +- `TCOD_console_is_key_pressed` should work even if libtcod events are ignored. +- Fixed images only saving as a red channel. + [#75](https://github.com/libtcod/libtcod/pull/75) +- The `TCOD_RENDERER` and `TCOD_VSYNC` environment variables should work now. +- `FOV_PERMISSIVE` algorithms are now reentrant. + +## [1.16.0-alpha.12] - 2020-05-22 +### Changed +- CMake can now create packages. + +### Fixed +- `TCOD_console_init_root` and context initializing functions were not + returning error codes on failure. + +## [1.16.0-alpha.11] - 2020-05-13 +### Changed +- Print functions will no longer treat special glyphs as double wide. +- Library CMake files now support Vcpkg. + +### Fixed +- Fixed divide by zero when handing mouse input without a global context. + +## [1.16.0-alpha.10] - 2020-04-26 +### Fixed +- Fixed characters being dropped when color codes were used. + +## [1.16.0-alpha.9] - 2020-04-24 +### Fixed +- `FOV_DIAMOND` and `FOV_RESTRICTIVE` algorithms are now reentrant. + [#48](https://github.com/libtcod/libtcod/pull/48) +- Heightmap functions will crash less often when given out-of-bounds parameters. + [#13](https://github.com/libtcod/libtcod/issues/13) + [#50](https://github.com/libtcod/libtcod/pull/50) +- The `TCOD_VSYNC` environment variable was being ignored. +- Malformed UTF-8 strings will no longer hang printing functions. + +## [1.16.0-alpha.8] - 2020-04-03 +### Fixed +- Changing the active tileset now redraws tiles correctly on the next frame. + +## [1.16.0-alpha.7] - 2020-04-02 +### Fixed +- Changing the active tileset will now properly show it on the next render. + +## [1.16.0-alpha.6] - 2020-03-26 +### Added +- Added `TCOD_load_bdf` and `TCOD_load_bdf_memory`. + +## [1.16.0-alpha.5] - 2020-02-28 +### Changed +- Mouse tile coordinates are now always zero before the first call to + TCOD_console_flush. + +## [1.16.0-alpha.4] - 2020-02-22 +### Fixed +- Mouse tile coordinates are now correct on any resized window. + +## [1.16.0-alpha.3] - 2020-02-21 +### Deprecated +- Mouse state and keyboard state functions are deprecated. +- Mouse functions with SDL alternatives are deprecated. + +### Fixed +- The wavelet noise generator now excludes -1.0f and 1.0f as return values. +- Fixed console fading color. +- Fixed keyboard state and mouse state functions losing state when events were + flushed. + +## [1.16.0-alpha.2] - 2020-02-14 +### Fixed +- Fixed possible crash in `TCOD_mouse_move`. + +## [1.16.0-alpha.1] - 2020-02-14 +### Added +- Added the `TCOD_clear_error` and `TCOD_set_errorf` functions. +- Added an error code enum: `TCOD_Error`. + +### Changed +- Console blit operations now perform per-cell alpha transparency. +- When a renderer fails to load it will now fallback to a different one. + The order is: OPENGL2 -> OPENGL -> SDL2. + +### Deprecated +- The use of `libtcod.cfg` or `terminal.png` is deprecated. + +### Fixed +- The following are no longer mislabeled as taking const images: + - `TCOD_image_get_mipmap_pixel` + - `TCOD_image_blit` + - `TCOD_image_blit_rect` +- `TCOD_sys_update_char` now works with the newer renderers. +- Fixed buffer overflow in name generator. +- `TCOD_image_from_console` now works with the newer renderers. +- New renderers now auto-load fonts from `libtcod.cfg` or `terminal.png`. + +## [1.15.1] - 2019-11-22 +### Changed +- Renamed build systems directory from `build/` to `buildsys/`. + +### Fixed +- `OPENGL` and `GLSL` renderers were not properly clearing space characters. + +## [1.15.0] - 2019-11-08 +### Changed +- `TCOD_image_blit_2x` now renders using Unicode block elements instead of a + custom encoding. + +### Fixed +- Libtcod will no longer segfault if it's statically linked to an executable. + +## [1.14.0] - 2019-09-06 +### Added +- `TCODConsole::get_data` method for getting the C struct pointer from C++. + +### Fixed +- `TCOD_map_compute_fov` will now silently ignore out-of-bounds coordinates + instead of crashing. +- Changing the tiles of an active tileset will now work correctly. + +## [1.13.0] - 2019-07-05 +### Added +- You can now set the `TCOD_RENDERER` and `TCOD_VSYNC` environment variables to + force specific options to be used. + Example: ``TCOD_RENDERER=sdl2 TCOD_VSYNC=1`` + +### Changed +- `TCOD_sys_set_renderer` now returns an error status. +- `TCODSystem::setRenderer` will now throw instead of terminating on an error. +- `TCOD_console_init_root` and `TCOD_sys_set_renderer` are now no-discard. + +### Fixed +- `TCOD_console_map_ascii_code_to_font` functions will now work when called + before `TCOD_console_init_root`. + +## [1.12.3] - 2019-06-02 +### Fixed +- Fixed regressions in text alignment for non-rectangle-bound text on UTF-8 + print functions. + +## [1.12.2] - 2019-05-24 +### Fixed +- Fixed crashes and bad output when using printf-style functions. + +## [1.12.1] - 2019-05-17 +### Fixed +- Fixed shader compilation issues in the OPENGL2 renderer. +- Fallback fonts should fail less on Linux. + +## [1.12.0] - 2019-05-17 +### Added +- Added the `TCOD_get_error` and `TCOD_set_error` functions. + +### Changed +- `TCOD_console_init_root` and `TCOD_console_set_custom_font` will now return + an error code instead of terminating on a known error. + +## [1.11.5] - 2019-05-10 +### Added +- Several functions in the `tcod::console` namespace are now accessible. + These functions are provisional, so the API may change at anytime. + +### Fixed +- Corrected bounding box issues with the stateless UTF-8 print functions. + +## [1.11.4] - 2019-04-26 +### Fixed +- Fixed a name conflict with endianness macros on FreeBSD. + +## [1.11.3] - 2019-04-19 +### Changed +- New consoles are initialized as if clear was called. +- The SDL callback type now uses a typed argument instead of void pointer. + +### Fixed +- Fixed horizontal alignment for TrueType fonts. +- Fixed screenshots with the older SDL renderer. + +### Deprecated +- The SDL callback feature has been deprecated. + +## [1.11.2] - 2019-03-29 +### Fixed +- Console printing was ignoring color codes at the beginning of a string. +- Releases no longer display debug messages. + +## [1.11.1] - 2019-03-15 +### Fixed +- Fixed header declaration for `TCOD_sys_accumulate_console`. + +## [1.11.0] - 2019-03-15 +### Added +- Added new functions which convert from SDL events to libtcod events: + - `TCOD_sys_process_key_event` + - `TCOD_sys_process_mouse_event` + - `tcod::sdl2::process_event` +- Added a way to access libtcod's SDL variables. + - `TCOD_sys_get_sdl_window` + - `TCOD_sys_get_sdl_renderer` +- Added `TCOD_sys_accumulate_console` which renders a console to the display + without automatically presenting it. +- The new renderers can potentially use a fall-back font when none is provided. + +### Fixed +- `TCOD_console_has_mouse_focus` and `TCOD_console_is_active` are now more + reliable with the newer renderers. + +## [1.10.8] - 2019-03-01 +### Deprecated +- Updated libtcodpy deprecation warning with instructions on how to update to + python-tcod. + +## [1.10.7] - 2019-03-01 +### Changed +- GCC releases now include debug symbols. +### Fixed +- `SDL2` and `OPENGL2` now support screenshots. +- `TCOD_sys_get_char_size` fixed on the newer renderers. + +## [1.10.6] - 2019-02-15 +### Changed +- Printing generates more compact layouts. +### Fixed +- Fixed segmentation faults in the newer print functions caused by bad color + codes. +- The `OPENGL` and `GLSL` renders work again in static builds. +- The `SDL2` and `OPENGL2` renders can now large numbers of tiles. + +## [1.10.5] - 2019-02-06 +### Changed +- The SDL2/OPENGL2 renderers will now auto-detect a custom fonts key-color. +### Fixed +- `TCOD_console_printf_frame` was clearing tiles outside if it's bounds. +- The `TCOD_FONT_LAYOUT_CP437` layout was incorrect. + +## [1.10.4] - 2019-02-01 +### Fixed +- Fixed regression where mouse wheel events unset mouse coordinates. + +## [1.10.3] - 2019-01-19 +### Fixed +- Use correct math for tile-based delta in mouse events. +- New renderers now support tile-based mouse coordinates. +- SDL2 renderer will now properly refresh after the window is resized. +- MinGW samples now bundle their own runtimes. + +## [1.10.2] - 2018-11-23 +### Fixed +- Version numbers were not updated. + +## [1.10.1] - 2018-11-23 +### Changed +- `RENDERER_OPENGL2` now only needs OpenGL 2.0 to load. + +### Fixed +- `FONT_LAYOUT_CP437` constant was missing from libtcodpy. +- Function stubs for `TCOD_console_set_keyboard_repeat` and + `TCOD_console_disable_keyboard_repeat` have been added to the ABI, this + should fix older programs which depended on them existing. + +## [1.10.0] - 2018-11-17 +### Added +- Added pkg-config for 'libtcod' on AutoTools builds. +- Added `TCOD_FONT_LAYOUT_CP437`. + +### Fixed +- `RENDERER_OPENGL2` constant was missing from libtcodpy. +- Fixed crash when assigning to larger code-points. +- Fixed center alignment on printf functions. +- Fixed missing border tiles on printf frame function. + +## [1.9.0] - 2018-10-24 +### Added +- New renderer: `TCOD_RENDERER_OPENGL2` +- `TCOD_RENDERER_SDL2` and `TCOD_RENDERER_OPENGL2` now have reliable fullscreen + support. +- SCons MSVC releases now include libtcod's `.pdb` file. + +## Changed +- `src/vendor` must be included when building libtcod. +- `glad.c` added to vendor directory. +- In GCC builds: non-public symbols are no longer visible by default. + +## [1.8.2] - 2018-10-13 +### Fixed +- Fixed potential crash when splitting lines in UTF-8 print functions. +- Fixed possible hang in `TCOD_lex_parse_until_token_value`. + +## [1.8.1] - 2018-10-11 +### Changed +- Updated the compiler used to deploy Windows MinGW builds. + +## [1.8.0] - 2018-10-07 +### Added +- New `TCOD_MAJOR_VERSION`, `TCOD_MINOR_VERSION`, and `TCOD_PATCHLEVEL` + constants. +- Added UTF-8 print functions for C and C++: + - `TCOD_console_printf`, `TCOD_console_printf_ex`, + `TCOD_console_printf_rect`, and `TCOD_console_printf_rect_ex`. + - `TCOD_console_printf_frame` + - `TCOD_console_get_height_rect_fmt` + - New overrides for `TCODConsole::print` which can take `std::string`. + - `TCODConsole::printf`. +- Added `TCOD_quit` function, this function must be called on exit. +- New renderer: `TCOD_RENDERER_SDL2` + +### Changed +- AutoTools now adds version numbers to the libraries it builds. +- lodepng and zlib sources moved into `src/vendor/` folder. +- Bundled zlib library updated from `1.2.8` to `1.2.11`. +- LodePNG updated from `20160501` to `20180611`. +- libtcod C type declarations are stricter. +- libtcod now uses the C99 and C++14 standards. +- In the repository `include/` headers have been moved into `src/`. +- Most headers except for `libtcod.h` and `libtcod.h` have been moved into a + `libtcod/` sub-folder. +- SCons default architecture is now automatic instead of just 32-bit. +- libtcod gui headers now use LIBTCOD_EXPORTS instead of LIBTCOD_GUI_EXPORTS to + determine dllexport/dllimport. + +### Deprecated +- All functions replaced by the new UTF-8 functions are deprecated. +- The ctypes implementation of libtcodpy will no longer be maintained, use + python-tcod as a drop-in replacement. +- Deprecated file-system, threading, clipboard, and dynamic library functions. + +### Fixed +- `libtcodpy.map_clear`: `transparent` and `walkable` parameters were reversed. +- Resolved build issues on PowerPC platforms. +- Mouse state is now tracked even when mouse events are not asked for. +- libtcod sys event functions no longer crash if the given key pointer is NULL. +- SCons no longer crashes downloading SDL2 for Windows. + +### Removed +- Autotools no longer creates `libtcodxx` or `libtcodgui` libraries, C++ + programs should link to `libtcod` instead. + +## [1.7.0] - 2018-06-12 +### Changed +- `TCOD_console_is_active()` now returns keyboard focus, its previous return + value was undefined. +- Load font debug information is now suppressed when NDEBUG is defined. +- Error messages when failing to create an SDL window should be a less vague. +- You no longer need to initialize libtcod before you can print to an + off-screen console. + +### Fixed +- Fixed a missing space between a literal and identifier that causes problems + with some C++ compilers. +- Fixed implicit definitions that could potentially crash formatted console + printing functions and image saving functions. +- Fixed including libtcod gui headers. (Fabian Wolff) +- Fixed memory leaks when lexer creation fails. (Fabian Wolff) +- Avoid crashes if the root console has a character code higher than expected. +- Fixed `AttributeError: module 'urllib' has no attribute 'urlretrieve'` when + running SCons builder with Python 3. +- Fixed `UnicodeEncodeError: ordinal not in range(128)` in places where + libtcodpy says it wants an ASCII string. +- libtcodpy now escapes the `%` character on print functions. +- Fixed libtcodpy print functions not supporting Unicode for Python 3. +- Fixed libtcodpy missing definition `TCOD_console_print_utf`. + +## [1.6.7] - 2018-05-17 +### Changed +- Renamed `libtcod-CHANGELOG.txt` to `CHANGELOG.md` +- SCons builder now outputs `libtcodgui` instead of `libtcod-gui` to match + Autotools behavior. + +### Fixed +- REXPaint operations now save/load as little-endian on any platform. + https://bitbucket.org/libtcod/libtcod/issues/91/fix-the-libtcod-types-endian-support +- `TCOD_console_map_ascii_code_to_font` and related functions can now assign + character codes that were not automatically assigned during initialization. + Previously you could only assign codes up to the total number of tiles in the + font. +- Fixed including libtcod from Autotools installs, the `console_rexpaint.h` + header was missing. (James Byrnes) + +## [1.6.6] - 2018-04-06 +### Added +- Added `libtcod_c.c` and `libtcod.cpp` source files to assist with static + linking. + +### Changed +- REXPaint functions now have their own header file: `console_rexpaint.h` +- `TCOD_color_set_HSV` now normalizes bad hue/saturation/value parameters. + +### Deprecated +- Non-reentrant line functions `TCOD_line_init` and `TCOD_line_step` are now + deprecated. +- `TCOD_line_mt` is deprecated. `TCOD_line` is the same function with an + unnecessary parameter, and should be preferred. + +### Fixed +- `TCOD_line` is now reentrant. +- `FOV_BASIC` (`fov_circular_raycasting`) implementation is now reentrant. +- Fixed `external/pstdint.h` header not being installed correctly by Autotools. + https://bitbucket.org/libtcod/libtcod/issues/121/include-of-external-pstdinth-fails +- Autotools libtools are no longer bundled, these are automatically installed + via `autoreconf -i` + +## [1.6.5] - 2018-02-20 +### Fixed +- Resolved header issues that were leaving some types and functions undefined. (Kyle Benesch) +- key.c is no longer set when key.vk == TCODK_TEXT, this fixes a regression + which was causing events to be heard twice in the libtcod/Python tutorial. (Kyle Benesch) +- OpenGL renderer alpha blending is now consistent with all other render modes. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/99/opengl-renderer-looks-poorly-compared-to + +## [1.6.4] - 2017-11-27 +### Added +- Added support for loading/saving REXPaint files. (Kyle Benesch) +- Added documentation to guide people in upgrading from 1.5.x to 1.6.x (rmtew) + https://bitbucket.org/libtcod/libtcod/issues/88 + +### Changed +- Upgraded to `stdint.h` source code typing via `pstdint.h` (rmtew) + https://bitbucket.org/libtcod/libtcod/issues/91 +- All libtcod headers are now self-contained. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/93/header-organization +- bool type is now based off of stdbool.h (Kyle Benesch) +- SCons builder defaults to debug builds, now builds with OpenGL, and uses link + time optimization on release builds. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/92/tcod_renderer_glsl-not-working +- SDL is no longer initialized at module load time. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/107/sdl_init-on-library-load-libtcod + +### Fixed +- Text input events now include correct modifier key values. (Kyle Benesch) +- Fixed touch support compilation, although it is still an experimental option that may change (rmtew) +- Console objects should be safe to create and use before libtcod is fully initialized. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/17/offline-libtcod +- Fixed TCOD_list_reverse. (Kyle Benesch) +- Fixed simplex noise artifacts when using negative coordinates. (Kyle Benesch) +- Fixed the GLSL and OPENGL renderers on all platforms. (rmtew) (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/issues/92/tcod_renderer_glsl-not-working +- TCOD_image_blit_2x no longer alters a consoles default colors. (Kyle Benesch) +- SDL renderer is only created when using SDL rendering (wump@bitbucket) + https://bitbucket.org/libtcod/libtcod/pull-requests/74/dont-create-sdl-renderer-when-using-opengl + +## [1.6.3] - 2017-02-26 +### Added +- Added SCons build support (HexDecimal@bitbucket). + https://bitbucket.org/libtcod/libtcod/commits/92c5a1b530049f15d1ed36375b12781554272f17 +- Exposed clipboard API to Python (rmtew@bitbucket). +- Added TravisCI integration tests (Kyle Benesch) https://bitbucket.org/libtcod/libtcod/pull-requests/61 +- Added .gitattributes and .gitignore files (Kyle Benesch) https://bitbucket.org/libtcod/libtcod/pull-requests/61 + +### Changed +- Updated restrictive FOV code to match MRPAS v1.2 (mingos@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/28a19912ac7fef6e68164fb8970230517888c9ff +- Per-platform clipboard get/set code has been removed, and the SDL2 API is used instead (rmtew@bitbucket). + The clipboard encoding is now UTF-8 on all platforms. + https://bitbucket.org/libtcod/libtcod/issues/81/ +- Documented and undeprecated TCOD_mouse_get_status() as the state is awkwardly exposed via check/wait event calls anyway (rmtew@bitbucket). +- Switched Python tests to use pytest instead of unittest. (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/pull-requests/61 + +### Fixed +- TCOD_path_walk now considers negative values to be blocking the path (HexDecimal@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/fc8c88ec9b5d7b113ba3a7906f526daba81b543c +- Fix key handling in name generator in C sample (reported by Chris Hamons@bitbucket) + https://bitbucket.org/libtcod/libtcod/issues/83/ +- Fix for broken SDL callback (reported by grimstain@bitbucket) + https://bitbucket.org/libtcod/libtcod/issues/78/sdl-callback-null-pixels +- Fix for memory leak introduced with the foreground/background image change (Aaron Wise). + https://bitbucket.org/libtcod/libtcod/commits/275e8bd97000599e9d87bfa138fa72c066b1cae7 +- Fix for bug in Slider::setFormat() which left a dangling pointer (reported by Kai Kratz@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/07c1214077d121107c5ad8ee38c589ad677f5e76 +- Fix potential wavelet related memory leak in TCOD_noise_delete() (HexDecimal@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/a03a79814fd734e05e5d72801376b2af6b315373 +- Fix libtcodpy return type for TCOD_console_put_char_ex and TCOD_console_put_char (HexDecimal@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/a03a79814fd734e05e5d72801376b2af6b315373 +- Fix libtcodpy arguments for TCOD_heightmap_add_fbm and TCOD_heightmap_scale_fbm (HexDecimal@bitbucket) + https://bitbucket.org/libtcod/libtcod/commits/6f34ffa3d17af39cc274c048ff633be8609998f8 +- Fixed creating a libtcodpy pathfinder with a callback would crash on 64-bit Unix systems (Kyle Benesch) + https://bitbucket.org/libtcod/libtcod/pull-requests/61 + +## [1.6.2] - 2016-12-28 +### Added +- doctcod command added to VS2015 solution. +- Python (PTVS) project for samples_py added to VS2015 solution. +- Console foreground and background colors are images. + https://bitbucket.org/libtcod/libtcod/issues/51/console-image-unification +- Python unit tests added (Kyle Benesch). + https://bitbucket.org/libtcod/libtcod/commits/7a66ad5d66832686c0071e3938b85ebad8e7cebb +- Added TCOD_console_get_background_color_image and TCOD_console_get_foreground_color_image API for C++/C/Python. + +### Changed +- crash bugs fixed in documentation generation. +- libtcodpy when loading a DLL now explicitly compares the architecture of the Python version uses, to the architecture of the DLL and exits outputting any difference. +- libtcodpy now uses more wrapper functions on Windows to cover ctypes limitations in passing and returning struct values. +- libtcodpy now inlines more ctypes argtypes and restype definitions in order to work better on x64. +- libtcodpy partially rewritten to support Python 3 as best possible and resolve outstanding 64 bit problems. +- samples_py partially rewritten to run under both Python 3 and Python 2. +- Adopted strict prototypes / void in C parameterless functions (Kyle Benesch). + https://bitbucket.org/libtcod/libtcod/commits/5353098a70254b59b740865a875cccf1d6d84c27 +- SDL2 supported revision updated to release-2.0.5 AKA changeset 007dfe83abf8. + +### Fixed +- C++ TCODParser memory leak fixed. + https://bitbucket.org/libtcod/libtcod/issues/27/tcodparser-memory-leaks +- Frost sample fixed for a non-initialized data structure crash. + +### Removed +- Removed SDL1 support. +- Removed C/C++/Python API functions `TCOD_console_set_keyboard_repeat` and + `TCOD_console_disable_keyboard_repeat`. This was SDL1 functionality, and not supported in SDL2. + +## [1.6.1] - 2016-09-23 +### Changed +- Python libtcodpy is now better at finding DLLs on Windows + https://bitbucket.org/libtcod/libtcod/commits/eda0075 + +## [1.6.0] - 2016-09-16 +### Added +- added support for autotools builds + https://bitbucket.org/libtcod/libtcod/commits/41e1c24 +- added support for Visual Studio builds +- added Visual Studio build script that can fetch and build dependencies, the project, and package up the result +- hooked up Visual Studio build script to continuous integration service to run on each commit +- libtcod is now reentrant which allows the window to be resized among other things + https://bitbucket.org/libtcod/libtcod/commits/14bad22 +- added new TCODK_TEXT event to cover the SDL2 SDL_TEXTINPUT event. + https://bitbucket.org/libtcod/libtcod/commits/7a8b072 +- lmeta and rmeta modifiers have been added to TCOD_key_t + https://bitbucket.org/libtcod/libtcod/commits/e386362 + +### Changed +- upgraded to SDL2 +- upgraded zlib to version 1.2.8 +- upgraded lodepng to the 20160501 release + https://bitbucket.org/libtcod/libtcod/commits/60c127e + +### Fixed +- fixed compilation warnings in pathing code + https://bitbucket.org/libtcod/libtcod/commits/4045633 +- fixed memory leaks in pathing (Paral Zsolt) + https://bitbucket.org/libtcod/libtcod/commits/4c4af80 +- map numlock key for SDL2 + https://bitbucket.org/libtcod/libtcod/commits/83d481c +- reset the cursor in text field when the text field is reset (cottog) + https://bitbucket.org/libtcod/libtcod/commits/6673e6c +- remove superfluous calls to SDL_PumpEvents + https://bitbucket.org/libtcod/libtcod/commits/1edf96d +- alt-tabbing back to the libtcod window would leave the window blank + https://bitbucket.org/libtcod/libtcod/commits/73fdf51 + +### Removed +- removed support for mingw builds because no-one could get it to work + +## [1.5.2] - 2012-09-07 +### Added +- added mid point displacement algorithm to the heightmap toolkit +- added TCODConsole::hasMouseFocus() and TCODConsole::isActive() +- added TCODParser::hasProperty to check if a property is defined when + using the default parser +- added `TCODText::setPos(int x, int y)` + +### Fixed +- fixed TCODConsole::waitForKeypress returning for both press and release events (returns only on press) +- fixed dynamic font switching not working +- fixed TCOD_image_blit_rect not working with odd width/height +- fixed TCODK_RWIN/TCODK_LWIN not detected +- fixed TCOD_sys_wait_event not returning on mouse events +- fixed mouse dcx/dcy fields always 0 when the cursor moves slowly +- fixed crash in Python console_map_ascii_codes_to_font + +## [1.5.1] - 2012-08-29 +### Added +- added support for python3k. The samples run with Python 3.2.3 +- added support for colored tiles. Standard font characters MUST only use greyscale colors. +- added native support for .ASC and .APF file (Ascii Paint format) + * TCODConsole::TCODConsole(const char *filename) + * bool TCODConsole::loadAsc(const char *filename) + * bool TCODConsole::saveAsc(const char *filename) const + * bool TCODConsole::loadApf(const char *filename) + * bool TCODConsole::saveApf(const char *filename) const +- added mouse wheel support in TCOD_mouse_t.wheel_up/wheel_down +- added TCODSystem::fileExists function for checking whether a given file exists +- added dice to the TCODRandom toolkit +- added support for dynamic property declaration in the parser +- added TCODList::reverse(), TCODPath::reverse(), TCODDijkstra::reverse() +- added weighted Gaussian distribution RNG +- added Gaussian distribution RNG with no minimum/maximum bounds (using only mean and standard deviance) +- added clipboard support in TCODSystem (on Linux, only X clipboard supported) +- added GLSL and OpenGL(fixed pipeline) renderer (FPS increased 880% on true color sample !!!) +- added libtcod.cfg (allows the player to tweaks libtcod overriding the game presets) +- added more TCOD_CHAR_* constants +- added TCODColor::scaleHSV (saturation and value scaling) +- added TCODColor::shiftHue (hue shifting up and down) +- added a TCODColor constructor for HSV values +- added TCODColor H, S and V separate getters and setters +- added TCODColor::rotate90 +- added native Mac OSX support +- added support for quote-less HTML color values in the parser (col=#FFFFFF instead of col="#FFFFFF") +- added color control helpers for C# (TCODConsole.getColorControlString/getRGBColorControlString) + +### Changed +- TCOD_console_wait_for_keypress, TCOD_console_check_for_keypress, TCOD_mouse_get_status + replaced with TCOD_sys_check_for_event and TCOD_sys_wait_for_event +- source width and height can be 0 in TCODConsole::blit to blit the whole console +- Some of the parser-related functions now can be chained. +- The RNG API now has less functions that choose the distribution based on the set flags. +- The noise API now has less functions that choose the noise type based on the set flags. +- Console default and cell foreground and background color getters and setters renamed to more intuitive names: + * `TCOD_console_set_background_color` => `TCOD_console_set_default_background` + * `TCOD_console_set_foreground_color` => `TCOD_console_set_default_foreground` + * `TCOD_console_get_background_color` => `TCOD_console_get_default_background` + * `TCOD_console_get_foreground_color` => `TCOD_console_get_default_foreground` + * `TCOD_console_set_back` => `TCOD_console_set_char_background` + * `TCOD_console_set_fore` => `TCOD_console_set_char_foreground` + * `TCOD_console_get_back` => `TCOD_console_get_char_background` + * `TCOD_console_get_fore` => `TCOD_console_get_char_foreground` + * `setBackgroundColor` => `setDefaultBackground` + * `setForegroundColor` => `setDefaultForeground` + * `getBackgroundColor` => `getDefaultBackground` + * `getForegroundColor` => `getDefaultForeground` + * `setBack` => `setCharBackground` + * `setFore` => `setCharForeground` + * `getBack` => `getCharBackground` + * `getFore` => `getCharForeground` +- `TCODConsole::printLeft/Right/Center` replaced by + `TCODConsole::setBackgroundFlag(TCOD_bkgnd_flag_t)` + `TCODConsole::setAlignment(TCOD_alignment_t)` + `TCODConsole::print(int x, int y, const char *fmt, ...)` + `TCODConsole::printEx(int x, int y, TCOD_bkgnd_flag_t bkgnd, TCOD_alignment_t alignment, const char *fmt, ...)` +- added `TCOD_BKGND_DEFAULT` as default value in rect / putChar / hline / vline / setBack + the default background flag for a console is BKGND_NONE + Warning ! That mean the rect/putChar/... functions now default to BKGND_NONE + instead of BKGND_SET, except if you call setBackgroundFlag before using them. +- `TCODConsole::getHeight[Left/Right/Center]Rect` replaced by + `TCODConsole::getHeightRect(int x, int y, int w, int h, const char *fmt, ...);` + (the 3 functions were useless, the height does not depend on the alignment... X( ) +- `TCODConsole::initRoot` has an additional renderer parameter: + `static void TCODConsole::initRoot(int w, int h, const char * title, bool fullscreen = false, TCOD_renderer_t renderer=TCOD_RENDERER_SDL);` + Possible values: + - TCOD_RENDERER_GLSL + - TCOD_RENDERER_OPENGL + - TCOD_RENDERER_SDL +- `TCODMap::clear` now sets walkable and transparent status of all cells: + `void TCODMap::clear` (bool transparent = false, bool walkable = false) + `void TCOD_map_clear` (TCOD_map_t map, bool transparent, bool walkable) + map_clear (map, transparent, walkable) +- cmake compilation works on FreeBSD thanks to namor_ +- Restrictive FOV algorithm updated to MRPAS v1.1 (faster, better-looking, improved symmetry) +- Gaussian distribution in `TCODRandom` now uses a more precise Box-Muller transform algorithm +- More default values for `printFrame`: + `void printFrame(int x,int y,int w,int h, bool clear=true, TCOD_bkgnd_flag_t flag = TCOD_BKGND_DEFAULT, const char *fmt=NULL, ...)` +- hardened fov module +- extended list of color constants (the old names can produce slightly different colors) +- `TCODMap` memory consumption divided by 4 +- now mouse wheel events are properly detected + +### Fixed +- fixed namegen crash if generator list is empty +- fixed permissive fov when light_walls is false +- fixed possible crash when clearing an offscreen console before calling initRoot +- fix possible crash when printing a string containing ascii codes > 127 +- fixed TCODNamegen returning integers in the Python version +- fixed TCODDijkstra segfault when diagonal movement cost was zero +- fixed setDirty() not working for the last row or column of the console +- fixed Python samples not compiling if numpy installed +- fixed Python TCOD_parser_get_list_property +- fixed TCODDijkstra destructor crash bug +- fixed TCODColor::setHSV bug when using hues below 0 or above 359 grades +- fixed some rare issues in A* pathfinding +- fixed issue in TCODImage::blit2x when blitting only a subregion of the image +- fixed memory leak in TCODImage::save + +## [1.5.0] - 2010-02-15 +### Added +- added text field toolkit (undocumented) +- added functions for fast Python full console coloring: + - console_fill_foreground(con,r,g,b) + - console_fill_background(con,r,g,b) + + r,g,b are 1D arrays of console_width * console_height +- added fast Python rendering sample (Jotaf) +- added TCODConsole::resetCredits() to restart credits animation before it's finished +- added TCODConsole::setDirty(int x, int y, int w,int h) to force libtcod to redraw a part of the console + This might by needed when using the SDL renderer +- added TCODSystem::getCharSize(int *w, int *h) to get the current font's character size +- added name generation module (Mingos) +- added Dijkstra pathfinding (Mingos) +- added approximated gaussian distribution functions in the RNG module + `float TCODRandom::getGaussian(float min, float max)` +- added subcell resolution blitting function TCODImage::blit2x +- added more portable filesystem utilities: + - `static bool TCODSystem::isDirectory(const char *path)` + - `static TCODList<const char *> TCODSystem::getDirectoryContent(const char *path, const char *pattern)` +- added TCODConsole::putCharEx(int x, int y, int c, TCODColor &fore, TCODColor &back) (at last!) +- added waitThread and thread conditions support in (undocumented) threading API +- added unicode support and 4 unicode fonts courtesy of Mingos. Functions with unicode support are : + - static void TCODConsole::mapStringToFont(const wchar_t *s, int fontCharX, int fontCharY); + - void TCODConsole::printLeft(int x, int y, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - void TCODConsole::printRight(int x, int y, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - void TCODConsole::printCenter(int x, int y, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - int TCODConsole::printLeftRect(int x, int y, int w, int h, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - int TCODConsole::printRightRect(int x, int y, int w, int h, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - int TCODConsole::printCenterRect(int x, int y, int w, int h, TCOD_bkgnd_flag_t flag, const wchar_t *fmt, ...); + - int TCODConsole::getHeightLeftRect(int x, int y, int w, int h, const wchar_t *fmt, ...); + - int TCODConsole::getHeightRightRect(int x, int y, int w, int h, const wchar_t *fmt, ...); + - int TCODConsole::getHeightCenterRect(int x, int y, int w, int h,const wchar_t *fmt, ...); + + C versions of the functions have _utf suffixes. Unicode fonts are : + - fonts/consolas_unicode_10x10.png + - fonts/consolas_unicode_12x12.png + - fonts/consolas_unicode_16x16.png + - fonts/consolas_unicode_8x8.png + +### Changed +- the random number generator module now support two algorithms (Mingos) + Mersenne twister, used in previous versions of libtcod + Complementary Multiply With Carry, 2 to 3 times faster and has a much better + period. This is the default algorithm. + You can choose the algorithm in the constructor: + ```c + typedef enum { + TCOD_RNG_MT, + TCOD_RNG_CMWC + } TCOD_random_algo_t; + ``` + - TCODRandom() => CMWC, default seed + - TCODRandom(uint32 seed) => CMWC, custom seed + - TCODRandom(TCOD_random_algo_t algo) => default seed, custom algo + - TCODRandom(uint32 seed, TCOD_random_algo_t aldo) => custom algo and seed +- TCODConsole::printFrame now takes an extra argument: TCOD_bkgnd_flag_t +- renamed libraries on Linux to improve portability : + - libtcod++.so => libtcodxx.so + - libtcod-gui.so => libtcodgui.so +- new compilation system with a debug and release version of the library +- makefiles have been moved to a makefiles subdirectory +- libtcod credits now use subcell resolution + +### Fixed +- fixed wrong ascii code returned by check/waitForKeypress with AltGr+0-9 combination +- fixed RNG going mad if you delete the default RNG +- fixed wait_for_keypress not working in Python +- now the parser can handle strings/identifiers with unlimited size (previously limited to 256 chars) +- fixed TCODZip module missing from MSVC release +- fixed issue with TCOD_COLCTRL_FORE_RGB and TCOD_COLCTRL_BACK_RGB when using 10 or 37 in rgb values +- fixed issue in color_set_hsv Python wrapper +- fixed bug in console blitting when destination coordinates are outside the destination console + +### Removed +- TCODRandom::getIntFromByteArray has been deleted +- removed bitfield from TCOD_key_t and TCOD_mouse_t to ease wrappers writing. + existing working wrappers might be broken, though. + +## [1.4.2] - 2009-10-06 +### Added +- added possibility to use SDL drawing functions on top of the root console with TCODSystem::registerSDLRenderer +- added Mingos' restrictive precise angle shadow casting fov algorithm as FOV_RESTRICTIVE +- heightmap: added missing `TCOD_heightmap_set_value` function +- new consolas, dejavu, lucida and prestige fonts from Mingos + +### Changed +- `TCODConsole::blit` now takes 2 float parameters: + `static void blit(const TCODConsole *src,int xSrc, int ySrc, int wSrc, int hSrc, TCODConsole *dst, int xDst, int yDst, float foreground_alpha=1.0f, float background_alpha=1.0f)` + +### Fixed +- fixed R/B inversion in color operations in Python +- fixed a crash when saving a TCODImage before initializing the root console +- fixed a crash when destroying an empty TCODZip (file not found) +- fixed torch effect in C++ sample +- fixed ASCII_IN_ROW flag not working +- fixed path_new_using_function not working in Python wrapper +- fixed alignment issues in `TCOD_console_print_*` with strings containing + ascii codes > 127 +- fixed color controls not working with autowrap +- fixed fov post-processing step to handle opaque walkable cells (for example bush) + +## [1.4.1] - 2009-03-22 +### Added +- added Python wrapper +- added arial, courier fonts courtesy of Mingos +- added some non portable filesystem utilities in TCODSystem : + - bool TCODSystem::createDirectory(const char *path); + - bool TCODSystem::deleteDirectory(const char *path); + - bool TCODSystem::deleteFile(const char *path); +- added multithread utilities in TCODSystem : + - static TCOD_thread_t TCODSystem::newThread(int (*func)(void *), void *data); + - static void TCODSystem::deleteThread(TCOD_thread_t th); + - static TCOD_mutex_t TCODSystem::newMutex(); + - static void TCODSystem::mutexIn(TCOD_mutex_t mut); + - static void TCODSystem::mutexOut(TCOD_mutex_t mut); + - static void TCODSystem::deleteMutex(TCOD_mutex_t mut); + - static TCOD_semaphore_t TCODSystem::newSemaphore(int initVal); + - static void TCODSystem::lockSemaphore(TCOD_semaphore_t sem); + - static void TCODSystem::unlockSemaphore(TCOD_semaphore_t sem); + - static void TCODSystem::deleteSemaphore( TCOD_semaphore_t sem); +- added some image utilities : + - void TCODImage::clear(const TCODColor col) + - void TCODImage::invert() + - void TCODImage::hflip() + - void TCODImage::vflip() + - void TCODImage::scale(int neww, int newh) + - void TCODImage::setKeyColor(const TCODColor keyColor) + - int TCODImage::getAlpha(int x,int y) const + - bool TCODImage::isPixelTransparent(int x, int y) const +- can now dynamically modify the content of the font bitmap: + `static void TCODSystem::updateChar(int asciiCode, int fontx, int fonty,const TCODImage *img,int x,int y)` +- added C and Python code generation in the heightmap tool +- added function to calculate the height of a printed string + (with autowrapping) without actually printing it: + - `int TCODConsole::getHeightLeftRect(int x, int y, int w, int h, const char *fmt, ...)` + - `int TCODConsole::getHeightRightRect(int x, int y, int w, int h, const char *fmt, ...)` + - `int TCODConsole::getHeightCenterRect(int x, int y, int w, int h, const char *fmt, ...)` +- parser : now strings properties can be split. The parser concatenates them: + ```c + myProperty = "string value can use " + "multi line layout" + ``` +- parser: added missing `getCharProperty` when using default listener +- heightmap: added missing `TCOD_heightmap_get_value` function +- now support fonts with unlimited number of characters + (was limited to 1024 in 1.4.0) +- added callback-based atomic bresenham function + `static bool TCODLine::line(int xFrom, int yFrom, int xTo, int yTo, TCODLineListener *listener)` +- added `TCODMap::copy` function +- added TCODList fast remove functions (don't preserve the list order) + - `template<class T> void TCODList::removeFast(const T elt)` + - `template<class T> T * TCODList::removeFast(T *elt)` + +### Changed +- Default colors have been changed/added. +- `TCODMap::computeFov` changed to support several algorithms: + `void computeFov(int playerX,int playerY, int maxRadius,bool light_walls = true, TCOD_fov_algorithm_t algo = FOV_BASIC)` + available algorithms : + - FOV_BASIC: classic libtcod fov + - FOV_DIAMOND: http://www.geocities.com/temerra/los_rays.html + - FOV_SHADOW: http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shadowcasting + - FOV_PERMISSIVE: http://roguebasin.roguelikedevelopment.org/index.php?title=Precise_Permissive_Field_of_View + - light_walls: if false, wall cells are not put in the fov +- `setCustomFont` changed: + defines the font number of characters instead of character size. + if not specified, it is deduced from the layout flag + (16x16 for ascii, 32x8 for tcod) + `setCustomFont(const char *fontFile, int flags=TCOD_FONT_LAYOUT_ASCII_INCOL,int nbCharHoriz=0, int nbCharVertic=0)` + The flag values have changed too: + - TCOD_FONT_LAYOUT_ASCII_INCOL=1 + - TCOD_FONT_LAYOUT_ASCII_INROW=2 + - TCOD_FONT_TYPE_GREYSCALE=4 + - TCOD_FONT_TYPE_GRAYSCALE=4 + - TCOD_FONT_LAYOUT_TCOD=8 +- pathfinding: you don't need to provide coordinates in x,y parameters of + `Path::walk` +- improved double/simple walls special characters in tcod layout fonts + +### Fixed +- fixed SDL dependent features not being available before initRoot is called. + If you want to draw on an offscreen console without calling initRoot, you + need to call at least setCustomFont to initialize the font. Else characters won't be rendered. +- fixed standalone credits page erasing previously fps limit +- fixed special characters TCOD_CHAR_DTEE* and TCOD_CHAR_DCROSS not printing correctly +- fixed heightmap tool generated code not compiling +- fixed parser C++ error function not prepending file name & line number to the error message +- fixed memory leak in pathfinding +- fixed fov issue with walkable, non transparent cells +- fixed numerical stability issues with heightmap rain erosion +- fixed calculation error in heightmap kernel transformation function +- fixed TCODConsole::renderCredits being able to render the credits only once +- fixed mouse cx,cy coordinates in "padded" fullscreen modes +- fixed mouse cursor hidden when switching fullscreen +- fixed mouse coordinates when going fullscreen->windowed + +## [1.4.0] - 2008-10-16 +### Added +- added pathfinding module +- added BSP module +- added heightmap module + heightmap tool +- added compression toolkit +- added possibility to pre-allocate TCODList's memory +- added support for PNG images + antialiased fonts from PNG with alpha channel or greyscale +- added ASCII mapping functions to map an ascii code to any character in your font: + - `static void TCODConsole::mapAsciiCodeToFont(int asciiCode, int fontCharX, int fontCharY);` + - `static void TCODConsole::mapAsciiCodesToFont(int firstAsciiCode, int nbCodes, int fontCharX, int fontCharY);` + - `static void TCODConsole::mapStringToFont(const char *s, int fontCharX, int fontCharY);` +- parser : now strings can contain octal/hexadecimal ascii values + - myStringProperty1 = "embedded hex value : \x80" + - myStringProperty2 = "embedded octal value : \200" +- parser : now can handle list properties. + ```c + myStruct { + myProperty = [1, 2, 3] + } + ``` + to declare: `struct.addListProperty("myProperty",TCOD_TYPE_INT,true);` + to read (default parser): `TCODList<int> prop(parser.getListProperty("myStruct.myProperty", TCOD_TYPE_INT));` +- added color map generator. Interpolate colors from an array of key colors : + `TCODColor::genMap(TCODColor *map, int nbKey, TCODColor const *keyColor, int const *keyIndex)` +- added random generator backup function. You can save the state of a generator + with `TCODRandom *TCODRandom::save()` and restore it with + `void TCODRandom::restore(const TCODRandom *backup)` +- added simplex noise, similar to perlin but faster, + especially in 4 dimensions and has better contrast: + - `TCODNoise::getSimplex` + - `TCODNoise::getFbmSimplex` + - `TCODNoise::getTurbulenceSimplex` + Simplex should be preferred over Perlin for most usages. +- added wavelet noise, similar to perlin, much slower but doesn't blur at high scales. Doesn't work in 4D : + - `TCODNoise::getWavelet` + - `TCODNoise::getFbmWavelet` + - `TCODNoise::getTurbulenceWavelet` + Noise functions relative times: + + | |2D|3D|4D| + |:------|-:|-:|-:| + |simplex| 1| 1| 1| + |perlin | 4| 5|17| + |wavelet|32|14| X| +- you can capture a console to an existing image without creating a new image + with `TCODImage::refreshConsole` +- non rectangular offscreen consoles: + you can define a key color on offscreen consoles. + Cells for which background color = key color are not blitted +- added libtcod credits function. You can either call: + `TCODConsole::credits()` to print the credits page at the start of your game + (just after `initRoot`) or + `bool TCODConsole::renderCredits(int x, int y, bool alpha)` to print the + credits on top of one of your existing page (your game menu for example). + Call it until it returns true. + +### Changed +- Noise functions renamed: + - `TCODNoise::getNoise` -> `TCODNoise::getPerlin` + - `TCODNoise::getFbm` -> `TCODNoise::getFbmPerlin` + - `TCODNoise::getTurbulence` -> `TCODNoise::getTurbulencePerlin` +- Some special char constants `TCOD_CHAR_x` added/removed +- `setCustomFont` changed: + `setCustomFont(const char *fontFile,int charWidth=8, int charHeight=8, int flags=0)` + flags: + - TCOD_FONT_LAYOUT_ASCII_INROW=1 + - TCOD_FONT_TYPE_GREYSCALE=2 + - TCOD_FONT_LAYOUT_TCOD=4 +- improved `TCODConsole::flush` performances: + frames per second for sample "True colors" (terminal.png font) on my + reference computer (windowed mode): + - libtcod 1.3.2: 130 + - libtcod 1.4.0: 300 +- `TCODNoise::getTurbulence` is twice faster +- improved mouse click detection. Even with a low framerate, mouse clicks will + always be detected and reported in the `Xbutton_pressed` fields of + `TCOD_mouse_t` +- you don't need anymore to provide values in `TCODLine::step` parameters + +### Fixed +- fixed memory leak in image module +- fixed DELETE and INSERT keys not detected +- fixed a rendering bug when using a white background color before any other + background color + +## [1.3.2] - 2008-07-14 +### Added +- added documentation for the generic container module `TCODList` + +### Fixed +- fixed not being able to open and close the root console more than once +- fixed parser not being able to attach a sub-structure to more than one structure +- fixed TCOD_image_from_console not working with root console on C version +- fixed TCODParser::newStruct, addFlag, addProperty handling only static names +- fixed web color parser (#rrggbb) in the parser module +- fixed TCODImage constructor / TCOD_image_new crashing if root console not initialized +- fixed mouse status not updated if the keyboard events are not read with checkForKeypress/waitForKeypress +- fixed fbm, turbulence functions returning NaN for high octaves values + +## [1.3.1] - 2008-06-05 +### Added +- added default parser listener for basic config files. +- added fields in `TCOD_mouse_t` to easily detect button press events: + - `lbutton_pressed`: left button pressed event + - `rbutton_pressed`: right button pressed event + - `mbutton_pressed`: middle button pressed event + + and to get the mouse movement in cell coordinates (instead of pixels) +- added functions to retrieve data from TCODMap + +### Changed +- now TCODConsole::putChar/setChar can use ascii code > 255 (ok, it's no more an ascii code, then) + this allows you to use fonts with more than 255 characters. + +### Fixed +- fixed const correctness in `TCODConsole::print*Rect` functions +- fixed a bug in fov toolkit if TCODMap width < height +- fixed `TCOD_struct_get_type` returning `TCOD_TYPE_NONE` instead of + `TCOD_TYPE_BOOL` for flags. + +## [1.3] - 2008-05-25 +### Added +- added mouse support +- added the file parser module +- added TCODColor::setHSV(float h, float s, float v) and TCODColor::getHSV(float *h, float *s, float *v) +- added TCODColor addition and scalar multiplication. All r,g,b values are clamped to [0-255] : + - C++: `color1 = color2 * 3.5f;` + `color1 = color1 + color2;` + - C : `color1 = TCOD_color_multiply_scalar(color2, 3.5f);` + `color1 = TCOD_color_add(color1, color2);` +- added `TCODConsole::setKeyboardRepeat(int initialDelay, int interval)` and + `TCODConsole::disableKeyboardRepeat()` +- added `TCODSystem::getCurrentResolution(int *w, int *h)` + +### Changed +- C++ : colors must be initialized by constructor: + - 1.2.2 : `TCODColor mycol={r,g,b};` + - 1.3 : `TCODColor mycol(r,g,b);` +- TCOD_console_check_for_keypress now has a parameter that indicates which events are tracked + - 1.2.2 : `key = TCOD_console_check_for_keypress();` + - 1.3 : `key = TCOD_console_check_for_keypress(TCOD_KEY_PRESSED);` +- now `TCODFov::computeFov` takes a maxRadius parameter. + Use 0 for unlimited range (default) +- the mouse cursor is now automatically hidden when using fullscreen +- fixed closing the window resulting in a fake 'Q' keyboard event +- fixed `TCODConsole::print*` and `TCODConsole::rect` functions crashing when + printing out of the console +- fixed `f` parameter modified when calling fbm and turbulence noise functions. + Now `f` is no more modified. +- fixed wrong ascii code in `TCOD_key_t.c` when pressing Control and a letter + key. + +## [1.2.2] - 2008-03-18 +### Added +- added helpers for real time games + - `void TCODSystem::setFps(int val)` to limit the number of frames per second. + Use 0 for unlimited fps (default) + - `int TCODSystem::getFps()` to return the number of frames rendered during + the last second + - `float TCODSystem::getLastFrameLength()` to return the length of the last + frame in seconds +- added `TCODImage::clear` to fill an image with a color + +### Changed +- `TCODConsole::hline` and `vline` now have a `TCOD_bkgnd_flag_t` parameter +- now the `TCODConsole::print*Rect` functions return the height (number of console lines) of the printed string + +### Fixed +- fixed TCODConsole::print*Rect functions not truncating the string if it reaches the bottom of the rectangle + using a rectangle height of 0 means unlimited height +- fixed a color bug when drawing text using the black color (0,0,0) +- fixed TCODConsole::waitForKeypress(true) resulting in Alt/Ctrl/Shift key state not cleared + +## [1.2.1] - 2008-03-09 +### Added +- added TCODImage::blitRect to easily map an image on a specific part of a console +- added possibility to generate an image from an offscreen console +- added TCODImage::save +- image toolkit now support reading 8bpp bitmap files. + +### Changed +- Random number generators now support inverted ranges instead of crashing: + `TCODRandom::getInstance()->getInt(10,2)` + => return a value between 2 and 10. + +### Fixed +- fixed image toolkit replacing the green component by the red one when loading a bitmap from a file +- fixed console print*Rect functions unnecessarily splitting the string in some cases +- on Linux, you don't need to link with SDL anymore when using libtcod/libtcod++ +- fixed linker issues with Visual Studio + +## [1.2] - 2008-02-26 +### Added +- new 'image' toolkit replacing some of the features previously in the 'system' toolkit. +- now windowed mode works even on 16bits desktops +- improved custom font support. + You can now use fonts with characters ordered in rows or columns and with a custom transparent color. + This allows you to use most existing character sets with the doryen library. + Font characters with grayscale are still not supported. +- new time functions: + - `uint32 TCODSystem::getElapsedMilli()` + - `float TCODSystem::getElapsedSeconds()` +- new background blending modes (see the line sample for a demo) : + - TCOD_BKGND_LIGHTEN : newbk = MAX(oldbk,curbk) + - TCOD_BKGND_DARKEN : newbk = MIN(oldbk,curbk) + - TCOD_BKGND_SCREEN : newbk = white - (white - oldbk) * (white - curbk) // inverse of multiply : (1-newbk) = (1-oldbk)*(1-curbk) + - TCOD_BKGND_COLOR_DODGE : newbk = curbk / (white - oldbk) + - TCOD_BKGND_COLOR_BURN : newbk = white - (white - oldbk) / curbk + - TCOD_BKGND_ADD : newbk = oldbk + curbk + - TCOD_BKGND_ADDALPHA(alpha) : newbk = oldbk + alpha * curbk, 0.0<=alpha<=1.0 + - TCOD_BKGND_BURN : newbk = oldbk + curbk - white + - TCOD_BKGND_OVERLAY : newbk = curbk <= 0.5 ? 2*curbk*oldbk : white - 2*(white-curbk)*(white-oldbk) + - TCOD_BKGND_ALPHA(alpha) : newbk = (1.0f-alpha)*oldbk + alpha*(curbk-oldbk), 0.0<=alpha<=1.0 +- The samples can now use custom bitmap fonts / screen resolution. Use following syntax : + sample_c[pp] [options] + options : + * -fullscreen : start directly in fullscreen mode + * -font <font_filename> (default "terminal.bmp") + * -font-char-size <char_width> <char_height> (default 8 8) + * -font-layout <nb_char_horiz> <nb_char_vertic> (default 16 16) + * -font-in-row : characters in the bitmap are ordered in rows (default : columns) + * -font-key-color <r> <g> <b> : transparent color, r,g,b between 0 and 255. (default 0 0 0) + * -fullscreen-resolution <width> <height> (default 640 400) + +### Changed +- headers renamed from `tcodlib.h*` to `libtcod.h*` +- on Linux, the library is split into `libtcod.so` and `libtcod++.so` + allowing C developers to use it without installing g++ +- the font name is no more a parameter of `TCODConsole::initRoot` +- `TCODConsole::setBitmapFontSize` renamed to `TCODConsole::setCustomFont` +- `TCODConsole::printFrame` is now a variadic function, like the other text output functions +- some background blending flags have been renamed: + - `TCOD_BKGND_NOBK` replaced by `TCOD_BKGND_NONE` + - `TCOD_BKGND_BK` replaced by `TCOD_BKGND_SET` +- the fov toolkit now uses two properties per cell : `transparent`/`walkable`. + This is necessary to fix a fov issue with window cells (transparent, but not walkable). + `void TCODFov::setTransparent(int x,int y, bool isTransparent)` has been replaced by : + `void TCODFov::setProperties(int x,int y, bool isTransparent, bool isWalkable)` +- improved const correctness, added some default parameter values in the C++ API. + +### Fixed +- fixed the window size when using a custom font size +- fixed `TCODK_PRINTSCREEN` key event not detected +- fixed crash in printing functions if the string length was > 255. + Now they can handle strings of any size. + +## [1.1] - 2008-01-27 +### Added +- added the noise toolkit +- added the field of view toolkit +- added customizable bitmap font size + +## [1.0.1] - 2008-01-19 +### Added +- added C/C++ samples + +### Changed +- `TCODConsole::waitForKeyPress` now has a bool parameter indicating if we + flush the keyboard buffer before waiting. + +### Fixed +- fixed a color bug when drawing text using the grey color (196,196,196) +- fixed wrong key codes returned by wait/checkForKeyPress on some keyboard layouts + +## [1.0] - 2008-01-05 +- Initial release @@ -7,7 +7,7 @@ ## GPG key: https://github.com/hexdecimal.gpg pkgname=libtcod -pkgver=1.21.0 +pkgver=1.22.0 pkgrel=1 pkgdesc="Roguelike graphics/utility library" arch=('x86_64') @@ -16,6 +16,7 @@ license=('BSD') depends=('sdl2') makedepends=('git' 'python') provides=("$pkgname.so") +changelog=CHANGELOG.md source=("$pkgname::git+$url#tag=$pkgver?signed") sha256sums=('SKIP') validpgpkeys=('9EF1E80F3817BC043097A7C15814977902B194CC') ## HexDecimal diff --git a/get-changelog.sh b/get-changelog.sh new file mode 100644 index 000000000000..5b37295aa871 --- /dev/null +++ b/get-changelog.sh @@ -0,0 +1,3 @@ +#!/usr/bin/sh + +curl -O https://raw.githubusercontent.com/libtcod/libtcod/$1/CHANGELOG.md |