11 #include <QCoreApplication>
28 for (
unsigned int i = 255; i > 0; i--)
55 int bufsize = (
m_size.height() + 2) * (
m_size.width() + 2);
57 m_rgbBuf =
new unsigned char[bufsize];
83 uchar *iptr = ptr + bpl + 1;
88 uint sum = (iptr[-bpl] + iptr[-1] + iptr[1] + iptr[bpl]) >> 2;
99 uint red = color / 0x10000;
100 uint green = (color % 0x10000) / 0x100;
101 uint blue = color % 0x100;
103 for (
uint i = 255; i > 0; i--)
105 uint r = (
unsigned int)((100 *
static_cast<double>(red) / 255)
109 uint g = (
unsigned int)((100 *
static_cast<double>(green) / 255)
113 uint b = (
unsigned int)((100 *
static_cast<double>(blue) / 255)
118 m_image->setColor(i, qRgba(r, g, b, 255));
133 double i = (double)x / ((
double)
m_phongRad) - 1;
134 double i2 = (double)y / ((
double)
m_phongRad) - 1;
137 i = 1 - pow(i*i2,.75) - i*i - i2*i2;
150 auto uci = (
unsigned char)i;
155 m_phongDat[(PHONGRES-1)-y][(PHONGRES-1)-x] = uci;
162 m_phongDat[(PHONGRES-1)-y][(PHONGRES-1)-x] = 0;
168 #define M_PI_F static_cast<float>(M_PI)
175 int wd2 = (int)(
WIDTH / 2);
176 int hd2 = (int)(
HEIGHT / 2);
180 *angle = (int)(asinf((
float)(y-(
HEIGHT/2.0F))/(float)*yo)/(
M_PI_F/180.0F));
181 *xo = (int)((x-(
WIDTH/2.0F))/cosf(*angle*(
M_PI/180.0)));
183 if (*xo >= -wd2 && *xo <= wd2) {
190 *angle = (int)(asinf((
float)(y-(
HEIGHT/2.0F))/(float)*yo)/(
M_PI_F/180.0F));
191 *xo = (int)((x-(
WIDTH/2.0F))/cosf(*angle*(
M_PI/180.0)));
193 if (*xo >= -wd2 && *xo <= wd2) {
201 *angle = (int)(acosf((
float)(x-(
WIDTH/2.0F))/(float)*xo)/(
M_PI_F/180.0F));
202 *yo = (int)((y-(
HEIGHT/2.0F))/sinf(*angle*(
M_PI/180.0)));
204 if (*yo >= -hd2 && *yo <= hd2) {
211 *angle = (int)(acosf((
float)(x-(
WIDTH/2.0F))/(float)*xo)/(
M_PI_F/180.0F));
212 *yo = (int)((y-(
HEIGHT/2.0F))/sinf(*angle*(
M_PI/180.0)));
224 uchar *
p = buffer + ((y1 + 1) *
m_bpl) + x + 1;
225 for (
int y = y1; y <= y2; y++)
233 uchar *
p = buffer + ((y2 + 1) *
m_bpl) + x + 1;
234 for (
int y = y2; y <= y1; y++)
241 buffer[((y1 + 1) *
m_bpl) + x + 1] = 0xff;
250 int prev_y =
m_bpl + 1;
252 unsigned char *outputbuf =
m_image->bits();
254 for (dy = (-ly) + (PHONGRES / 2), j = 0; j <
m_height; j++, dy++,
259 for (dx = (-lx) + (PHONGRES / 2), i = 0; i <
m_width; i++, dx++,
265 if (yp < 0 || yp >= (
int)PHONGRES ||
266 xp < 0 || xp >= (int)PHONGRES)
268 outputbuf[out_y] = 0;
279 double r = (double)(color>>16) / 255.0;
280 double g = (double)((color>>8)&0xff) / 255.0;
281 double b = (double)(color&0xff) / 255.0;
284 if (g > max) max = g;
285 if (b > max) max = b;
288 if (g < min) min = g;
289 if (b < min) min = b;
293 if (max != 0.0) *s = (max - min) / max;
296 if (*s == 0.0) *h = 0.0;
299 double delta = max - min;
301 if (r == max) *h = (g - b) / delta;
302 else if (g == max) *h = 2.0 + (b - r) / delta;
303 else if (b == max) *h = 4.0 + (r - g) / delta;
307 if (*h < 0.0) *h = *h + 360;
326 if (h == 360.0) h = 0.0;
330 double w = v * (1.0 - s);
331 double q = v * (1.0 - (s * f));
332 double t = v * (1.0 - (s * (1.0 - f)));
336 case 0: r = v; g =
t; b = w;
break;
337 case 1: r = q; g = v; b = w;
break;
338 case 2: r = w; g = v; b =
t;
break;
339 case 3: r = w; g = q; b = v;
break;
340 case 4: r =
t; g = w; b = v;
break;
342 default: r = v; g = w; b = q;
break;
346 *color = ((
unsigned int)(r*255)<<16) | ((
unsigned int)(g*255)<<8) | ((
unsigned int)(b*255));
367 int y = (i * numSamps) / (
m_width - 1);
389 LOG(VB_GENERAL, LOG_ERR,
"BumpScope::draw: Bad image");
494 if (m_is <= 0 || m_is >= 0.5)
532 const QString &
name(
void)
const override
534 static QString s_name = QCoreApplication::translate(
"Visualizers",