40 typedef T pixel_index_type;
44 FimRgbaT(T red,T green,T blue,T alpha)
51 FimRgbaT(
const FimRgbaT& rhs) =
default;
52 FimRgbaT & operator=(FimRgbaT
const &) =
default;
57 explicit FimRgbaT(
const FimRgbaT<U>& v)
58 {
for (uint ii=0; ii<FIMRGBA_SIZE; ++ii) futConvert(v.c[ii],
c[ii]); }
60 const FimRgbaT operator+(
const FimRgbaT& v)
const
61 {
return FimRgbaT<T>(
c[0]+v.c[0],
c[1]+v.c[1],
c[2]+v.c[2],
c[3]+v.c[3]); }
63 void operator+=(
const FimRgbaT& v)
64 {
for (uint ii=0; ii<FIMRGBA_SIZE; ++ii)
c[ii] =
c[ii] + v.c[ii]; }
66 const FimRgbaT operator*(T v)
const
67 {
return FimRgbaT<T>(
c[0]*v,
c[1]*v,
c[2]*v,
c[3]*v); }
69 FimRgbaT operator/(T v)
const
70 {
return FimRgbaT(
c[0]/v,
c[1]/v,
c[2]/v,
c[3]/v); }
73 {
c[0] *= v;
c[1] *= v;
c[2] *= v;
c[3] *= v; }
79typedef FimRgbaT<uchar> FimRgbaUbC;
80typedef FimRgbaT<schar> FimRgbaSbC;
81typedef FimRgbaT<ushort> FimRgbaUsC;
82typedef FimRgbaT<short> FimRgbaSsC;
83typedef FimRgbaT<float> FimRgbaFC;
86operator*(FimRgbaUbC pix,
float v)
88 return FimRgbaFC(
float(pix.c[0])*v,
94operator*(FimRgbaSbC pix,
float v)
96 return FimRgbaFC(
float(pix.c[0])*v,
102operator*(FimRgbaSsC pix,
float v)
104 return FimRgbaFC(
float(pix.c[0])*v,
110template<
class T,
class U>
112futConvert(
const FimRgbaT<T> &a,FimRgbaT<U> &b)
114 for (uint ii=0; ii<FIMRGBA_SIZE; ++ii)
115 futConvert(a.c[ii],b.c[ii]);