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];
81 uchar *iptr = ptr + bpl + 1;
86 uint sum = (iptr[-bpl] + iptr[-1] + iptr[1] + iptr[bpl]) >> 2;
97 uint red = color / 0x10000;
98 uint green = (color % 0x10000) / 0x100;
99 uint blue = color % 0x100;
101 for (
uint i = 255; i > 0; i--)
103 uint r = (
unsigned int)((100 *
static_cast<double>(red) / 255)
107 uint g = (
unsigned int)((100 *
static_cast<double>(green) / 255)
111 uint b = (
unsigned int)((100 *
static_cast<double>(blue) / 255)
116 m_image->setColor(i, qRgba(r, g, b, 255));
131 double i = (double)x / ((
double)
m_phongRad) - 1;
132 double i2 = (double)y / ((
double)
m_phongRad) - 1;
135 i = 1 - pow(i*i2,.75) - i*i - i2*i2;
148 auto uci = (
unsigned char)i;
153 m_phongDat[(PHONGRES-1)-y][(PHONGRES-1)-x] = uci;
160 m_phongDat[(PHONGRES-1)-y][(PHONGRES-1)-x] = 0;
166 #define M_PI_F static_cast<float>(M_PI)
173 int wd2 = (int)(
WIDTH / 2);
174 int hd2 = (int)(
HEIGHT / 2);
178 *angle = (int)(asinf((
float)(y-(
HEIGHT/2.0F))/(float)*yo)/(
M_PI_F/180.0F));
179 *xo = (int)((x-(
WIDTH/2.0F))/cosf(*angle*(
M_PI/180.0)));
181 if (*xo >= -wd2 && *xo <= wd2) {
188 *angle = (int)(asinf((
float)(y-(
HEIGHT/2.0F))/(float)*yo)/(
M_PI_F/180.0F));
189 *xo = (int)((x-(
WIDTH/2.0F))/cosf(*angle*(
M_PI/180.0)));
191 if (*xo >= -wd2 && *xo <= wd2) {
199 *angle = (int)(acosf((
float)(x-(
WIDTH/2.0F))/(float)*xo)/(
M_PI_F/180.0F));
200 *yo = (int)((y-(
HEIGHT/2.0F))/sinf(*angle*(
M_PI/180.0)));
202 if (*yo >= -hd2 && *yo <= hd2) {
209 *angle = (int)(acosf((
float)(x-(
WIDTH/2.0F))/(float)*xo)/(
M_PI_F/180.0F));
210 *yo = (int)((y-(
HEIGHT/2.0F))/sinf(*angle*(
M_PI/180.0)));
222 uchar *
p = buffer + ((y1 + 1) *
m_bpl) + x + 1;
223 for (
int y = y1; y <= y2; y++)
231 uchar *
p = buffer + ((y2 + 1) *
m_bpl) + x + 1;
232 for (
int y = y2; y <= y1; y++)
239 buffer[((y1 + 1) *
m_bpl) + x + 1] = 0xff;
248 int prev_y =
m_bpl + 1;
250 unsigned char *outputbuf =
m_image->bits();
252 for (dy = (-ly) + (PHONGRES / 2), j = 0; j <
m_height; j++, dy++,
257 for (dx = (-lx) + (PHONGRES / 2), i = 0; i <
m_width; i++, dx++,
263 if (yp < 0 || yp >= (
int)PHONGRES ||
264 xp < 0 || xp >= (int)PHONGRES)
266 outputbuf[out_y] = 0;
277 double r = (double)(color>>16) / 255.0;
278 double g = (double)((color>>8)&0xff) / 255.0;
279 double b = (double)(color&0xff) / 255.0;
282 if (g > max) max = g;
283 if (b > max) max = b;
286 if (g < min) min = g;
287 if (b < min) min = b;
291 if (max != 0.0) *s = (max - min) / max;
294 if (*s == 0.0) *h = 0.0;
297 double delta = max - min;
299 if (r == max) *h = (g - b) / delta;
300 else if (g == max) *h = 2.0 + (b - r) / delta;
301 else if (b == max) *h = 4.0 + (r - g) / delta;
305 if (*h < 0.0) *h = *h + 360;
324 if (h == 360.0) h = 0.0;
328 double w = v * (1.0 - s);
329 double q = v * (1.0 - (s * f));
330 double t = v * (1.0 - (s * (1.0 - f)));
334 case 0: r = v; g =
t; b = w;
break;
335 case 1: r = q; g = v; b = w;
break;
336 case 2: r = w; g = v; b =
t;
break;
337 case 3: r = w; g = q; b = v;
break;
338 case 4: r =
t; g = w; b = v;
break;
340 default: r = v; g = w; b = q;
break;
344 *color = ((
unsigned int)(r*255)<<16) | ((
unsigned int)(g*255)<<8) | ((
unsigned int)(b*255));
365 int y = (i * numSamps) / (
m_width - 1);
387 LOG(VB_GENERAL, LOG_ERR,
"BumpScope::draw: Bad image");
490 if (m_is <= 0 || m_is >= 0.5)
528 const QString &
name(
void)
const override
530 static QString s_name = QCoreApplication::translate(
"Visualizers",
542 [[maybe_unused]]
const QString &pluginName)
const override