
#include "Util/MathFunctions.H"#include "Image/PixelsBase.H"#include "Image/PixelsCommonDef.H"#include "Util/Promotions.H"#include "Util/TypeTraits.H"#include "Util/Assert.H"#include "Util/Types.H"#include "Util/log.H"#include "Image/colorDefs.H"#include <cmath>Go to the source code of this file.
Classes | |
| struct | TypeTraits< PixRGB< T > > |
| Specialize TypeTraits to indicate that PixRGB is a "trivial" type. More... | |
| struct | TypeTraits< PixHSV< T > > |
| Specialize TypeTraits to indicate that PixHSV is a "trivial" type. More... | |
| struct | TypeTraits< PixJpegYUV< T > > |
| Specialize TypeTraits to indicate that PixJpegYUV is a "trivial" type. More... | |
| struct | TypeTraits< PixVideoYUV< T > > |
| Specialize TypeTraits to indicate that PixVideoYUV is a "trivial" type. More... | |
| struct | TypeTraits< PixYIQ< T > > |
| Specialize TypeTraits to indicate that PixYIQ is a "trivial" type. More... | |
| struct | TypeTraits< PixHSL< T > > |
| Specialize TypeTraits to indicate that PixHSL is a "trivial" type. More... | |
| struct | TypeTraits< PixLab< T > > |
| Specialize TypeTraits to indicate that PixLab is a "trivial" type. More... | |
| struct | TypeTraits< PixXYZ< T > > |
| Specialize TypeTraits to indicate that PixXYZ is a "trivial" type. More... | |
| struct | TypeTraits< PixH2SV1< T > > |
| Specialize TypeTraits to indicate that PixH2SV1 is a "trivial" type. More... | |
| struct | TypeTraits< PixH2SV2< T > > |
| Specialize TypeTraits to indicate that PixH2SV2 is a "trivial" type. More... | |
| struct | TypeTraits< PixH2SV3< T > > |
| Specialize TypeTraits to indicate that PixH2SV3 is a "trivial" type. More... | |
| struct | TypeTraits< PixHyper< T, dim > > |
| Specialize TypeTraits to indicate that PixHyper is a "trivial" type. More... | |
| struct | TypeTraits< PixDKL< T > > |
| Specialize TypeTraits to indicate that PixDKL is a "trivial" type. More... | |
| struct | ops::plus |
| struct | ops::minus |
| struct | ops::multiplies |
| struct | ops::divides |
| struct | ops::modulo |
| struct | ops::bitwise_and |
| struct | ops::bitwise_or |
| struct | ops::bitwise_xor |
| struct | rebind< C, T > |
| Helper struct to provide a generic way to "rebind" template parameters. More... | |
| struct | rebind< C< T >, U > |
| struct | rebind< C< T1, T2 >, U1 > |
| struct | pix_ops_mixin< pixtype, T > |
| A "mix-in" class that injects all arithmetic operators into the class that inherits it. More... | |
| struct | pix_ops_mixin_hyper< pixtype, T, dim > |
| class | PixRGB< T > |
| This is the basic RGB pixel class. More... | |
| class | PixHSV< T > |
| This is the basic HSV pixel class. More... | |
| class | PixJpegYUV< T > |
| This is the basic jpeg-YUV pixel class. More... | |
| class | PixVideoYUV< T > |
| This is the basic video-YUV pixel class. More... | |
| class | PixYIQ< T > |
| This is the basic YIQ pixel class. More... | |
| class | PixHSL< T > |
| This is the basic HSL pixel class. More... | |
| class | PixLab< T > |
| This is the basic Lab pixel class. More... | |
| class | PixXYZ< T > |
| This is the basic XYZ pixel class. More... | |
| class | PixH2SV1< T > |
| This is the H2SV1 pixel class. More... | |
| class | PixH2SV2< T > |
| This is the H2SV2 pixel class. More... | |
| class | PixH2SV3< T > |
| This is the H2SV3 pixel class. More... | |
| class | PixHyper< T, dim > |
| This is the hyper pixel class. More... | |
| class | PixDKL< T > |
| This is the basic DKL pixel class. More... | |
Defines | |
| #define | PIX_MATH_OPS_EQ(OPSYM, FUNCTYPE) template <class T2> inline pixtype<T>& operator OPSYM (const pixtype<T2>& A) { return pix_helper::pix_pix_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } |
| #define | PIX_OPERATOR_EQ(OPSYM, FUNCTYPE) |
| #define | PIX_MATH_OPS(OPSYM, FUNCTYPE) |
| #define | PIX_OP(T2, OPSYM, FUNC) |
| #define | PIX_OPERATOR(OPSYM, FUNCTYPE) |
| #define | PIX_MATH_OPS_EQ(OPSYM, FUNCTYPE) template <class T2> inline pixtype<T, dim>& operator OPSYM (const pixtype<T2, dim>& A) { return pix_helper::pix_pix_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } |
| #define | PIX_OPERATOR_EQ(OPSYM, FUNCTYPE) |
| #define | PIX_MATH_OPS(OPSYM, FUNCTYPE) |
| #define | PIX_OP(T2, OPSYM, FUNC) |
| #define | PIX_OPERATOR(OPSYM, FUNCTYPE) |
| #define | LIST_2(p1, p2) p1, p2 |
| Quickie macro for escaping the comma out of a macro argument. | |
Functions | |
| template<class pix1 , class pix2 > | |
| void | pix_helper::clamped_assign_3 (pix1 &lhs, const pix2 &rhs) |
| template<class pix1 , class pix2 > | |
| void | pix_helper::clamped_assign_4 (pix1 &lhs, const pix2 &rhs) |
| template<class pix1 , class pix2 > | |
| void | pix_helper::clamped_assign_n (pix1 &lhs, const pix2 &rhs) |
| template<class insttype , class T2 , class functype > | |
| insttype & | pix_helper::pix_scalar_op_eq (insttype &lhs, const T2 rhs, functype func) |
| helper for adding a base type with a pixel where basic type T != T2 | |
| template<class T , class insttype , class T2 , class functype > | |
| rebind< insttype, typename promote_trait< T, T2 >::TP > ::type | pix_helper::pix_scalar_op (const insttype &lhs, const T2 rhs, functype func) |
| helper for adding a base type with a pixel where basic type T != T2 | |
| template<class lhstype , class rhstype , class functype > | |
| lhstype & | pix_helper::pix_pix_op_eq (lhstype &lhs, const rhstype &rhs, functype func) |
| Apply a x= operation between two pixels where the base type are the same. | |
| template<template< class > class pixtype, class T , class T2 , class functype > | |
| pixtype< typename promote_trait< T, T2 >::TP > | pix_helper::pix_pix_op (const pixtype< T > &lhs, const pixtype< T2 > &rhs, functype func) |
| Apply a x operation between two pixels where the base type are the same. | |
| template<template< class, size_t > class pixtype, class T , class T2 , size_t dim, class functype > | |
| pixtype< typename promote_trait< T, T2 >::TP, dim > | pix_helper::pix_pix_op (const pixtype< T, dim > &lhs, const pixtype< T2, dim > &rhs, functype func) |
| SPECIALIZE_PROMOTE_TRAIT (PixHyper, LIST_2(class T, size_t dim), LIST_2(, 3)) SPECIALIZE_PROMOTE_TRAIT(PixHyper | |
| LIST_2 (class T, size_t dim) | |
Basic pixel types version 2.0
Definition in file PixelsTypes.H.
| #define LIST_2 | ( | p1, | |||
| p2 | ) | p1, p2 |
Quickie macro for escaping the comma out of a macro argument.
Definition at line 4010 of file PixelsTypes.H.
| #define PIX_MATH_OPS | ( | OPSYM, | |||
| FUNCTYPE | ) |
template <class T2> \ inline pixtype<typename promote_trait<T,T2>::TP, dim> \ operator OPSYM (const pixtype<T2, dim>& rhs) const \ { return pix_helper::pix_pix_op(static_cast<const pixtype<T, dim>&>(*this), rhs, FUNCTYPE()); }
Definition at line 516 of file PixelsTypes.H.
| #define PIX_MATH_OPS | ( | OPSYM, | |||
| FUNCTYPE | ) |
template <class T2> \ inline typename rebind<pixtype<T>, typename promote_trait<T,T2>::TP>::type \ operator OPSYM (const pixtype<T2>& rhs) const \ { return pix_helper::pix_pix_op(static_cast<const pixtype<T>&>(*this), rhs, FUNCTYPE()); }
Definition at line 516 of file PixelsTypes.H.
| #define PIX_OP | ( | T2, | |||
| OPSYM, | |||||
| FUNC | ) |
inline typename rebind<pixtype<T, dim>, typename promote_trait<T, T2>::TP>::type \ operator OPSYM (const T2 A) const { return pix_helper::pix_scalar_op<T>(static_cast<const pixtype<T, dim>&>(*this), A, FUNC); }
Definition at line 533 of file PixelsTypes.H.
| #define PIX_OP | ( | T2, | |||
| OPSYM, | |||||
| FUNC | ) |
inline typename rebind<pixtype<T>, typename promote_trait<T, T2>::TP>::type \ operator OPSYM (const T2 A) const { return pix_helper::pix_scalar_op<T>(static_cast<const pixtype<T>&>(*this), A, FUNC); }
Definition at line 533 of file PixelsTypes.H.
| #define PIX_OPERATOR | ( | OPSYM, | |||
| FUNCTYPE | ) |
PIX_OP(bool, OPSYM, FUNCTYPE()) \ PIX_OP(char, OPSYM, FUNCTYPE()) \ PIX_OP(short, OPSYM, FUNCTYPE()) \ PIX_OP(int, OPSYM, FUNCTYPE()) \ PIX_OP(long, OPSYM, FUNCTYPE()) \ PIX_OP(float, OPSYM, FUNCTYPE()) \ PIX_OP(double, OPSYM, FUNCTYPE()) \ PIX_OP(long double, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned char, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned short, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned int, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned long, OPSYM, FUNCTYPE())
Definition at line 537 of file PixelsTypes.H.
| #define PIX_OPERATOR | ( | OPSYM, | |||
| FUNCTYPE | ) |
PIX_OP(bool, OPSYM, FUNCTYPE()) \ PIX_OP(char, OPSYM, FUNCTYPE()) \ PIX_OP(short, OPSYM, FUNCTYPE()) \ PIX_OP(int, OPSYM, FUNCTYPE()) \ PIX_OP(long, OPSYM, FUNCTYPE()) \ PIX_OP(float, OPSYM, FUNCTYPE()) \ PIX_OP(double, OPSYM, FUNCTYPE()) \ PIX_OP(long double, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned char, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned short, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned int, OPSYM, FUNCTYPE()) \ PIX_OP(unsigned long, OPSYM, FUNCTYPE())
Definition at line 537 of file PixelsTypes.H.
| #define PIX_OPERATOR_EQ | ( | OPSYM, | |||
| FUNCTYPE | ) |
inline pixtype<T, dim>& operator OPSYM (const bool A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const char A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const short A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const int A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const long A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const float A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const double A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const long double A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const unsigned char A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const unsigned short A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const unsigned int A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T, dim>& operator OPSYM (const unsigned long A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T, dim>&>(*this), A, FUNCTYPE()); }
Definition at line 491 of file PixelsTypes.H.
| #define PIX_OPERATOR_EQ | ( | OPSYM, | |||
| FUNCTYPE | ) |
inline pixtype<T>& operator OPSYM (const bool A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const char A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const short A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const int A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const long A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const float A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const double A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const long double A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const unsigned char A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const unsigned short A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const unsigned int A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); } \ inline pixtype<T>& operator OPSYM (const unsigned long A) { return pix_helper::pix_scalar_op_eq(static_cast<pixtype<T>&>(*this), A, FUNCTYPE()); }
Definition at line 491 of file PixelsTypes.H.
1.6.3