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

Třída pro počítání histogramů. More...

#include <THistogram.hpp>

Public Member Functions

 THistogram (const TBitmap< TPIXEL, TCHANNEL > &bitmap)
 Defaultní konstruktor.
 
unsigned * getChannel (unsigned index)
 Vrátí ukazatel na pole s histogramem o daném indexu.
 
virtual ~THistogram ()
 Destruktor.
 

Static Public Attributes

static const TCHANNEL maxVal = ~0
 Maximální hodnota kanálu.
 
static const unsigned valsCount = 128
 Počet sloupců histogramu.
 
static const unsigned factor = (maxVal + 1) / valsCount
 Přepočtová konstanta pro transformaci potu hodnot kanálu na počet sloupců histogramu.
 
static const unsigned chCount = sizeof(TPIXEL) / sizeof(TCHANNEL)
 Počet kanálů bitmapy.
 

Protected Member Functions

virtual int calculate_4ch (const TBitmap< TPIXEL, TCHANNEL > &bitmap)
 Provede výpočet histogramu pro danou 4kanálovou bitmapu.
 
virtual int calculate_1ch (const TBitmap< TPIXEL, TCHANNEL > &bitmap)
 Provede výpočet histogramu pro danou 1kanálovou bitmapu.
 

Protected Attributes

unsigned * data [5]
 Součty jednotlivých kanálů.
 
int calcErr
 Kód chyby, který vrátil výpočet hostogramu.
 
unsigned maxIndex
 Maximální index, který lze brát. Pro jednokanálovou bitmapu 0, pro 4 kanálovou 4.
 

Detailed Description

template<typename TPIXEL, typename TCHANNEL>
class app::THistogram< TPIXEL, TCHANNEL >

Třída pro počítání histogramů.

Třída zapouzdřuje histogram.

Definition at line 30 of file THistogram.hpp.

Constructor & Destructor Documentation

template<typename TPIXEL , typename TCHANNEL >
app::THistogram< TPIXEL, TCHANNEL >::THistogram ( const TBitmap< TPIXEL, TCHANNEL > &  bitmap)
inline

Defaultní konstruktor.

Defaultní konstruktor, provede rovnou výpočet histogramu.

Parameters
bitmapBitmapa, pro kterou se má histogram spočítat.

Definition at line 73 of file THistogram.hpp.

{
switch (chCount) {
case 1:
data[0] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
data[1] = NULL;
data[2] = NULL;
data[3] = NULL;
data[4] = NULL;
maxIndex = 0;
break;
case 4:
data[0] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
data[1] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
data[2] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
data[3] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
data[4] = (unsigned *) malloc((unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
maxIndex = 4;
break;
default:
break;
}
}
template<typename TPIXEL , typename TCHANNEL >
THistogram< TPIXEL, TCHANNEL >::~THistogram ( )
virtual

Destruktor.

Definition at line 14 of file THistogram.cpp.

{
int i = 0;
while (i < 5) {
if (data[i] != NULL) {
free(data[i]);
}
i++;
}
}

Member Function Documentation

template<typename TPIXEL , typename TCHANNEL >
int THistogram< TPIXEL, TCHANNEL >::calculate_1ch ( const TBitmap< TPIXEL, TCHANNEL > &  bitmap)
protectedvirtual

Provede výpočet histogramu pro danou 1kanálovou bitmapu.

Provede výpočet histogramu pro danou 1kanálovou bitmapu.

Parameters
bitmapBitmapa
Returns
V případě úspěchu 0, jinak kód cyhby.

Definition at line 50 of file THistogram.cpp.

{
if (chCount != 1) { return 1; }
if (data[0] == NULL) { return 2; }
memset(data[0], 0, (unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
TCHANNEL * ptr0 = (TCHANNEL *) bitmap.getData();
if (ptr0 == NULL) { return 3; }
TCHANNEL * ptr0End = (TCHANNEL *) (bitmap.getData() + bitmap.getWidth() * bitmap.getHeight());
while (ptr0 < ptr0End) {
data[0][*ptr0 / factor]++; ptr0++;
}
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
int THistogram< TPIXEL, TCHANNEL >::calculate_4ch ( const TBitmap< TPIXEL, TCHANNEL > &  bitmap)
protectedvirtual

Provede výpočet histogramu pro danou 4kanálovou bitmapu.

Provede výpočet histogramu pro danou 4kanálovou bitmapu.

Parameters
bitmapBitmapa
Returns
V případě úspěchu 0, jinak kód cyhby.

Definition at line 25 of file THistogram.cpp.

{
if (chCount != 4) { return 1; }
int i = 0;
while (i < 5) {
if (data[i] == NULL) { return 2; }
memset(data[i], 0, (unsigned long int)(valsCount * sizeof(unsigned))); // ANDROID_SPECIFIC přetypování v malloc
i++;
}
TCHANNEL * ptr0 = (TCHANNEL *) bitmap.getData();
if (ptr0 == NULL) { return 3; }
TCHANNEL * ptr1 = ptr0 + 1;
TCHANNEL * ptr2 = ptr1 + 1;
TCHANNEL * ptr3 = ptr2 + 1;
TCHANNEL * ptr0End = (TCHANNEL *) (bitmap.getData() + bitmap.getWidth() * bitmap.getHeight());
while (ptr0 < ptr0End) {
data[0][(*ptr0 + *ptr1 + *ptr2) / (3 * factor)]++;
data[1][*ptr0 / factor]++; ptr0 += 4;
data[2][*ptr1 / factor]++; ptr1 += 4;
data[3][*ptr2 / factor]++; ptr2 += 4;
data[4][*ptr3 / factor]++; ptr3 += 4;
}
return 0;
}
template<typename TPIXEL , typename TCHANNEL >
unsigned* app::THistogram< TPIXEL, TCHANNEL >::getChannel ( unsigned  index)
inline

Vrátí ukazatel na pole s histogramem o daném indexu.

Vrátí ukazatel na pole s histogramem o daném indexu, pokud nastal problém při výpočtu histogramu, nebo je požadován vyšší index, vrátí NULL.

Parameters
indexIndex histogramu.
Returns
Ukazatel na hodnoty nebo NULL.

Definition at line 104 of file THistogram.hpp.

{
if (calcErr || index > maxIndex) { return NULL; }
return data[index];
}

Member Data Documentation

template<typename TPIXEL , typename TCHANNEL >
int app::THistogram< TPIXEL, TCHANNEL >::calcErr
protected

Kód chyby, který vrátil výpočet hostogramu.

Definition at line 42 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
const unsigned THistogram< TPIXEL, TCHANNEL >::chCount = sizeof(TPIXEL) / sizeof(TCHANNEL)
static

Počet kanálů bitmapy.

Definition at line 66 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
unsigned* app::THistogram< TPIXEL, TCHANNEL >::data[5]
protected

Součty jednotlivých kanálů.

Součty jednotlivých kanálů. Jednotlivé pozice jsou obsazeny takto:

  • 0 - (r + g + b) / 3 nebo kanál jednokanálové bitmapy.
  • 1 - r
  • 2 - g
  • 3 - b
  • 4 - a

Definition at line 41 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
const unsigned THistogram< TPIXEL, TCHANNEL >::factor = (maxVal + 1) / valsCount
static

Přepočtová konstanta pro transformaci potu hodnot kanálu na počet sloupců histogramu.

Definition at line 65 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
unsigned app::THistogram< TPIXEL, TCHANNEL >::maxIndex
protected

Maximální index, který lze brát. Pro jednokanálovou bitmapu 0, pro 4 kanálovou 4.

Definition at line 43 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
const TCHANNEL THistogram< TPIXEL, TCHANNEL >::maxVal = ~0
static

Maximální hodnota kanálu.

Definition at line 63 of file THistogram.hpp.

template<typename TPIXEL , typename TCHANNEL >
const unsigned THistogram< TPIXEL, TCHANNEL >::valsCount = 128
static

Počet sloupců histogramu.

Definition at line 64 of file THistogram.hpp.


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