diff --git a/core/include/aare/Frame.hpp b/core/include/aare/Frame.hpp index 78918a6..252103a 100644 --- a/core/include/aare/Frame.hpp +++ b/core/include/aare/Frame.hpp @@ -1,35 +1,37 @@ #pragma once -#include -#include -#include -#include -#include #include "aare/defs.hpp" - - +#include +#include +#include +#include +#include /** * @brief Frame class to represent a single frame of data * model class * should be able to work with streams coming from files or network -*/ + */ +template class Frame { + ssize_t m_rows; + ssize_t m_cols; + DataType *m_data; + ssize_t m_bitdepth = sizeof(DataType) * 8; -template class Frame{ - - public: - ssize_t rows; - ssize_t cols; - DataType* data; - ssize_t bitdepth = sizeof(DataType)*8; - - Frame(std::byte* fp, ssize_t rows, ssize_t cols); + public: + Frame(std::byte *fp, ssize_t rows, ssize_t cols); DataType get(int row, int col); - - ~Frame(){ - delete[] data; + ssize_t rows() const{ + return m_rows; + } + ssize_t cols() const{ + return m_cols; + } + ssize_t bitdepth() const{ + return m_bitdepth; } + ~Frame() { delete[] m_data; } }; typedef Frame Frame16; diff --git a/core/src/Frame.cpp b/core/src/Frame.cpp index f035fc4..97a7b81 100644 --- a/core/src/Frame.cpp +++ b/core/src/Frame.cpp @@ -3,20 +3,19 @@ template Frame::Frame(std::byte* bytes, ssize_t rows, ssize_t cols): - rows(rows), cols(cols) { - data = new DataType[rows*cols]; - std::memcpy(data, bytes, rows*cols*sizeof(DataType)); + m_rows(rows), m_cols(cols) { + m_data = new DataType[rows*cols]; + std::memcpy(m_data, bytes, m_rows*m_cols*sizeof(DataType)); } - template DataType Frame::get(int row, int col) { - if (row < 0 || row >= rows || col < 0 || col >= cols) { + if (row < 0 || row >= m_rows || col < 0 || col >= m_cols) { std::cerr << "Invalid row or column index" << std::endl; return 0; } - return data[row*cols + col]; + return m_data[row*m_cols + col]; } diff --git a/python/src/bindings.cpp b/python/src/bindings.cpp index ab861fe..91c880b 100644 --- a/python/src/bindings.cpp +++ b/python/src/bindings.cpp @@ -27,9 +27,9 @@ PYBIND11_MODULE(_aare, m) { py::class_>(m, "_Frame16") .def(py::init()) .def("get", &Frame::get) - .def_readonly("rows", &Frame::rows) - .def_readonly("cols", &Frame::cols) - .def_readonly("bitdepth", &Frame::bitdepth); + .def_property_readonly("rows", &Frame::rows) + .def_property_readonly("cols", &Frame::cols) + .def_property_readonly("bitdepth", &Frame::bitdepth);