17 #ifndef STROMX_RUNTIME_MATRIX_H 18 #define STROMX_RUNTIME_MATRIX_H 21 #include "stromx/runtime/Data.h" 51 virtual uint8_t* buffer() = 0;
54 virtual unsigned int bufferSize()
const = 0;
57 virtual unsigned int rows()
const = 0;
60 virtual unsigned int cols()
const = 0;
63 virtual unsigned int stride()
const = 0;
66 virtual ValueType valueType()
const = 0;
69 virtual unsigned int valueSize()
const;
72 virtual uint8_t* data() = 0;
75 virtual const uint8_t* data()
const = 0;
82 virtual void initializeMatrix(
const unsigned int rows,
83 const unsigned int cols,
84 const unsigned int stride,
86 const ValueType valueType) = 0;
89 static unsigned int valueSize(
const ValueType valueType);
98 T &
at(
const unsigned row,
const unsigned col)
102 return const_cast<T &
>(mat.
at<T>(row, col));
113 const T &
at(
const unsigned int row,
const unsigned col)
const 115 if(
sizeof(T) != valueSize())
116 throw WrongArgument(
"Size of access type does not match value size.");
124 unsigned int byteOffset = row * stride() + col * valueSize();
126 return *(
reinterpret_cast<const T*
>(data() + byteOffset));
134 const T
value(
const unsigned int row,
const unsigned int col)
const 139 return static_cast<T
>(at<uint8_t>(row, col));
141 return static_cast<T
>(at<int8_t>(row, col));
143 return static_cast<T
>(at<uint16_t>(row, col));
145 return static_cast<T
>(at<int16_t>(row, col));
147 return static_cast<T
>(at<uint32_t>(row, col));
149 return static_cast<T
>(at<int32_t>(row, col));
151 return static_cast<T
>(at<float>(row, col));
153 return static_cast<T
>(at<double>(row, col));
169 STROMX_RUNTIME_API
bool operator==(
const Matrix & rhs,
const Matrix & lhs);
176 class STROMX_RUNTIME_API data_traits<Matrix>
185 #endif // STROMX_RUNTIME_MATRIX_H Abstract data object.
Definition: Data.h:53
Definition: VariantHandle.h:34
const T value(const unsigned int row, const unsigned int col) const
Definition: Matrix.h:134
const T & at(const unsigned int row, const unsigned col) const
Definition: Matrix.h:113
The stromx class library.
Definition: AdjustRgbChannels.cpp:29
An internal, unexpected error occurred.
Definition: Exception.h:80
Abstract image.
Definition: Matrix.h:28
A wrong argument was passed to a function.
Definition: Exception.h:53
T & at(const unsigned row, const unsigned col)
Definition: Matrix.h:98
bool operator!=(const runtime::DataContainer &lhs, const runtime::DataContainer &rhs)
Definition: DataContainer.cpp:46