App

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
app::TPixel< TPIXEL, TCHANNEL > Class Template Reference

`#include <TPixel.hpp>`

## Public Member Functions
| 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 Public Member Functions
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)

## Public Attributes
TPIXEL | value
| Hodnota pixelu.

## Static Public Attributes
static const TCHANNEL | maxChannel = ~0
| Maximální přípustná hodnota kanálu, uvažuje se bezznaménkový celočíselný typ, tedy ~0.

## Detailed Description

### 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.

## Constructor & Destructor Documentation

template<typename TPIXEL, typename TCHANNEL>

app::TPixel< TPIXEL, TCHANNEL >::TPixel | ( |  | ) |
| inline

defaultní konstruktor, nastaví hodnotu na 0.

Definition at line 37 of file TPixel.hpp.

{ value = 0; }
template<typename TPIXEL, typename TCHANNEL>

app::TPixel< TPIXEL, TCHANNEL >::TPixel | ( | TPIXEL | val | ) |
| inline

Konstruktor, který nastaví požadovanou hodnotu pixelu.

Nastaví požadovanou hodnotu pixelu.

Parameters

  val | Požadovaná hodnota pixelu.

Definition at line 44 of file TPixel.hpp.

{ value = val; }
template<typename TPIXEL, typename TCHANNEL>

app::TPixel< TPIXEL, TCHANNEL >::TPixel | ( | TCHANNEL | ch0,
|  | TCHANNEL | ch1,
|  | TCHANNEL | ch2,
|  | TCHANNEL | ch3
| ) |  |
| inline

Nastaví požadovanou hodnotu pixelu dle zadaných kanálů.

Nastaví požadovanou hodnotu pixelu dle zadaných kanálů.

Parameters

  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.

Definition at line 54 of file TPixel.hpp.

{ setChannels(ch0, ch1, ch2, ch3); }
template<typename TPIXEL, typename TCHANNEL>

app::TPixel< TPIXEL, TCHANNEL >::~TPixel | ( |  | ) |
| inline

Výchozí destruktor.

Definition at line 57 of file TPixel.hpp.

{ }

## Member Function Documentation

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

  index | Index.

Returns
  Hodnota kanálu.

Definition at line 67 of file TPixel.hpp.

{
return *(((TCHANNEL *) &value) + index);
}
template<typename TPIXEL, typename TCHANNEL>

static void app::TPixel< TPIXEL, TCHANNEL >::getNormalized | ( | double & | ch0,
|  | double & | ch1,
|  | double & | ch2,
|  | double & | ch3,
|  | TPIXEL const * | src
| ) |  |
| inlinestatic

Extrahuje z pixelu normalizované hodnoty kanálů

Extrahuje z pixelu normalizované hodnoty kanálů. Předpokládá pixel o 4 kanálech a vrátí normalizované hodnoty na rozsahu 0..1.

Parameters

  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.
  src | Extrahovaný pixel.

Definition at line 108 of file TPixel.hpp.

{
TCHANNEL const * ptr = (TCHANNEL *) src;
ch0 = *ptr / (double) maxChannel; ptr++;
ch1 = *ptr / (double) maxChannel; ptr++;
ch2 = *ptr / (double) maxChannel; ptr++;
ch3 = *ptr / (double) maxChannel;
}
template<typename TPIXEL, typename TCHANNEL>

void app::TPixel< TPIXEL, TCHANNEL >::getNormalized | ( | double & | ch0,
|  | double & | ch1,
|  | double & | ch2,
|  | double & | ch3
| ) |  |
| inline

Extrahuje z pixelu normalizované hodnoty kanálů

Extrahuje z pixelu normalizované hodnoty kanálů. Vrátí normalizované hodnoty na rozsahu 0..1.

Parameters

  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.

Definition at line 124 of file TPixel.hpp.

{
getNormalized(ch0, ch1, ch2, ch3, &value);
}
template<typename TPIXEL, typename TCHANNEL>

void app::TPixel< TPIXEL, TCHANNEL >::HLS_RGB | ( |  | ) |
| inline

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

  h |
  l |
  s |
  r |
  g |
  b |

Definition at line 333 of file TPixel.hpp.

{
double r, g, b, h, l, s, a;
getNormalized(h, l, s, a);
HLS_RGB_normalized(h, l, s, r, g, b);
setNormalized(r, g, b, a);
}
template<typename TPIXEL, typename TCHANNEL>

static void app::TPixel< TPIXEL, TCHANNEL >::HLS_RGB_normalized | ( | double & | h,
|  | double & | l,
|  | double & | s,
|  | double & | r,
|  | double & | g,
|  | double & | b
| ) |  |
| inlinestatic

Definition at line 305 of file TPixel.hpp.

{
int c1; double c2, d, w, x, y, z;
if (l == 0) { r = 0; g = 0; b = 0; return; }
if (l == 1) { r = 1; g = 1; b = 1; return; }
h *= 6; h = (h) - (int) (h / 6);
c1 = h; c2 = h - c1;
d = (l <= 0.5) ? s * l : s * (1 - l);
w = l + d; x = l - d; y = w - (w - x) * c2; z = x + (w - x) * c2;
switch (c1) {
case 0: r = w; g = z; b = x; break;
case 1: r = y; g = w; b = x; break;
case 2: r = x; g = w; b = z; break;
case 3: r = x; g = y; b = w; break;
case 4: r = z; g = x; b = w; break;
case 5: r = w; g = x; b = y; break;
}
}
template<typename TPIXEL, typename TCHANNEL>

void app::TPixel< TPIXEL, TCHANNEL >::HSV_RGB | ( |  | ) |
| inline

Provede převod z HSV do RGB.

Definition at line 251 of file TPixel.hpp.

{
double r, g, b, h, s, v, a;
getNormalized(h, s, v, a);
HSV_RGB_normalized(h, s, v, r, g, b);
setNormalized(r, g, b, 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

  h |
  s |
  v |
  r |
  g |
  b |

Definition at line 235 of file TPixel.hpp.

{
int c1; double c2, x, y, z;
h *= 6; h = h - (int) (h / 6); // h = (6 * h) % 6; // Takto je to z definice, ale C++ prská nad zbytkem.
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>

void app::TPixel< TPIXEL, TCHANNEL >::RGB_HLS | ( |  | ) |
| inline

Převede pixel z RGB do HLS.

Definition at line 298 of file TPixel.hpp.

{
double r, g, b, h, s, v, a;
getNormalized(r, g, b, a);
RGB_HLS_normalized(r, g, b, h, s, v);
setNormalized(h, s, v, a);
}
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

  r |
  g |
  b |
  h |
  l |
  s |

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>

void app::TPixel< TPIXEL, TCHANNEL >::RGB_HSV | ( |  | ) |
| inline

Převede pixel z RGB do HSV.

Definition at line 218 of file TPixel.hpp.

{
double r, g, b, h, s, v, a;
getNormalized(r, g, b, a);
RGB_HSV_normalized(r, g, b, h, s, v);
setNormalized(h, s, v, a);
}
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

  r |
  g |
  b |
  h |
  s |
  v |

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; // s = (cHigh > 0) ? (cRng / cHigh) : 0; // S // staré z PoDIP, EasyRGB.com to dělá takto...
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; // EasyRGB to dělá trochu jinak, ale má 2 ify...
}
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;
}
template<typename TPIXEL, typename TCHANNEL>

void app::TPixel< TPIXEL, TCHANNEL >::setChannels | ( | TCHANNEL | ch0,
|  | TCHANNEL | ch1,
|  | TCHANNEL | ch2,
|  | TCHANNEL | ch3
| ) |  |
| inline

Nastaví hodnotu dle zadaných hodnot kanálů

Nastaví hodnotu dle zadaných hodnot kanálů

Parameters

  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.

Definition at line 91 of file TPixel.hpp.

{
TCHANNEL * ptr = (TCHANNEL *) &value;
*ptr = ch0; ptr++;
*ptr = ch1; ptr++;
*ptr = ch2; ptr++;
*ptr = ch3;
}
template<typename TPIXEL, typename TCHANNEL>

static void app::TPixel< TPIXEL, TCHANNEL >::setNormalized | ( | TPIXEL * | dst,
|  | const double & | ch0,
|  | const double & | ch1,
|  | const double & | ch2,
|  | const double & | ch3
| ) |  |
| inlinestatic

Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů.

Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů. Předpokládá 4 kanálový pixel a hodnoty 0..1 pro kanály.

Parameters

  dst | Cílový pixel.
  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.

Definition at line 150 of file TPixel.hpp.

{
TCHANNEL * ptr = (TCHANNEL *) dst;
*ptr = ch0 * maxChannel + 0.5; ptr++;
*ptr = ch1 * maxChannel + 0.5; ptr++;
*ptr = ch2 * maxChannel + 0.5; ptr++;
*ptr = ch3 * maxChannel + 0.5;
}
template<typename TPIXEL, typename TCHANNEL>

void app::TPixel< TPIXEL, TCHANNEL >::setNormalized | ( | const double & | ch0,
|  | const double & | ch1,
|  | const double & | ch2,
|  | const double & | ch3
| ) |  |
| inline

Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů.

Nastaví hodnotu pixelu na základě normalizovaných hodnot kanálů. Předpokládá hodnoty 0..1 pro kanály.

Parameters

  ch0 | Kanál 0.
  ch1 | Kanál 1.
  ch2 | Kanál 2.
  ch3 | Kanál 3.

Definition at line 166 of file TPixel.hpp.

{
setNormalized(&value, ch0, ch1, ch2, ch3);
}

## Member Data Documentation

template<typename TPIXEL, typename TCHANNEL>

const TCHANNEL TPixel< TPIXEL, TCHANNEL >::maxChannel = ~0
| static

Maximální přípustná hodnota kanálu, uvažuje se bezznaménkový celočíselný typ, tedy ~0.

Definition at line 31 of file TPixel.hpp.

template<typename TPIXEL, typename TCHANNEL>

TPIXEL app::TPixel< TPIXEL, TCHANNEL >::value

Hodnota pixelu.

Definition at line 32 of file TPixel.hpp.

The documentation for this class was generated from the following file:

- /home/xxx/eclipse_workspaces/app/appcore/jni/app/bitmaps/TPixel.hpp