aboutsummaryrefslogtreecommitdiff
path: root/src/engine/graphics/matrix.tpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-06-02 20:50:28 +0200
committerHampusM <hampus@hampusmat.com>2022-06-13 17:57:00 +0200
commit7578eb6f79afbb421298088ee53da620eb04037f (patch)
tree6784011258b6967e75cf8478356c651c1c45938b /src/engine/graphics/matrix.tpp
parentea5cd08dd67f9bc4351ecebdda9e310a8072ae32 (diff)
refactor: rename .tpp files to end with _impl.hpp
Diffstat (limited to 'src/engine/graphics/matrix.tpp')
-rw-r--r--src/engine/graphics/matrix.tpp156
1 files changed, 0 insertions, 156 deletions
diff --git a/src/engine/graphics/matrix.tpp b/src/engine/graphics/matrix.tpp
deleted file mode 100644
index 527c61f..0000000
--- a/src/engine/graphics/matrix.tpp
+++ /dev/null
@@ -1,156 +0,0 @@
-#pragma once
-
-#include "matrix.hpp"
-
-template <typename Element>
-Matrix<Element>::Matrix(const Bounds &bounds) noexcept
- : _matrix(new Element *[bounds.get_height()]),
- _row_cnt(bounds.get_height()),
- _column_cnt(bounds.get_width())
-{
- for (gsl::owner<Element **> row = _matrix; row != _matrix + _row_cnt; row++)
- {
- *row = static_cast<gsl::owner<Element *>>(new Element[bounds.get_width()]);
- }
-};
-
-template <typename Element>
-Matrix<Element>::Matrix(const Matrix &matrix) noexcept
- : _matrix(new Element *[matrix._row_cnt]),
- _row_cnt(matrix._row_cnt),
- _column_cnt(matrix._column_cnt)
-{
- _copy_matrix_from(matrix);
-}
-
-template <typename Element>
-Matrix<Element>::Matrix(Matrix &&matrix) noexcept
- : _matrix(matrix._matrix), _row_cnt(matrix._row_cnt), _column_cnt(matrix._column_cnt)
-{
- matrix._matrix = nullptr;
-}
-
-template <typename Element>
-Matrix<Element>::~Matrix() noexcept
-{
- _delete_matrix();
-}
-
-template <typename Element>
-void Matrix<Element>::fill(Element element) noexcept
-{
- for (auto row : *this)
- {
- for (auto &col : row)
- {
- col = element;
- }
- }
-}
-
-template <typename Element>
-auto Matrix<Element>::get(const Vector2 &pos) const noexcept -> Element
-{
-
- auto x = static_cast<std::size_t>(pos.get_x());
- auto y = static_cast<std::size_t>(pos.get_y());
-
- // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
- return _matrix[y][x];
-}
-
-template <typename Element>
-void Matrix<Element>::set(const Vector2 &pos, Element element) noexcept
-{
- auto x = static_cast<std::size_t>(pos.get_x());
- auto y = static_cast<std::size_t>(pos.get_y());
-
- // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
- _matrix[y][x] = element;
-}
-
-template <typename Element>
-auto Matrix<Element>::get_row_cnt() const noexcept -> uint32_t
-{
- return _row_cnt;
-}
-
-template <typename Element>
-auto Matrix<Element>::get_column_cnt() const noexcept -> uint32_t
-{
- return _column_cnt;
-}
-
-template <typename Element>
-auto Matrix<Element>::begin() const noexcept -> MatrixIterator<Element>
-{
- return MatrixIterator(_matrix, _column_cnt);
-}
-
-template <typename Element>
-auto Matrix<Element>::end() const noexcept -> MatrixIterator<Element>
-{
- return MatrixIterator(_matrix + _row_cnt, _column_cnt);
-}
-
-template <typename Element>
-auto Matrix<Element>::operator=(const Matrix &rhs) noexcept -> Matrix<Element> &
-{
- if (&rhs != this)
- {
- _delete_matrix();
-
- // NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
- _matrix = nullptr;
-
- _matrix = new Element *[rhs._row_cnt];
- _copy_matrix_from(rhs);
- }
-
- return *this;
-}
-
-template <typename Element>
-auto Matrix<Element>::operator=(Matrix &&rhs) noexcept -> Matrix<Element> &
-{
- if (&rhs != this)
- {
- _delete_matrix();
-
- // NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
- _matrix = rhs._matrix;
-
- rhs._matrix = nullptr;
- }
-
- return *this;
-}
-
-template <typename Element>
-void Matrix<Element>::_delete_matrix() noexcept
-{
- for (gsl::owner<Element **> row = _matrix; row != _matrix + _row_cnt; row++)
- {
- delete[](*row);
- }
-
- delete[] _matrix;
-}
-
-template <typename Element>
-void Matrix<Element>::_copy_matrix_from(const Matrix &source) noexcept
-{
- // NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
- gsl::owner<Element **> source_row = source._matrix;
-
- for (gsl::owner<Element **> row = _matrix; row != _matrix + _row_cnt;
- row++, source_row++)
- {
- *row = static_cast<gsl::owner<Element *>>(new Element[_column_cnt]);
-
- // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
- auto *end = *source_row + _column_cnt;
-
- std::copy(*source_row, end, *row);
- }
-}