33 #include "dcmtk/config/osconfig.h"
35 #include "dcmtk/dcmimage/dicopxt.h"
36 #include "dcmtk/dcmimgle/diinpx.h"
45 template<
class T1,
class T2>
63 const unsigned long planeSize,
67 if ((pixel != NULL) && (this->
Count > 0) && (status == EIS_Normal))
87 const unsigned long planeSize,
90 if (this->
Init(pixel))
92 register T2 *r = this->
Data[0];
93 register T2 *g = this->
Data[1];
94 register T2 *b = this->
Data[2];
110 register unsigned long l;
111 register unsigned long i = count;
112 register const T1 *h = pixel;
113 register const T1 *s = h + planeSize;
114 register const T1 *v = s + planeSize;
118 for (l = planeSize; (l != 0) && (i != 0); --l, --i)
120 convertValue(*(r++), *(g++), *(b++), removeSign(*(h++), offset), removeSign(*(s++), offset),
121 removeSign(*(v++), offset), maxvalue);
131 register const T1 *p = pixel;
135 register unsigned long i;
136 for (i = count; i != 0; --i)
138 h = removeSign(*(p++), offset);
139 s = removeSign(*(p++), offset);
140 v = removeSign(*(p++), offset);
141 convertValue(*(r++), *(g++), *(b++), h, s, v, maxvalue);
169 const double h = (OFstatic_cast(
double, hue) * 6) / (OFstatic_cast(
double, maxvalue) + 1);
170 const double s = OFstatic_cast(
double, saturation) / OFstatic_cast(
double, maxvalue);
171 const double v = OFstatic_cast(
double, value) / OFstatic_cast(
double, maxvalue);
172 const T2 hi = OFstatic_cast(T2, h);
173 const double hf = h - hi;
174 const T2 p = OFstatic_cast(T2, maxvalue * v * (1 - s));
175 const T2 q = OFstatic_cast(T2, maxvalue * v * (1 - s * hf));
176 const T2 t = OFstatic_cast(T2, maxvalue * v * (1 - s * (1 - hf)));
210 DCMIMAGE_WARN(
"invalid value for 'hi' while converting HSV to RGB");