|
| TPixel () |
| defaultní konstruktor, nastaví hodnotu na 0.
|
|
| TPixel (TPIXEL val) |
| Konstruktor, který nastaví požadovanou hodnotu pixelu.
|
|
| TPixel (TCHANNEL ch0, TCHANNEL ch1, TCHANNEL ch2, TCHANNEL ch3) |
| Nastaví požadovanou hodnotu pixelu dle zadaných kanálů.
|
|
| ~TPixel () |
| Výchozí destruktor.
|
|
TCHANNEL | getChannel (unsigned index) |
| Vrátí hodnotu kanálu s daným indexem.
|
|
void | setChannel (unsigned index, TCHANNEL newVal) |
| Nastaví hodnotu kanálu s daným indexem.
|
|
void | setChannels (TCHANNEL ch0, TCHANNEL ch1, TCHANNEL ch2, TCHANNEL ch3) |
| Nastaví hodnotu dle zadaných hodnot kanálů
|
|
void | getNormalized (double &ch0, double &ch1, double &ch2, double &ch3) |
| Extrahuje z pixelu normalizované hodnoty kanálů
|
|
void | setNormalized (const double &ch0, const double &ch1, const double &ch2, const double &ch3) |
| Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů.
|
|
void | RGB_HSV () |
| Převede pixel z RGB do HSV.
|
|
void | HSV_RGB () |
| Provede převod z HSV do RGB.
|
|
void | RGB_HLS () |
| Převede pixel z RGB do HLS.
|
|
void | HLS_RGB () |
| Provede převod z HLS do RGB.
|
|
|
static void | getNormalized (double &ch0, double &ch1, double &ch2, double &ch3, TPIXEL const *src) |
| Extrahuje z pixelu normalizované hodnoty kanálů
|
|
static void | setNormalized (TPIXEL *dst, const double &ch0, const double &ch1, const double &ch2, const double &ch3) |
| Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů.
|
|
static void | RGB_HSV_normalized (double &r, double &g, double &b, double &h, double &s, double &v) |
| Provede převod z RGB do HSV.
|
|
static void | HSV_RGB_normalized (double &h, double &s, double &v, double &r, double &g, double &b) |
| Provede převod z HSV do RGB.
|
|
static void | RGB_HLS_normalized (double &r, double &g, double &b, double &h, double &l, double &s) |
| Provede převod z RGB do HLS.
|
|
static void | HLS_RGB_normalized (double &h, double &l, double &s, double &r, double &g, double &b) |
|
template<typename TPIXEL, typename TCHANNEL>
class app::TPixel< TPIXEL, TCHANNEL >
Třída nahrazuje ARGB_Pixel, potenciálně velmi nebezpečná, protože nekontroluje meze a implicitně předpokládá 4kanálový pixel s tím, že alpha je uložena v posledním kanále.
Implementuje převodové vztahy mezi jednotlivými barevnými prostory.
- Template Parameters
-
TPIXEL | - celočíselný typ reprezentující celý pixel - přípustné je zatím pouze px_4x8bit |
TCHANNEL | - celočíselný typ reprezentující jeden kanál - přípustné je zatím pouze px_1x8bit |
Definition at line 29 of file TPixel.hpp.
template<typename TPIXEL, typename TCHANNEL>
TCHANNEL app::TPixel< TPIXEL, TCHANNEL >::getChannel |
( |
unsigned |
index | ) |
|
|
inline |
Vrátí hodnotu kanálu s daným indexem.
Vrátí hodnotu kanálu s daným indexem. Přípustný je index 0 až 3, meze se nekontrolují.
- Parameters
-
- Returns
- Hodnota kanálu.
Definition at line 67 of file TPixel.hpp.
{
return *(((TCHANNEL *) &
value) + index);
}
template<typename TPIXEL, typename TCHANNEL>
Provede převod z HLS do RGB.
Provede převod z HLS do RGB, hodnoty h, l, s budou při převodu upraveny - používají se jako pomocné proměnné!
- Parameters
-
Definition at line 333 of file TPixel.hpp.
{
double r, g, b, h, l, s, a;
}
template<typename TPIXEL, typename TCHANNEL>
static void app::TPixel< TPIXEL, TCHANNEL >::HSV_RGB_normalized |
( |
double & |
h, |
|
|
double & |
s, |
|
|
double & |
v, |
|
|
double & |
r, |
|
|
double & |
g, |
|
|
double & |
b |
|
) |
| |
|
inlinestatic |
Provede převod z HSV do RGB.
Provede převod z HSV do RGB, hodnoty h, s, v budou při převodu upraveny - používají se jako pomocné proměnné!
- Parameters
-
Definition at line 235 of file TPixel.hpp.
{
int c1; double c2, x, y, z;
h *= 6; h = h - (int) (h / 6);
c1 = h; c2 = h - c1;
x = (1 - s) * v; y = (1 - (s * c2)) * v; z = (1 - s * (1 - c2)) * v;
switch (c1) {
case 0: r = v; g = z; b = x; break;
case 1: r = y; g = v; b = x; break;
case 2: r = x; g = v; b = z; break;
case 3: r = x; g = y; b = v; break;
case 4: r = z; g = x; b = v; break;
case 5: r = v; g = x; b = y; break;
}
}
template<typename TPIXEL, typename TCHANNEL>
static void app::TPixel< TPIXEL, TCHANNEL >::RGB_HLS_normalized |
( |
double & |
r, |
|
|
double & |
g, |
|
|
double & |
b, |
|
|
double & |
h, |
|
|
double & |
l, |
|
|
double & |
s |
|
) |
| |
|
inlinestatic |
Provede převod z RGB do HLS.
Provede převod z RGB do HLS, hodnoty r, g, b budou při převodu upraveny - používají se jako pomocné proměnné!
- Parameters
-
Definition at line 270 of file TPixel.hpp.
{
double cHigh, cLow, cRng; int max;
if (r > g) {
if (r > b) { cHigh = r; max = 1; } else { cHigh = b; max = 3; }
cLow = (g < b) ? g : b;
} else { if (g > b) { cHigh = g; max = 2; } else { cHigh = b; max = 3; }
cLow = (r < b) ? r : b;
}
cRng = cHigh - cLow;
l = (cHigh + cLow) / 2;
if ((l == 0) || (l == 1)) {
s = 0;
} else if (l <= 0.5) {
s = 0.5 * cRng / l;
} else {
s = 0.5 * cRng / (1 - l);
}
r = (cHigh - r) / cRng; g = (cHigh - g) / cRng; b = (cHigh - b) / cRng;
switch (max) {
case 1: h = b - g; break;
case 2: h = r - b + 2; break;
case 3: h = g - r + 4; break;
}
h = (h < 0) ? h + 6 : h; h /= 6;
}
template<typename TPIXEL, typename TCHANNEL>
static void app::TPixel< TPIXEL, TCHANNEL >::RGB_HSV_normalized |
( |
double & |
r, |
|
|
double & |
g, |
|
|
double & |
b, |
|
|
double & |
h, |
|
|
double & |
s, |
|
|
double & |
v |
|
) |
| |
|
inlinestatic |
Provede převod z RGB do HSV.
Provede převod z RGB do HSV, hodnoty r, g, b budou při převodu upraveny - používají se jako pomocné proměnné!
- Parameters
-
Definition at line 195 of file TPixel.hpp.
{
double cHigh, cLow, cRng; int max;
if (r > g) {
if (r > b) { cHigh = r; max = 1; } else { cHigh = b; max = 3; }
cLow = (g < b) ? g : b;
} else {
if (g > b) { cHigh = g; max = 2; } else { cHigh = b; max = 3; }
cLow = (r < b) ? r : b;
}
cRng = cHigh - cLow;
v = cHigh;
if (cHigh <= 0) { s = 0; h = 0; return; }
s = cRng / cHigh;
r = (cHigh - r) / cRng; g = (cHigh - g) / cRng; b = (cHigh - b) / cRng;
switch (max) {
case 1: h = b - g; break;
case 2: h = r - b + 2; break;
case 3: h = g - r + 4; break;
}
h = (h < 0) ? h + 6 : h; h /= 6;
}
template<typename TPIXEL, typename TCHANNEL>
void app::TPixel< TPIXEL, TCHANNEL >::setChannel |
( |
unsigned |
index, |
|
|
TCHANNEL |
newVal |
|
) |
| |
|
inline |
Nastaví hodnotu kanálu s daným indexem.
Nastaví hodnotu kanálu s daným indexem. Přípustný je index 0 až 3, meze se nekontrolují.
- Parameters
-
index | Index. |
newVal | Nová hodnota. |
Definition at line 77 of file TPixel.hpp.
{
*(((TCHANNEL *) &
value) + index) = newVal;
}