\doxysection{Frame.\+hpp} \hypertarget{Frame_8hpp_source}{}\label{Frame_8hpp_source}\index{core/include/aare/core/Frame.hpp@{core/include/aare/core/Frame.hpp}} \mbox{\hyperlink{Frame_8hpp}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{00001\ \textcolor{preprocessor}{\#pragma\ once}} \DoxyCodeLine{00002\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{NDArray_8hpp}{aare/core/NDArray.hpp}}"{}}} \DoxyCodeLine{00003\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{core_2include_2aare_2core_2defs_8hpp}{aare/core/defs.hpp}}"{}}} \DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ }} \DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ }} \DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ }} \DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ }} \DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ }} \DoxyCodeLine{00009\ } \DoxyCodeLine{00016\ \textcolor{keyword}{namespace\ }\mbox{\hyperlink{namespaceaare}{aare}}\ \{} \DoxyCodeLine{00017\ } \DoxyCodeLine{00018\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classaare_1_1Frame}{Frame}}\ \{} \DoxyCodeLine{00019\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a21c0feaf422c4ffdd479328f2fdaefec}{m\_rows}};} \DoxyCodeLine{00020\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a3edb3a0e0ed32c3837ad5ad95e537aed}{m\_cols}};} \DoxyCodeLine{00021\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a17ccc92b87bc2b4c3d3a500759269cab}{m\_bitdepth}};} \DoxyCodeLine{00022\ \ \ \ \ std::byte\ *\mbox{\hyperlink{classaare_1_1Frame_afa6172a742a35734ad5148786697d197}{m\_data}};} \DoxyCodeLine{00023\ } \DoxyCodeLine{00024\ \ \ \textcolor{keyword}{public}:} \DoxyCodeLine{00025\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame}{Frame}}(ssize\_t\ rows,\ ssize\_t\ cols,\ ssize\_t\ m\_bitdepth);} \DoxyCodeLine{00026\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame}{Frame}}(std::byte\ *fp,\ ssize\_t\ rows,\ ssize\_t\ cols,\ ssize\_t\ m\_bitdepth);} \DoxyCodeLine{00027\ \ \ \ \ std::byte\ *\mbox{\hyperlink{classaare_1_1Frame_a6ace52fdcdf3d87921c1a56ca1781f32}{get}}(\textcolor{keywordtype}{int}\ row,\ \textcolor{keywordtype}{int}\ col);} \DoxyCodeLine{00028\ } \DoxyCodeLine{00029\ \ \ \ \ \textcolor{comment}{//\ TODO!\ can\ we,\ or\ even\ want\ to\ remove\ the\ template?}} \DoxyCodeLine{00030\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classaare_1_1Frame_addd6b73bbb426aafe834e261360eb2d8}{set}}(\textcolor{keywordtype}{int}\ row,\ \textcolor{keywordtype}{int}\ col,\ T\ data)\ \{} \DoxyCodeLine{00031\ \ \ \ \ \ \ \ \ assert(\textcolor{keyword}{sizeof}(T)\ ==\ m\_bitdepth\ /\ 8);} \DoxyCodeLine{00032\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (row\ <\ 0\ ||\ row\ >=\ m\_rows\ ||\ col\ <\ 0\ ||\ col\ >=\ m\_cols)\ \{} \DoxyCodeLine{00033\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ std::out\_of\_range(\textcolor{stringliteral}{"{}Invalid\ row\ or\ column\ index"{}});} \DoxyCodeLine{00034\ \ \ \ \ \ \ \ \ \}} \DoxyCodeLine{00035\ \ \ \ \ \ \ \ \ std::memcpy(m\_data\ +\ (row\ *\ m\_cols\ +\ col)\ *\ (m\_bitdepth\ /\ 8),\ \&data,\ m\_bitdepth\ /\ 8);} \DoxyCodeLine{00036\ \ \ \ \ \}} \DoxyCodeLine{00037\ } \DoxyCodeLine{00038\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a5cc556f6b13efb17b3635adb436d816c}{rows}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ m\_rows;\ \}} \DoxyCodeLine{00039\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a658566623e47c1fa88a08f5e8fe1957f}{cols}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ m\_cols;\ \}} \DoxyCodeLine{00040\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_ae1fbb96ec971ddcd76ecf3cd91dc5890}{bitdepth}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ m\_bitdepth;\ \}} \DoxyCodeLine{00041\ \ \ \ \ ssize\_t\ \mbox{\hyperlink{classaare_1_1Frame_a094683d38cac2461c18ed7cc776221c2}{size}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ m\_rows\ *\ m\_cols\ *\ m\_bitdepth\ /\ 8;\ \}} \DoxyCodeLine{00042\ \ \ \ \ std::byte\ *\mbox{\hyperlink{classaare_1_1Frame_a635a1ff8db457c20fcbc2b2b5601bc1d}{data}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ m\_data;\ \}} \DoxyCodeLine{00043\ } \DoxyCodeLine{00044\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame}{Frame}}\ \&\mbox{\hyperlink{classaare_1_1Frame_ad153902f7332be45aa5441196c3aad64}{operator=}}(\mbox{\hyperlink{classaare_1_1Frame}{Frame}}\ \&other)\ \{} \DoxyCodeLine{00045\ \ \ \ \ \ \ \ \ m\_rows\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_a5cc556f6b13efb17b3635adb436d816c}{rows}}();} \DoxyCodeLine{00046\ \ \ \ \ \ \ \ \ m\_cols\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_a658566623e47c1fa88a08f5e8fe1957f}{cols}}();} \DoxyCodeLine{00047\ \ \ \ \ \ \ \ \ m\_bitdepth\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_ae1fbb96ec971ddcd76ecf3cd91dc5890}{bitdepth}}();} \DoxyCodeLine{00048\ \ \ \ \ \ \ \ \ m\_data\ =\ \textcolor{keyword}{new}\ std::byte[m\_rows\ *\ m\_cols\ *\ m\_bitdepth\ /\ 8];} \DoxyCodeLine{00049\ \ \ \ \ \ \ \ \ std::memcpy(m\_data,\ other.\mbox{\hyperlink{classaare_1_1Frame_afa6172a742a35734ad5148786697d197}{m\_data}},\ m\_rows\ *\ m\_cols\ *\ m\_bitdepth\ /\ 8);} \DoxyCodeLine{00050\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};} \DoxyCodeLine{00051\ \ \ \ \ \}} \DoxyCodeLine{00052\ \ \ \ \ \textcolor{comment}{//\ add\ move\ constructor}} \DoxyCodeLine{00053\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame_a2986002a7d6c161dcc592cea1162a5bb}{Frame}}(\mbox{\hyperlink{classaare_1_1Frame}{Frame}}\ \&\&other)\ \{} \DoxyCodeLine{00054\ \ \ \ \ \ \ \ \ m\_rows\ =\ other.rows();} \DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ m\_cols\ =\ other.cols();} \DoxyCodeLine{00056\ \ \ \ \ \ \ \ \ m\_bitdepth\ =\ other.bitdepth();} \DoxyCodeLine{00057\ \ \ \ \ \ \ \ \ m\_data\ =\ other.m\_data;} \DoxyCodeLine{00058\ \ \ \ \ \ \ \ \ other.m\_data\ =\ \textcolor{keyword}{nullptr};} \DoxyCodeLine{00059\ \ \ \ \ \ \ \ \ other.m\_rows\ =\ other.m\_cols\ =\ other.m\_bitdepth\ =\ 0;} \DoxyCodeLine{00060\ \ \ \ \ \}} \DoxyCodeLine{00061\ \ \ \ \ \textcolor{comment}{//\ copy\ constructor}} \DoxyCodeLine{00062\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame_a82f7c09b244a295e2cc13e199a198448}{Frame}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classaare_1_1Frame}{Frame}}\ \&other)\ \{} \DoxyCodeLine{00063\ \ \ \ \ \ \ \ \ m\_rows\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_a5cc556f6b13efb17b3635adb436d816c}{rows}}();} \DoxyCodeLine{00064\ \ \ \ \ \ \ \ \ m\_cols\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_a658566623e47c1fa88a08f5e8fe1957f}{cols}}();} \DoxyCodeLine{00065\ \ \ \ \ \ \ \ \ m\_bitdepth\ =\ other.\mbox{\hyperlink{classaare_1_1Frame_ae1fbb96ec971ddcd76ecf3cd91dc5890}{bitdepth}}();} \DoxyCodeLine{00066\ \ \ \ \ \ \ \ \ m\_data\ =\ \textcolor{keyword}{new}\ std::byte[m\_rows\ *\ m\_cols\ *\ m\_bitdepth\ /\ 8];} \DoxyCodeLine{00067\ \ \ \ \ \ \ \ \ std::memcpy(m\_data,\ other.\mbox{\hyperlink{classaare_1_1Frame_afa6172a742a35734ad5148786697d197}{m\_data}},\ m\_rows\ *\ m\_cols\ *\ m\_bitdepth\ /\ 8);} \DoxyCodeLine{00068\ \ \ \ \ \}} \DoxyCodeLine{00069\ } \DoxyCodeLine{00070\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>\ \mbox{\hyperlink{classaare_1_1NDView}{NDView}}\ \mbox{\hyperlink{classaare_1_1Frame_af6fbc8eaa1f00062431edf118caebe0f}{view}}()\ \{} \DoxyCodeLine{00071\ \ \ \ \ \ \ \ \ std::vector\ shape\ =\ \{m\_rows,\ m\_cols\};} \DoxyCodeLine{00072\ \ \ \ \ \ \ \ \ T\ *\mbox{\hyperlink{classaare_1_1Frame_a635a1ff8db457c20fcbc2b2b5601bc1d}{data}}\ =\ \textcolor{keyword}{reinterpret\_cast<}T\ *\textcolor{keyword}{>}(m\_data);} \DoxyCodeLine{00073\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classaare_1_1NDView}{NDView}}(data,\ shape);} \DoxyCodeLine{00074\ \ \ \ \ \}} \DoxyCodeLine{00075\ } \DoxyCodeLine{00076\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>\ \mbox{\hyperlink{classaare_1_1NDArray}{NDArray}}\ \mbox{\hyperlink{classaare_1_1Frame_aac3f666d8f5fdb30861459c2f639d40a}{image}}()\ \{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classaare_1_1NDArray}{NDArray}}(this-\/>view());\ \}} \DoxyCodeLine{00077\ } \DoxyCodeLine{00078\ \ \ \ \ \mbox{\hyperlink{classaare_1_1Frame_a6bd29a7d2219e3dde03d4c9bd4298c60}{\string~Frame}}()\ \{\ \textcolor{keyword}{delete}[]\ m\_data;\ \}} \DoxyCodeLine{00079\ \};} \DoxyCodeLine{00080\ } \DoxyCodeLine{00081\ \}\ \textcolor{comment}{//\ namespace\ aare}} \end{DoxyCode}