From 5c1c672e018e41e5c87a0263a851684a52d9c1fb Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 27 Mar 2022 19:21:22 +0200 Subject: refactor: replace string matrix with template matrix --- src/engine/graphics/matrix.hpp | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/engine/graphics/matrix.hpp (limited to 'src/engine/graphics/matrix.hpp') diff --git a/src/engine/graphics/matrix.hpp b/src/engine/graphics/matrix.hpp new file mode 100644 index 0000000..2c9ba81 --- /dev/null +++ b/src/engine/graphics/matrix.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "interfaces/matrix.hpp" + +#include "engine/data/bounds.hpp" +#include "engine/data/vector2.hpp" +#include "engine/matrix_iterator.hpp" + +#include +#include + +template +class Matrix : public IMatrix +{ +public: + explicit Matrix(const Bounds &bounds) noexcept; + + Matrix(const Matrix &matrix) noexcept; + + Matrix(Matrix &&matrix) noexcept; + + ~Matrix() noexcept override; + + void fill(Element element) noexcept override; + + [[nodiscard]] Element get(const Vector2 &pos) const noexcept override; + + void set(const Vector2 &pos, Element element) noexcept override; + + [[nodiscard]] uint32_t get_row_cnt() const noexcept override; + + [[nodiscard]] uint32_t get_column_cnt() const noexcept override; + + [[nodiscard]] MatrixIterator begin() const noexcept override; + + [[nodiscard]] MatrixIterator end() const noexcept override; + + Matrix &operator=(const Matrix &rhs) noexcept; + + Matrix &operator=(Matrix &&rhs) noexcept; + +private: + gsl::owner _matrix; + + uint32_t _row_cnt; + uint32_t _column_cnt; + + void _delete_matrix() noexcept; + + void _copy_matrix_from(const Matrix &source) noexcept; +}; + +#include "matrix.tpp" -- cgit v1.2.3-18-g5258