template<typename T = float, size_t Channels = 4>
image class
Represents an image.
| Template parameters | |
|---|---|
| T | |
| Channels | |
Contents
Public types
- using value_type = T
- Alias for the type used to represent individual pixel values.
Public static variables
Constructors, destructors, conversion operators
- image()
- Default-construct a new image object.
- image(image const& other)
- Copy-construct a new image object.
- image(image&& other)
- Move an image object.
- image(size_t width, size_t height)
- Construct a new image object with the given width and height, initialising all values with
T{} - image(T const*const data, size_t width, size_t height)
- Construct a new image object with the given width and height and initialise it with the provided data.
Public functions
- auto data() -> T*const noexcept
- Get direct access to the underlying data.
- auto data() const -> T const *const noexcept
- Get direct access to the underlying data.
- auto width() const -> size_t
- Get the width of the image.
- auto height() const -> size_t
- Get the height of the image.
- auto channels() const -> size_t constexpr
- Get the number of channels in the image.
- auto size() const -> size_t constexpr
- Get the size of the data array containing the image.
- auto operator[](size_t offset) -> T&
- Get a reference to the sample at the specified offset.
- auto operator[](size_t offset) const -> T const &
- Get a constant reference to the sample at the specified offset.
-
auto operator()(int x,
int y) -> color_
view<T> - Get pixel value at specified coordinates.
-
auto operator()(int x,
int y) const -> color_
view<T const > const - Get pixel value at specified coordinates.
- auto operator()(int x, int y, int c) -> T&
- Get reference to scalar value at specified coordinates.
- auto operator()(int x, int y, int c) const -> T const &
- Get reference to scalar value at specified coordinates.
- auto operator+=(image const& rhs) -> image&
- Add
rhselement-wise to this image. - auto operator+=(T const& rhs) -> image&
- Add
rhselement-wise to this image. - auto operator-=(image const& rhs) -> image&
- Subtract
rhselement-wise from this image. - auto operator-=(T const& rhs) -> image&
- Subtract
rhselement-wise from this image. - auto operator*=(image const& rhs) -> image&
- Subtract
lhselement-wise fromrhs - auto operator*=(T const& rhs) -> image&
- Multiply
rhselement-wise with this image. - auto operator/=(image const& rhs) -> image&
- Divide this image element-wise by
rhs - auto operator/=(T const& rhs) -> image&
- Divide
rhselement-wise by this image.
Friends
- auto operator==(image const& lhs, image const& rhs) -> bool
- Compares two images.
- auto operator!=(image const& lhs, image const& rhs) -> bool
- Compares two images for inequality.
-
template<typename T_other>auto operator==(T_other const& lhs, image const& rhs) -> std::enable_if_t<!std::is_same<image, T_other>::value, bool>
- Compares two images.
-
template<typename T_other>auto operator!=(T_other const& lhs, image const& rhs) -> std::enable_if_t<!std::is_same<image, T_other>::value, bool>
- Compares two images for inequality.
-
template<typename T_other>auto operator==(image const& lhs, T_other const& rhs) -> bool
- Compares two images.
-
template<typename T_other>auto operator!=(image const& lhs, T_other const& rhs) -> std::enable_if_t<!std::is_same<image, T_other>::value, bool>
- Compares two images for inequality.
- auto operator+(image lhs, image const& rhs) -> image
- Add
rhselement-wise to lhs. - auto operator+(image lhs, T const& rhs) -> image
- Add
rhselement-wise to lhs. - auto operator+(T const& lhs, image rhs) -> image
- Add
lhselement-wise torhs - auto operator-(image lhs, image const& rhs) -> image
- Subtract
rhselement-wise fromlhs - auto operator-(image lhs, T const& rhs) -> image
- Subtract
rhselement-wise fromlhs - auto operator*(image lhs, image const& rhs) -> image
- Multiply
lhselement-wise withrhs - auto operator*(image lhs, T const& rhs) -> image
- Multiply
rhselement-wise withlhs - auto operator*(T const& lhs, image rhs) -> image
- Multiply
rhselement-wise withlhs - auto operator/(image lhs, image const& rhs) -> image
- Divide
lhselement-wise byrhs - auto operator/(image lhs, T const& rhs) -> image
- Divide
rhselement-wise bylhs
Function documentation
template<typename T, size_t Channels>
spice:: image<T, Channels>:: image(size_t width,
size_t height)
Construct a new image object with the given width and height, initialising all values with T{}
| Parameters | |
|---|---|
| width | |
| height | |
template<typename T, size_t Channels>
spice:: image<T, Channels>:: image(T const*const data,
size_t width,
size_t height)
Construct a new image object with the given width and height and initialise it with the provided data.
| Parameters | |
|---|---|
| data | pointer to data array in planar memory layout |
| width | |
| height | |
The data array is assumed to have the following properties:
- Planar memory layout (i.e. all red samples before all green samples before all blue samples etc...)
- RGB[A[X...]] channel order
- length
width * height * Channels
template<typename T, size_t Channels>
T*const spice:: image<T, Channels>:: data() noexcept
Get direct access to the underlying data.
| Returns | T * const |
|---|
template<typename T, size_t Channels>
T const *const spice:: image<T, Channels>:: data() const noexcept
Get direct access to the underlying data.
| Returns | T * const& |
|---|
template<typename T, size_t Channels>
size_t spice:: image<T, Channels>:: width() const
Get the width of the image.
| Returns | size_t |
|---|
template<typename T, size_t Channels>
size_t spice:: image<T, Channels>:: height() const
Get the height of the image.
| Returns | size_t |
|---|
template<typename T, size_t Channels>
size_t spice:: image<T, Channels>:: channels() const constexpr
Get the number of channels in the image.
| Returns | constexpr size_t |
|---|
template<typename T, size_t Channels>
size_t spice:: image<T, Channels>:: size() const constexpr
Get the size of the data array containing the image.
| Returns | constexpr size_t |
|---|
template<typename T, size_t Channels>
T& spice:: image<T, Channels>:: operator[](size_t offset)
Get a reference to the sample at the specified offset.
| Parameters | |
|---|---|
| offset | |
| Returns | T & |
template<typename T, size_t Channels>
T const & spice:: image<T, Channels>:: operator[](size_t offset) const
Get a constant reference to the sample at the specified offset.
| Parameters | |
|---|---|
| offset | |
| Returns | T & |
template<typename T, size_t Channels>
color_ view<T> spice:: image<T, Channels>:: operator()(int x,
int y)
Get pixel value at specified coordinates.
| Parameters | |
|---|---|
| x | The x-coordinate |
| y | The y-coordinate |
| Returns | color<T, Channels>& A reference to the image's color at the given coordinates |
template<typename T, size_t Channels>
color_ view<T const > const spice:: image<T, Channels>:: operator()(int x,
int y) const
Get pixel value at specified coordinates.
| Parameters | |
|---|---|
| x | The x-coordinate |
| y | The y-coordinate |
| Returns | color<T, Channels>& A constant reference to the image's color at the given coordinates |
template<typename T, size_t Channels>
T& spice:: image<T, Channels>:: operator()(int x,
int y,
int c)
Get reference to scalar value at specified coordinates.
| Parameters | |
|---|---|
| x | The x-coordinate |
| y | The y-coordinate |
| c | The channel |
| Returns | T& A reference to the image's color at the given coordinates |
template<typename T, size_t Channels>
T const & spice:: image<T, Channels>:: operator()(int x,
int y,
int c) const
Get reference to scalar value at specified coordinates.
| Parameters | |
|---|---|
| x | The x-coordinate |
| y | The y-coordinate |
| c | The channel |
| Returns | T const & A constant reference to the image's color at the given coordinates |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator+=(image const& rhs)
Add rhs element-wise to this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator+=(T const& rhs)
Add rhs element-wise to this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator-=(image const& rhs)
Subtract rhs element-wise from this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator-=(T const& rhs)
Subtract rhs element-wise from this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator*=(image const& rhs)
Subtract lhs element-wise from rhs
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
Multiply this image element-wise with rhs
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator*=(T const& rhs)
Multiply rhs element-wise with this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator/=(image const& rhs)
Divide this image element-wise by rhs
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
image& spice:: image<T, Channels>:: operator/=(T const& rhs)
Divide rhs element-wise by this image.
| Parameters | |
|---|---|
| rhs | |
| Returns | image& |
template<typename T, size_t Channels>
bool operator==(image const& lhs,
image const& rhs)
Compares two images.
| Parameters | |
|---|---|
| lhs | |
| rhs | |
| Returns | true if the two have the same number of elements with corresponding values, false otherwise |
template<typename T, size_t Channels>
bool operator!=(image const& lhs,
image const& rhs)
Compares two images for inequality.
| Parameters | |
|---|---|
| lhs | |
| rhs | |
| Returns | true if the two have an unequal number of elements or non-corresponding values, false otherwise |
template<typename T, size_t Channels>
template<typename T_other>
std::enable_if_t<!std::is_same<image, T_other>::value, bool> operator==(T_other const& lhs,
image const& rhs)
Compares two images.
| Template parameters | |
|---|---|
| T_other | A type implementing the subscript operator as well as width, height and channels member functions |
| Parameters | |
| lhs | |
| rhs | |
| Returns | true if the two have the same number of elements with corresponding values, false otherwise |
template<typename T, size_t Channels>
template<typename T_other>
std::enable_if_t<!std::is_same<image, T_other>::value, bool> operator!=(T_other const& lhs,
image const& rhs)
Compares two images for inequality.
| Template parameters | |
|---|---|
| T_other | A type implementing the subscript operator as well as width, height and channels member functions |
| Parameters | |
| lhs | |
| rhs | |
| Returns | true if the two have an unequal number of elements or non-corresponding values, false otherwise |
template<typename T, size_t Channels>
template<typename T_other>
bool operator==(image const& lhs,
T_other const& rhs)
Compares two images.
| Template parameters | |
|---|---|
| T_other | A type implementing the subscript operator as well as width, height and channels member functions |
| Parameters | |
| lhs | |
| rhs | |
| Returns | true if the two have the same number of elements with corresponding values, false otherwise |
template<typename T, size_t Channels>
template<typename T_other>
std::enable_if_t<!std::is_same<image, T_other>::value, bool> operator!=(image const& lhs,
T_other const& rhs)
Compares two images for inequality.
| Template parameters | |
|---|---|
| T_other | A type implementing the subscript operator as well as width, height and channels member functions |
| Parameters | |
| lhs | |
| rhs | |
| Returns | true if the two have an unequal number of elements or non-corresponding values, false otherwise |