App
Public Member Functions | Static Public Member Functions | Static Protected Member Functions | List of all members
app::ColorConvertor Class Reference

Zapouzdřuje převody mezi jednotlivými barevnými prostory pro 4 kanálové bitmapy. More...

#include <ColorConvertor.hpp>

Public Member Functions

 ColorConvertor ()
 Výchozí konstruktor.
 
virtual ~ColorConvertor ()
 Výchozí destruktor;.
 

Static Public Member Functions

static int convert (rgba_8bit_bitmap &bitmap, ColorMode mode)
 Převede bitmapu do cílového barevného prostoru.
 

Static Protected Member Functions

template<typename TPIXEL , typename TCHANNEL >
static int RGB_HSV (TBitmap< TPIXEL, TCHANNEL > &src)
 Převádí bitmapu z RGB do HSV.
 
template<typename TPIXEL , typename TCHANNEL >
static int HSV_RGB (TBitmap< TPIXEL, TCHANNEL > &src)
 Převádí bitmapu z HSV do RGB.
 
template<typename TPIXEL , typename TCHANNEL >
static int RGB_HLS (TBitmap< TPIXEL, TCHANNEL > &src)
 Převádí bitmapu z RGB do HLS.
 
template<typename TPIXEL , typename TCHANNEL >
static int HLS_RGB (TBitmap< TPIXEL, TCHANNEL > &src)
 Převádí bitmapu z HLS do RGB.
 

Detailed Description

Zapouzdřuje převody mezi jednotlivými barevnými prostory pro 4 kanálové bitmapy.

Zapouzdřuje převody bitmap mezi jednotlivými barevnými prostory pro 4 kanálové bitmapy.

Definition at line 41 of file ColorConvertor.hpp.

Constructor & Destructor Documentation

app::ColorConvertor::ColorConvertor ( )

Výchozí konstruktor.

app::ColorConvertor::~ColorConvertor ( )
virtual

Výchozí destruktor;.

Definition at line 10 of file ColorConvertor.cpp.

{}

Member Function Documentation

int app::ColorConvertor::convert ( rgba_8bit_bitmap bitmap,
ColorMode  mode 
)
static

Převede bitmapu do cílového barevného prostoru.

Převede bitmapu do cílového barevného prostoru. Pokud neexistuje přímý převod, provede se jako mezikrok převod do RGB

Parameters
bitmapPřeváděná bitmapa.
modeCílový barevný prostor.
Returns
Vrací 0 při úspěchu, jinak kód chyby.

Definition at line 12 of file ColorConvertor.cpp.

{
ColorMode srcMode = bitmap.getType();
if (srcMode == mode) { return 0; }
int err = 0;
if (srcMode != RGBA && mode != RGBA) {
err = convert(bitmap, RGBA);
if (err) { return 100 + err; }
err = convert(bitmap, mode);
if (err) { return 200 + err; }
return 0;
} else if (srcMode == RGBA) {
switch (mode) {
case HSVA: return RGB_HSV<px_4x8bit, px_1x8bit>(bitmap); break;
case HLSA: return RGB_HLS<px_4x8bit, px_1x8bit>(bitmap); break;
default: return 30; break;
}
} else {
switch (srcMode) {
case HSVA: return HSV_RGB<px_4x8bit, px_1x8bit>(bitmap); break;
case HLSA: return HLS_RGB<px_4x8bit, px_1x8bit>(bitmap); break;
default: return 40; break;
}
}
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
int app::ColorConvertor::HLS_RGB ( TBitmap< TPIXEL, TCHANNEL > &  src)
staticprotected

Převádí bitmapu z HLS do RGB.

Převádí bitmapu z HLS do RGB voláním odpovídajících metod TPixelu.

Parameters
srcPřeváděná bitmapa.
Returns
V případě úspěchu vrací 0, jinak kód chyby.

Definition at line 71 of file ColorConvertor.cpp.

{
if (src.getType() != HLSA) { return 1; }
TPIXEL * ptr = src.getData(); if (ptr == NULL) { return 2; } // Nemelo by nastat, ale pro jistotu.
TPIXEL * ptrEnd = ptr + src.getWidth() * src.getHeight();
while (ptr < ptrEnd) {
px.value = *ptr;
px.HLS_RGB();
*ptr = px.value;
ptr++;
}
src.setType(RGBA);
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
int app::ColorConvertor::HSV_RGB ( TBitmap< TPIXEL, TCHANNEL > &  src)
staticprotected

Převádí bitmapu z HSV do RGB.

Převádí bitmapu z HSV do RGB voláním odpovídajících metod TPixelu.

Parameters
srcPřeváděná bitmapa.
Returns
V případě úspěchu vrací 0, jinak kód chyby.

Definition at line 55 of file ColorConvertor.cpp.

{
if (src.getType() != HSVA) { return 1; }
TPIXEL * ptr = src.getData(); if (ptr == NULL) { return 2; } // Nemelo by nastat, ale pro jistotu.
TPIXEL * ptrEnd = ptr + src.getWidth() * src.getHeight();
while (ptr < ptrEnd) {
px.value = *ptr;
px.HSV_RGB();
*ptr = px.value;
ptr++;
}
src.setType(RGBA);
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
int app::ColorConvertor::RGB_HLS ( TBitmap< TPIXEL, TCHANNEL > &  src)
staticprotected

Převádí bitmapu z RGB do HLS.

Převádí bitmapu z RGB do HLS voláním odpovídajících metod TPixelu.

Parameters
srcPřeváděná bitmapa.
Returns
V případě úspěchu vrací 0, jinak kód chyby.

Definition at line 87 of file ColorConvertor.cpp.

{
if (src.getType() != RGBA) { return 1; }
TPIXEL * ptr = src.getData(); if (ptr == NULL) { return 2; } // Nemelo by nastat, ale pro jistotu.
TPIXEL * ptrEnd = ptr + src.getWidth() * src.getHeight();
while (ptr < ptrEnd) {
px.value = *ptr;
px.RGB_HLS();
*ptr = px.value;
ptr++;
}
src.setType(HLSA);
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
int app::ColorConvertor::RGB_HSV ( TBitmap< TPIXEL, TCHANNEL > &  src)
staticprotected

Převádí bitmapu z RGB do HSV.

Převádí bitmapu z RGB do HSV voláním odpovídajících metod TPixelu.

Parameters
srcPřeváděná bitmapa.
Returns
V případě úspěchu vrací 0, jinak kód chyby.

Definition at line 39 of file ColorConvertor.cpp.

{
if (src.getType() != RGBA) { return 1; }
TPIXEL * ptr = src.getData(); if (ptr == NULL) { return 2; } // Nemelo by nastat, ale pro jistotu.
TPIXEL * ptrEnd = ptr + src.getWidth() * src.getHeight();
while (ptr < ptrEnd) {
px.value = *ptr;
px.RGB_HSV();
*ptr = px.value;
ptr++;
}
src.setType(HSVA);
return 0;
}

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