Linear access properties. More...
#include <cvb/vpat.hpp>
Inherits ValueAccessBase< LinearAccessData >.
Classes | |
class | Column |
A single column. More... | |
class | Row |
A single row. More... | |
Public Member Functions | |
LinearAccessData () noexcept=default | |
Creates a default linear access data set. More... | |
LinearAccessData | NewMoved (const Cvb::Rect< int > newAoi) const noexcept |
Creates a new, moved linear access object. More... | |
std::uint8_t * | BasePtr () const noexcept |
Linear access base pointer. More... | |
std::intptr_t | XInc () const noexcept |
X-increment for linear access. More... | |
std::intptr_t | YInc () const noexcept |
Y-increment for linear access. More... | |
CVB_FORCE_INLINE int | Width () const noexcept |
Gets the pixel width of the underlying plane. More... | |
bool | Valid () const noexcept |
Gets whether this linear access object is valid. More... | |
operator bool () const noexcept | |
Gets whether this linear access object is valid. More... | |
CVB_FORCE_INLINE const void * | operator() (int x, int y) const noexcept |
Coordinate pixel access operator. More... | |
CVB_FORCE_INLINE void * | operator() (int x, int y) noexcept |
Coordinate pixel access operator. More... | |
CVB_FORCE_INLINE const void * | operator[] (int idx) const noexcept |
Index pixel access operator. More... | |
CVB_FORCE_INLINE void * | operator[] (int idx) noexcept |
Index pixel access operator. More... | |
Row | RowAt (int y) const noexcept |
Gets the LinearAccessData::Row at y. More... | |
Column | ColumnAt (int x) const noexcept |
Gets the LinearAccessData::Column at x. More... | |
Public Member Functions inherited from ValueAccessBase< LinearAccessData > | |
const Type & | Value (int x, int y) const noexcept |
Gets a pixel value at a given position. More... | |
Type & | Value (int x, int y) noexcept |
Gets a settable pixel value at a given position. More... | |
const Type & | Value (Point2D< int > position) const noexcept |
Gets a pixel value at a given position. More... | |
Type & | Value (Point2D< int > position) noexcept |
Gets a settable pixel value at a given position. More... | |
Static Public Member Functions | |
template<class PLANE_T > | |
static LinearAccessData | FromPlane (const PLANE_T &plane) noexcept |
Tries to get a valid LinearAccessData from the given plane. More... | |
static LinearAccessData | FromVpat (const Vpat &access, Cvb::Size2D< int > size, Cvb::DataType dataType) noexcept |
Tries to get a valid LinearAccessData trait from the given vpat. More... | |
static LinearAccessData | FromPtr (std::uint8_t *basePtr, std::intptr_t xInc, std::intptr_t yInc, int width) noexcept |
Creates LinearAccessData from the given pointer and increments. More... | |
Related Functions | |
(Note that these are not member functions.) | |
bool | operator!= (const LinearAccessData &lhs, const LinearAccessData &rhs) noexcept |
Inequality operator. More... | |
bool | operator== (const LinearAccessData &lhs, const LinearAccessData &rhs) noexcept |
Equality operator. More... | |
template<class... ACCESSES> | |
bool | IsInterleaved (size_t bytesPerPixel, const LinearAccessData &access0, const LinearAccessData &access1, const ACCESSES &... accs) noexcept |
Returns whether the LinearAccesses are directly interleaved. More... | |
Linear access properties.
|
defaultnoexcept |
Creates a default linear access data set.
Does | not throw any exception. |
|
inlinenoexcept |
Linear access base pointer.
Does | not throw any exception. |
Remember, that the increments to be added to the base pointer, are given in bytes, not in pixels. BasePtr by design points to the pixel at location (0,0).
|
inlinenoexcept |
Gets the LinearAccessData::Column at x.
[in] | x | Pixel column. |
|
inlinestaticnoexcept |
Tries to get a valid LinearAccessData from the given plane.
Can be extended to support custom plane types T by implementing Cvb::PlaneTraits<T>.
PLANE_T | The type of the plane to get the access from. |
[in] | plane | Plane to access. |
|
inlinestaticnoexcept |
Creates LinearAccessData from the given pointer and increments.
[in] | basePtr | Base address of the memory. |
[in] | xInc | std::intptr_t X increment in bytes. |
[in] | yInc | std::intptr_t Y increment in bytes. |
[in] | width | int The number of elements in the plane in x direction. |
|
inlinestaticnoexcept |
Tries to get a valid LinearAccessData trait from the given vpat.
[in] | access | Base address in conjunction with VPAT. |
[in] | size | Image dimensions of the given VPAT access. |
[in] | dataType | Data type of the image of the given vpat. |
|
inlinenoexcept |
Creates a new, moved linear access object.
[in] | newAoi | Offset and new size in pixels to move this linear access to. |
|
inlineexplicitnoexcept |
|
inlinenoexcept |
Coordinate pixel access operator.
[in] | x | X coordinate coefficient in pixels. |
[in] | y | Y coordinate coefficient in pixels. |
|
inlinenoexcept |
Coordinate pixel access operator.
[in] | x | X coordinate coefficient in pixels. |
[in] | y | Y coordinate coefficient in pixels. |
|
inlinenoexcept |
Index pixel access operator.
[in] | idx | Pixel index. |
|
inlinenoexcept |
Index pixel access operator.
[in] | idx | Pixel index. |
|
inlinenoexcept |
Gets the LinearAccessData::Row at y.
[in] | y | Pixel row. |
|
inlinenoexcept |
|
inlinenoexcept |
Gets the pixel width of the underlying plane.
|
inlinenoexcept |
X-increment for linear access.
Does | not throw any exception. |
|
inlinenoexcept |
Y-increment for linear access.
Does | not throw any exception. |
|
related |
Returns whether the LinearAccesses are directly interleaved.
[in] | bytesPerPixel | The number of bytes required per pixel. |
[in] | access0 | First LinearAccessData to test. |
[in] | access1 | Second LinearAccessData to test. |
[in] | accs | Arbitrary number of other Linear Accesses. |
|
related |
Inequality operator.
[in] | lhs | Left hand side operand. |
[in] | rhs | Right hand side operand. |
|
related |
Equality operator.
[in] | lhs | Left hand side operand. |
[in] | rhs | Right hand side operand. |