App

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

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

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

Třída slouží ke generování jednokanálových bitmap pro štětce. More...

`#include <TBrushGenerator.hpp>`

## Public Member Functions
| ~TBrushGenerator ()

## Static Public Member Functions
template<typename TPIXEL , typename TCHANNEL >
static TBitmap< TPIXEL, TCHANNEL > * | createRoundBrush (unsigned size, double hardness)
| Vygeneruje jednokanálovou bitmapu odpovidajícího typu, která odpovídá kulatému štětci o zadané velikosti a tvrdosti.
template<typename TPIXEL , typename TCHANNEL >
static int | createRoundBrushIn (TBitmap< TPIXEL, TCHANNEL > &dst, unsigned size, double hardness)
| Vytvoří štětec uprostřed zadané bitmapy. Kromě obdélníku štětce tato zůstává beze změn.

## Protected Member Functions
| TBrushGenerator ()
| Defaultní konstruktor, třída je pouze statická

## Detailed Description

Třída slouží ke generování jednokanálových bitmap pro štětce.

Definition at line 32 of file TBrushGenerator.hpp.

## Constructor & Destructor Documentation

app::TBrushGenerator::TBrushGenerator | ( |  | ) |
| inlineprotected

Defaultní konstruktor, třída je pouze statická

Definition at line 35 of file TBrushGenerator.hpp.

{}

app::TBrushGenerator::~TBrushGenerator | ( |  | ) |
| inline

Definition at line 39 of file TBrushGenerator.hpp.

{}

## Member Function Documentation

template<typename TPIXEL , typename TCHANNEL >

TBitmap< TPIXEL, TCHANNEL > * app::TBrushGenerator::createRoundBrush | ( | unsigned | size,
|  | double | hardness
| ) |  |
| static

Vygeneruje jednokanálovou bitmapu odpovidajícího typu, která odpovídá kulatému štětci o zadané velikosti a tvrdosti.

Parameters

  size | Velikost štětce - je rovna výšce a šířce bitmapy štětce.
  hardness | Tvrdost v rozsahu 0..1. Určuje v jakém bodě začne štětec lineárně měknout ke kraji.

Returns
  Vrací bitmapu, případně NULL, pokud se ji nepodařilo alokovat či požadovaný typ není jednokanálový.

Definition at line 14 of file TBrushGenerator.cpp.

{
TBitmap<TPIXEL, TCHANNEL> * retVal = new TBitmap<TPIXEL, TCHANNEL>(size, size, MONO, 0);
if (retVal == NULL) {
return NULL;
}
if (retVal->getData() == NULL) {
delete retVal;
return NULL;
}
if (retVal->chCount != 1) {
delete retVal;
return NULL;
}
TPIXEL maxVal = retVal->maxVal;
if (size == 1) {
retVal->fill(retVal->getRect(), &maxVal);
return retVal;
}
double r = size / 2.0;
double rFull = r * hardness;
double r2 = r * r;
double rFull2 = rFull * rFull;
double factor = maxVal / (r - rFull);
double minX = -r + 0.5; // Ptz zjistujeme, jestli stred lezi v dane kruznici
double minY = -r + 0.5;
double x = minX;
double y = minY;
PointerArea area = retVal->getPointerArea();
TPIXEL * ptr = (TPIXEL *) area.getAreaBgn();
TPIXEL * ptrRowEnd = (TPIXEL *) area.getAreaRowEnd();
TPIXEL * ptrEnd = (TPIXEL *) area.getAreaEnd();
unsigned ptrWidth = area.getOrigWidth();
while (ptr < ptrEnd) {
x = minX;
while(ptr < ptrRowEnd) {
double rr2 = x * x + y * y;
if (rr2 < rFull2) {
*ptr = maxVal;
} else if (rr2 < r2) {
*ptr = factor * (r - sqrt(rr2)) + 0.5;
} else {
*ptr = 0;
}
ptr++;
x += 1;
}
y += 1;
ptrRowEnd += ptrWidth;
}
return retVal;
}
template<typename TPIXEL , typename TCHANNEL >

int app::TBrushGenerator::createRoundBrushIn | ( | TBitmap< TPIXEL, TCHANNEL > & | dst,
|  | unsigned | size,
|  | double | hardness
| ) |  |
| static

Vytvoří štětec uprostřed zadané bitmapy. Kromě obdélníku štětce tato zůstává beze změn.

Vytvoří štětec uprostřed zadané bitmapy. Kromě obdélníku štětce tato zůstává beze změn. Štětec je vytvořen v dočasné bitmapě a poté zkopírován, je zde pro usnadnění volání ze strany Javy.

Současná implementace je značně neefektivnípro velké štětce, díky kopii, Na emulátoru je znatelné pro měkké štětce větší než cca 650.

Parameters

  dst | Cílová bitmapa.
  size | Velikost štětce.
  hardness | Tvrdost štětce.

Returns
  Vrací 0 v případě úspěchu, jinak kód chyby.

Definition at line 69 of file TBrushGenerator.cpp.

{
TBitmap<TPIXEL, TCHANNEL> * tmp = createRoundBrush<TPIXEL, TCHANNEL>(size, hardness);
if (tmp == NULL) {
return 1;
}
// Bez přetypování je pproblém s přetečením proměnných, výsledný Point má pak souřadnice 245xxxxxxxxx velké číslo místo záporného
return tmp->copyTo(dst, tmp->getRect(), Point(((int)dst.getWidth() - (int)tmp->getWidth()) / 2, ((int)dst.getHeight() - (int)tmp->getHeight()) / 2));
}

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

- /home/xxx/eclipse_workspaces/app/appcore/jni/app/generators/TBrushGenerator.hpp
- /home/xxx/eclipse_workspaces/app/appcore/jni/app/generators/TBrushGenerator.cpp