|
header_utils
|
A container for squares in a 2D square grid. More...
#include <square_grid.h>
Public Types | |
| enum class | iteration_flags { with_self , only_valid , diagonals } |
| using | tile_data_type |
Public Member Functions | |
| grid (int w, int h, TILE_DATA const &default_tile) | |
| grid (glm::ivec2 size, TILE_DATA const &default_tile) | |
| grid (int w, int h) | |
| grid (glm::ivec2 size) | |
| void | reset (int w, int h, TILE_DATA const &default_tile) |
| void | reset (int w, int h, std::vector< TILE_DATA > tiles) |
| void | reset (int w, int h) |
| void | reset (glm::ivec2 size) |
| void | reset (glm::ivec2 size, TILE_DATA const &default_tile) |
| template<change_tile_callback< TILE_DATA > TILE_RESET_FUNC> requires RESIZABLE | |
| void | reset_from (glm::ivec2 size, TILE_RESET_FUNC &&tile_reset) |
| TILE_DATA & | operator[] (int i) |
| Accessors & Queries. | |
| TILE_DATA const & | operator[] (int i) const |
| TILE_DATA & | operator[] (glm::ivec2 v) |
| TILE_DATA const & | operator[] (glm::ivec2 v) const |
| bool | is_valid (int x, int y) const noexcept |
| bool | is_valid (glm::vec2 world_pos, glm::vec2 tile_size) const noexcept |
| bool | is_valid (glm::ivec2 pos) const noexcept |
| bool | is_index_valid (int index) const noexcept |
| bool | is_valid (int x, int y, int edge_width) const noexcept |
| bool | is_valid (glm::vec2 world_pos, glm::vec2 tile_size, int edge_width) const noexcept |
| bool | is_valid (glm::ivec2 pos, int edge_width) const noexcept |
| int | index (int x, int y) const noexcept |
| int | index (glm::ivec2 pos) const noexcept |
| int | valid_index (int x, int y) const noexcept |
| int | valid_index (glm::ivec2 pos) const noexcept |
| TILE_DATA const * | at (glm::ivec2 pos) const noexcept |
| TILE_DATA const * | at (int x, int y) const noexcept |
| TILE_DATA * | at (glm::ivec2 pos) noexcept |
| TILE_DATA * | at (int x, int y) noexcept |
| TILE_DATA const * | at_index (int index) const noexcept |
| TILE_DATA * | at_index (int index) noexcept |
| TILE_DATA const & | safe_at (glm::ivec2 pos, TILE_DATA const &outside) const noexcept |
| TILE_DATA const & | safe_at (int x, int y, TILE_DATA const &outside) const noexcept |
| TILE_DATA & | safe_at (glm::ivec2 pos, TILE_DATA &outside) noexcept |
| TILE_DATA & | safe_at (int x, int y, TILE_DATA &outside) noexcept |
| int | width () const noexcept |
| int | height () const noexcept |
| glm::ivec2 | size () const noexcept |
| irec2 | perimeter () const noexcept |
| irec2 | bounds () const noexcept |
| rec2 | bounds (glm::vec2 tile_size) const noexcept |
| std::span< TILE_DATA const > | tiles () const |
| std::span< TILE_DATA > | tiles () |
| size_t | tile_count () const noexcept |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::with_self, iteration_flags::only_valid }> | |
| auto | for_each_neighbor (glm::ivec2 of, change_tile_callback< TILE_DATA > auto &&func) |
| TODO: set_* functions that mirror for_each_*, e.g. set_rect(rect, tile);. | |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::with_self, iteration_flags::only_valid }> | |
| auto | for_each_selected_neighbor (glm::ivec2 of, direction_set neighbor_set, change_tile_callback< TILE_DATA > auto &&func) |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }> | |
| auto | for_each_tile_in_rect (irec2 const &tile_rect, change_tile_callback< TILE_DATA > auto &&func) |
| TODO: deduce thos. | |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }> | |
| auto | for_each_tile_in_perimeter (irec2 const &tile_rect, change_tile_callback< TILE_DATA > auto &&func) |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }, typename TILE_SET> | |
| auto | for_each_tile_in_set (TILE_SET &&tiles, change_tile_callback< TILE_DATA > auto &&func) |
| template<change_tile_callback< TILE_DATA > FUNC> | |
| auto | for_each_tile (FUNC &&func) |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }> | |
| auto | for_each_tile_in_polygon (std::span< glm::vec2 const > poly_points, glm::vec2 tile_size, change_tile_callback< TILE_DATA > auto &&func) |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }, typename FUNC> | |
| auto | for_each_tile_in_row (int row, FUNC &&func) |
| template<enum_flags< iteration_flags > FLAGS = enum_flags<iteration_flags>{ iteration_flags::only_valid }, typename FUNC> | |
| auto | for_each_tile_in_column (int column, FUNC &&func) |
| template<query_tile_callback< TILE_DATA > FUNC> | |
| bool | line_cast (glm::ivec2 start, glm::ivec2 end, FUNC &&blocks_func, bool ignore_start) const |
| Returns whether the (bresenham) line between start and end is free of blocking tiles, as determined by blocks_func. | |
| template<bool ONLY_VALID = true, change_tile_callback< TILE_DATA > FUNC> | |
| auto | apply (glm::ivec2 to, FUNC &&func) |
| Modifiers. | |
| template<bool ONLY_VALID = true, tile_callback< TILE_DATA > FUNC> | |
| auto | apply (glm::ivec2 to, FUNC &&func) const |
| void | flip_row (int row) |
| void | flip_horizontal () |
| void | flip_vertical () |
| void | rotate_row (int row, int by) |
| void | rotate_column (int column, int by) |
| void | shift_row (int row, int by, TILE_DATA const &add_tile) |
| void | shift_column (int column, int by, TILE_DATA const &add_tile) |
| void | rotate_rows (int by) |
| void | rotate_columns (int by) |
| void | shift_rows (int by, TILE_DATA const &add_tile) |
| void | shift_columns (int by, TILE_DATA const &add_tile) |
| void | rotate_180 () |
| void | resize (glm::uvec2 new_size, const TILE_DATA &new_element) |
| void | resize (glm::uvec2 new_size) |
| void | resize (int w, int h) |
| void | clear () |
| void | clear (TILE_DATA const &to) |
Static Public Attributes | |
| static constexpr bool | resizable |
Protected Member Functions | |
| auto | GetRowStart (int row) |
| auto | GetTileIterator (int x, int y) |
| void | Reset (int w, int h, TILE_DATA const &default_tile) |
| template<change_tile_callback< TILE_DATA > TILE_RESET_FUNC> | |
| void | Reset (int w, int h, TILE_RESET_FUNC &&tile_reset) |
| void | Reset (int w, int h) |
| void | Reset (int w, int h, std::vector< TILE_DATA > tiles) |
| void | ResizeY (int new_y, const TILE_DATA &new_element) |
| void | ResizeX (int new_x, const TILE_DATA &new_element) |
Protected Attributes | |
| int | mWidth |
| int | mHeight |
| std::vector< TILE_DATA > | mTiles |
A container for squares in a 2D square grid.
Definition at line 42 of file square_grid.h.
| using ghassanpl::geometry::squares::grid< TILE_DATA, RESIZABLE >::tile_data_type |
Definition at line 47 of file square_grid.h.
|
strong |
Definition at line 120 of file square_grid.h.
|
inline |
Definition at line 50 of file square_grid.h.
|
inline |
Definition at line 51 of file square_grid.h.
|
inline |
Definition at line 52 of file square_grid.h.
|
inlineexplicit |
Definition at line 53 of file square_grid.h.
|
inline |
Modifiers.
Definition at line 367 of file square_grid.h.
|
inline |
Definition at line 382 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 92 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 94 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 93 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 95 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 96 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 97 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 108 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 109 of file square_grid.h.
|
inline |
Definition at line 469 of file square_grid.h.
|
inline |
Definition at line 470 of file square_grid.h.
|
inline |
Definition at line 401 of file square_grid.h.
|
inline |
Definition at line 395 of file square_grid.h.
|
inline |
Definition at line 407 of file square_grid.h.
|
inline |
TODO: set_* functions that mirror for_each_*, e.g. set_rect(rect, tile);.
Definition at line 130 of file square_grid.h.
|
inline |
Definition at line 173 of file square_grid.h.
|
inline |
Definition at line 284 of file square_grid.h.
|
inline |
Definition at line 225 of file square_grid.h.
|
inline |
TODO: deduce thos.
Definition at line 200 of file square_grid.h.
|
inline |
Definition at line 265 of file square_grid.h.
|
inlineprotected |
Definition at line 474 of file square_grid.h.
|
inlineprotected |
Definition at line 475 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 105 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 88 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 87 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 81 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 80 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 85 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 79 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 84 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 78 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 83 of file square_grid.h.
|
inline |
Returns whether the (bresenham) line between start and end is free of blocking tiles, as determined by blocks_func.
Definition at line 301 of file square_grid.h.
|
inlinenodiscard |
Definition at line 75 of file square_grid.h.
|
inlinenodiscard |
Definition at line 76 of file square_grid.h.
|
inlinenodiscard |
Accessors & Queries.
Definition at line 67 of file square_grid.h.
|
inlinenodiscard |
Definition at line 68 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 107 of file square_grid.h.
|
inlineprotected |
Definition at line 502 of file square_grid.h.
|
inlineprotected |
Definition at line 513 of file square_grid.h.
|
inlineprotected |
Definition at line 477 of file square_grid.h.
|
inlineprotected |
Definition at line 489 of file square_grid.h.
|
inline |
Definition at line 59 of file square_grid.h.
|
inline |
Definition at line 60 of file square_grid.h.
|
inline |
Definition at line 57 of file square_grid.h.
|
inline |
Definition at line 56 of file square_grid.h.
|
inline |
Definition at line 55 of file square_grid.h.
|
inline |
Definition at line 63 of file square_grid.h.
|
inline |
Definition at line 456 of file square_grid.h.
|
inline |
Definition at line 450 of file square_grid.h.
|
inline |
Definition at line 462 of file square_grid.h.
|
inlineprotected |
Definition at line 534 of file square_grid.h.
|
inlineprotected |
Definition at line 525 of file square_grid.h.
|
inline |
Definition at line 440 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 101 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 99 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 102 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 100 of file square_grid.h.
|
inline |
Definition at line 422 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 106 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 112 of file square_grid.h.
|
inlinenodiscard |
Definition at line 111 of file square_grid.h.
|
inlinenodiscard |
Definition at line 110 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 90 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 89 of file square_grid.h.
|
inlinenodiscardnoexcept |
Definition at line 104 of file square_grid.h.
|
protected |
Definition at line 585 of file square_grid.h.
|
protected |
Definition at line 586 of file square_grid.h.
|
protected |
Definition at line 584 of file square_grid.h.
|
staticconstexpr |
Definition at line 46 of file square_grid.h.