10 ImageAccess(
void* data, std::shared_ptr<Image> image);
13 T getScalarFast(
uint position,
uchar channel = 0)
const noexcept;
15 T getScalarFast(VectorXi,
uchar channel = 0)
const noexcept;
17 T getScalarFast2D(Vector2i,
uchar channel = 0)
const noexcept;
19 T getScalarFast3D(Vector3i,
uchar channel = 0)
const noexcept;
20 float getScalar(
uint position,
uchar channel = 0)
const;
21 float getScalar(VectorXi position,
uchar channel = 0)
const;
22 Vector4f getVector(VectorXi position)
const;
24 void setScalarFast(
uint position, T value,
uchar channel = 0) noexcept;
26 void setScalarFast(VectorXi position, T value,
uchar channel = 0) noexcept;
28 void setScalarFast2D(Vector2i position, T value,
uchar channel = 0) noexcept;
30 void setScalarFast3D(Vector3i position, T value,
uchar channel = 0) noexcept;
31 void setScalar(
uint position,
float value,
uchar channel = 0);
32 void setScalar(VectorXi position,
float value,
uchar channel = 0);
33 void setVector(
uint position, Vector4f value);
34 void setVector(VectorXi position, Vector4f value);
37 typedef std::unique_ptr<ImageAccess>
pointer;
42 const int m_width, m_height, m_depth, m_channels, m_dimensions;
44 std::shared_ptr<Image> mImage;
49 return ((T*)mData)[position * m_channels + channel];
54 if(m_dimensions == 2) {
55 return ((T*)mData)[(position.x() + position.y() * m_width) * m_channels + channel];
57 return ((T*)mData)[(position.x() + position.y() * m_width + position.z()*m_width*m_height) * m_channels + channel];
63 return ((T*)mData)[(position.x() + position.y() * m_width) * m_channels + channel];
68 return ((T*)mData)[(position.x() + position.y() * m_width + position.z()*m_width*m_height) * m_channels + channel];
73 ((T*)mData)[position * m_channels + channel] = value;
78 if(m_dimensions == 2) {
79 ((T*)mData)[(position.x() + position.y() * m_width) * m_channels + channel] = value;
81 ((T*)mData)[(position.x() + position.y() * m_width + position.z()*m_width*m_height) * m_channels + channel] = value;
87 ((T*)mData)[(position.x() + position.y() * m_width) * m_channels + channel] = value;
92 ((T*)mData)[(position.x() + position.y() * m_width + position.z()*m_width*m_height) * m_channels + channel] = value;