2 #ifndef CVD_PIXEL_OPERATIONS_H_ 3 #define CVD_PIXEL_OPERATIONS_H_ 6 #include <cvd/internal/builtin_components.h> 7 #include <cvd/internal/convert_pixel_types.h> 8 #include <cvd/internal/pixel_traits.h> 9 #include <cvd/internal/rgb_components.h> 18 template <class T, unsigned int N = Component<T>::count>
21 inline static void assign(T& lhs,
const T& rhs) { memcpy(&lhs, &rhs,
sizeof(T)); }
23 inline static void assign(T& lhs,
const S& rhs)
25 for(
unsigned int i = 0; i < N; i++)
29 inline static void add(T& lhs,
const S& rhs)
31 for(
unsigned int i = 0; i < N; ++i)
35 inline static void subtract(T& lhs,
const S& rhs)
37 for(
unsigned int i = 0; i < N; ++i)
41 inline static void multiply(T& lhs,
const S& rhs)
43 for(
unsigned int i = 0; i < N; ++i)
47 inline static void divide(T& lhs,
const S& rhs)
49 for(
unsigned int i = 0; i < N; ++i)
52 inline static bool equal(
const T& a,
const T& b) {
return memcmp(&a, &b,
sizeof(T)) == 0; }
53 inline static void zero(T& t) { memset(&t, 0,
sizeof(T)); }
60 inline static void assign(T& lhs,
const S& rhs) { lhs = (T)rhs; }
62 inline static void add(T& lhs,
const S& rhs) { lhs += rhs; }
64 inline static void subtract(T& lhs,
const S& rhs) { lhs -= rhs; }
66 inline static void multiply(T& lhs,
const S& rhs) { lhs = (T)(lhs * rhs); }
68 inline static void divide(T& lhs,
const S& rhs) { lhs = (T)(lhs / rhs); }
69 inline static bool equal(
const T& a,
const T& b) {
return a == b; }
70 inline static void zero(T& t) { t = T(); }
All classes and functions are within the CVD namespace.
Definition: argb.h:6
Definition: pixel_operations.h:19
Definition: builtin_components.h:38