App

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

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

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

Třída zapouzdřuje veškeré funkce pro alpha blending bitmap pomocí statických metod. More...

`#include <Blender.hpp>`

## Public Member Functions
| Blender ()
| Konstruktor, vzhledem k rize statické povaze třídy nadbytečný.
virtual | ~Blender ()
| Virtuální destruktor, nemá opodstatněni, jen ze slušnosti.

## Static Public Member Functions
static int | blendTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_4x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig)
| Prolne bitmapu do cílové.
static int | blendTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_4x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig, double alpha)
| Prolne bitmapu do cílové s dodatečnou průhledností.
static int | blendTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, px_4x8bit *src, Rect dstRect)
static int | blendTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, px_4x8bit *src, Rect dstRect, double alpha)
static int | addTo (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig)
| Přičte bitmapu k cílové bitmapě.
static int | addTo (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig, double alpha)
| Přičte bitmapu k cílové bitmapě s dodatečnou průhledností.
static int | addTo (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig)
| Přičtení jednokanálové bitmapy, analogie k drawTo() přes masku.
static int | addTo (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig, double alpha)
| Přičtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.
static int | removeFrom (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig)
| Odečte bitmapu od cílové bitmapy.
static int | removeFrom (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig, double alpha)
| Odečte bitmapu od cílové bitmapy.
static int | removeFrom (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig)
| Odečtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.
static int | removeFrom (TBitmap< px_1x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig, double alpha)
| Odečtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.
static int | addTo (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig)
| Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové
static int | addTo (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig, double alpha)
| Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové
static int | addTo (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig)
| Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové
static int | addTo (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig, double alpha)
| Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové
static int | removeFrom (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig)
| Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové
static int | removeFrom (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect srcRect, Point srcOrig, double alpha)
| Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové
static int | removeFrom (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig)
| Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové
static int | removeFrom (TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_1x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig, double alpha)
| Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové
static int | drawTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, px_4x8bit *src, Rect mskRect, Point mskOrig)
| Kreslí v daném módu na cílovou bitmapu danou barvou s touto bitmapou jako maskou průhlednosti.
static int | drawTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, px_4x8bit *src, Rect mskRect, Point mskOrig, double alpha)
| Kreslí v daném módu na cílovou bitmapu danou barvou s touto bitmapou jako maskou průhlednosti a dodatečnou alphou.
static int | drawTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_4x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig)
| Kreslí v daném módu data ze zdrojové bitmapy na cílovou bitmapu s touto bitmapou jako maskou průhlednosti.
static int | drawTo (BlendMode mode, TBitmap< px_4x8bit, px_1x8bit > &dst, const TBitmap< px_1x8bit, px_1x8bit > &msk, const TBitmap< px_4x8bit, px_1x8bit > &src, Rect mskRect, Point srcOrig, Point mskOrig, double alpha)
| Kreslí v daném módu data ze zdrojové bitmapy na cílovou bitmapu s touto bitmapou jako maskou průhlednosti, navíc s využitím dodatečné průhlednosti.

## Static Protected Member Functions
static int | blend_add_onech_sd (PARAMS_SD)
| Funkce realizuje přičtení jednokanálové bitmapy ke druhé (mód sd), parametry viz makra.
static int | blend_add_onech_sda (PARAMS_SDA)
| Funkce realizuje přičtení jednokanálové bitmapy ke druhé (mód sda), parametry viz makra.
static int | blend_add_onech_sdm (PARAMS_SDM)
static int | blend_add_onech_sdma (PARAMS_SDMA)
static int | blend_remove_onech_sd (PARAMS_SD)
| Funkce realizuje odečtení jednokanálové bitmapy od druhé (mód sd), parametry viz makra.
static int | blend_remove_onech_sda (PARAMS_SDA)
| Funkce realizuje odečtení jednokanálové bitmapy od druhé (mód sda), parametry viz makra.
static int | blend_remove_onech_sdm (PARAMS_SDM)
static int | blend_remove_onech_sdma (PARAMS_SDMA)
static int | blend_add_argb_sd (PARAMS_SD)
static int | blend_add_argb_sda (PARAMS_SDA)
static int | blend_add_argb_sdm (PARAMS_SDM)
static int | blend_add_argb_sdma (PARAMS_SDMA)
static int | blend_remove_argb_sd (PARAMS_SD)
static int | blend_remove_argb_sda (PARAMS_SDA)
static int | blend_remove_argb_sdm (PARAMS_SDM)
static int | blend_remove_argb_sdma (PARAMS_SDMA)

## Detailed Description

Třída zapouzdřuje veškeré funkce pro alpha blending bitmap pomocí statických metod.

Popis třídy

Třída zapouzdřuje veškeré funkce pro alpha blending bitmap pomocí statických metod. Celkově pracuje velmi nízkoúrovňově, proto jednotlivé metody vyžadují velký počet parametrů.

Třída je převážně definována pomocí maker preprocesoru, protože potřebuje definovat velké množství metod - pro každý blendovací mód je z hlediska rychlosti dobré mít více metod (v závislosti na parametrech) takových, aby pokud možno nevolali v tělech cyklů, které prochází jednotlivé obrazové body žádné funkce.

Od inlinování funkcí bylo upušťeno vzhledem k tomu, že je to jen doporučení pro překladač, a navíc většina funkcí se liší jen v drobných detailech, proto následující přístup umožňuje lepší optimalizaci, ikdyž za cenu snížení čitelnosti kódu, a ztrátu možnosti generovat rozumnou dokumentaci Doxygenem.

Typy parametrů pro blendování ARGB_Bitmap

Pro každý mód prolnutí existují následující funkce, které se liší použitými parametry:

- xxx_sd - src, dst
  výsledek operace prolnutí src nad dst v příslušném módu se uloží do bitmapy dst.

- xxx_sda - src, dst, alpha
  výsledek operace prolnutí src nad dst v příslušném módu se uloží do bitmapy dst, na bitmapu src během výpočtu aplikuje dodatečnou hodnotu alpha - alpha kanál bitmapy src je pro účely výpočtu násoben hodnotou alpha, původní bitmapa src zůstává nezměněna.

- xxx_sdm - src, dst, msk
  výsledek operace prolnutí src nad dst v příslušném módu se uloží do bitmapy dst, na bitmapu src během výpočtu aplikuje dodatečnou hodnotu alpha, která je dána maskou - alpha kanál bitmapy src je pro účely výpočtu násoben hodnotou alpha odpovídající hodnotě masky na dané pozici, původní bitmapa src zůstává nezměněna.

- xxx_sdma - src, dst, msk, alpha
  výsledek operace prolnutí src nad dst v příslušném módu se uloží do bitmapy dst, na bitmapu src během výpočtu aplikuje dodatečnou hodnotu alpha, která je dána součinem masky a konstantní hodnoty alpha - alpha kanál bitmapy src je pro účely výpočtu násoben hodnotou alpha odpovídající hodnotě masky na dané pozici a poté konstantní hodnotou alpha, původní bitmapa src zůstává nezměněna.

- xxx_cdm - clr, dst, msk
  výsledek operace prolnutí konstantní ARGB barvy clr nad dst v příslušném módu se uloží do bitmapy dst, na barvu clr se během výpočtu aplikuje dodatečná hodnotu alpha, která je dána maskou - alpha kanál barvy clr je pro účely výpočtu násoben hodnotou alpha odpovídající hodnotě masky na dané pozici, původní barva clr zůstává nezměněna.

Pro každý typ funkce (dle parametrů) existuje příslušný selektor, který vrací odpovídající funkci na základě požadovaného módu.

Parametry příslušných funkcí jsou popsány u příslušných maker, která je definují.

Typy parametrů pro blendování ARGB_Bitmap

Pro jednokanálové bitmapy existují následující funkce, které se liší použitými parametry. Jejich vlastnosti jsou stejné jako u funkcí pro ARGB_Bitmap.

- xxx_sd

- xxx_sda

Definition at line 85 of file Blender.hpp.

## Constructor & Destructor Documentation

app::Blender::Blender | ( |  | ) |

Konstruktor, vzhledem k rize statické povaze třídy nadbytečný.

Definition at line 13 of file Blender_protected.cpp.

{}

app::Blender::~Blender | ( |  | ) |
| virtual

Virtuální destruktor, nemá opodstatněni, jen ze slušnosti.

Definition at line 14 of file Blender_protected.cpp.

{}

## Member Function Documentation

int app::Blender::addTo | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig
| ) |  |
| static

Přičte bitmapu k cílové bitmapě.

Výsledek operace přičtení vybrané oblasti z bitmapy na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již nepřičítají). Pozice kam se data přičítají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit přičítaná oblast.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Přičítání je ekvivalentní výpočtu alphy pro kombinaci dvou bitmap.

Parameters

  dst | Cílová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 113 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_add_onech_sd((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset());
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig,
|  | double | alpha
| ) |  |
| static

Přičte bitmapu k cílové bitmapě s dodatečnou průhledností.

Výsledek operace přičtení vybrané oblasti z bitmapy na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již nepřičítají). Pozice kam se data prolínají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit přičítaná oblast. Hodnota zdrojového kanálu je při výpočtu dodatečně násobena hodnotou alpha

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Přičítání je ekvivalentní výpočtu alphy pro kombinaci dvou bitmap s dodatečnou alphou.

Parameters

  dst | Cílová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.
  alpha | Dodatečná průhlednost.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 139 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_add_onech_sda((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig
| ) |  |
| static

Přičtení jednokanálové bitmapy, analogie k drawTo() přes masku.

Definition at line 166 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_add_onech_sdm((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Přičtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.

Definition at line 196 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_add_onech_sdma((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig
| ) |  |
| static

Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové

Definition at line 355 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_add_argb_sd((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset());
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig,
|  | double | alpha
| ) |  |
| static

Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové

Definition at line 381 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_add_argb_sda((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig
| ) |  |
| static

Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové

Definition at line 408 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_add_argb_sdm((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}

int app::Blender::addTo | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Přičtení jednokanálové bitmapy k alpha kanálu čtyřkanálové

Definition at line 438 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_add_argb_sdma((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::blend_add_argb_sd | ( | PARAMS_SD |  | ) |
| staticprotected

Definition at line 204 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_RGBA_SD(s, d),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_add_argb_sda | ( | PARAMS_SDA |  | ) |
| staticprotected

Definition at line 211 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_RGBA_SDA(s, d, alpha),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_add_argb_sdm | ( | PARAMS_SDM |  | ) |
| staticprotected

Definition at line 218 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_RGBA_SDM(s, d, m),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_add_argb_sdma | ( | PARAMS_SDMA |  | ) |
| staticprotected

Definition at line 225 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_RGBA_SDMA(s, d, m, alpha),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_add_onech_sd | ( | PARAMS_SD |  | ) |
| staticprotected

Funkce realizuje přičtení jednokanálové bitmapy ke druhé (mód sd), parametry viz makra.

Definition at line 126 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_ONECH_SD(s, d),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_add_onech_sda | ( | PARAMS_SDA |  | ) |
| staticprotected

Funkce realizuje přičtení jednokanálové bitmapy ke druhé (mód sda), parametry viz makra.

Definition at line 134 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_ONECH_SDA(s, d, alpha),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_add_onech_sdm | ( | PARAMS_SDM |  | ) |
| staticprotected

Definition at line 142 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_ONECH_SDM(s, d, m),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_add_onech_sdma | ( | PARAMS_SDMA |  | ) |
| staticprotected

Definition at line 150 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
ADD_ONECH_SDMA(s, d, m, alpha),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_remove_argb_sd | ( | PARAMS_SD |  | ) |
| staticprotected

Definition at line 232 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_RGBA_SD(s, d),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_remove_argb_sda | ( | PARAMS_SDA |  | ) |
| staticprotected

Definition at line 239 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_RGBA_SDA(s, d, alpha),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_remove_argb_sdm | ( | PARAMS_SDM |  | ) |
| staticprotected

Definition at line 246 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_RGBA_SDM(s, d, m),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_remove_argb_sdma | ( | PARAMS_SDMA |  | ) |
| staticprotected

Definition at line 253 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_RGBA_SDMA(s, d, m, alpha),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_remove_onech_sd | ( | PARAMS_SD |  | ) |
| staticprotected

Funkce realizuje odečtení jednokanálové bitmapy od druhé (mód sd), parametry viz makra.

Definition at line 158 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_ONECH_SD(s, d),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_remove_onech_sda | ( | PARAMS_SDA |  | ) |
| staticprotected

Funkce realizuje odečtení jednokanálové bitmapy od druhé (mód sda), parametry viz makra.

Definition at line 166 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_ONECH_SDA(s, d, alpha),
AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset)
)
return 1;
}

int app::Blender::blend_remove_onech_sdm | ( | PARAMS_SDM |  | ) |
| staticprotected

Definition at line 174 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_ONECH_SDM(s, d, m),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blend_remove_onech_sdma | ( | PARAMS_SDMA |  | ) |
| staticprotected

Definition at line 182 of file Blender_protected.cpp.

{
FOREACH(d, dstAreaEnd, dstAreaRowEnd,
REM_ONECH_SDMA(s, d, m, alpha),
AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset)
)
return 1;
}

int app::Blender::blendTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_4x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig
| ) |  |
| static

Prolne bitmapu do cílové.

Výsledek operace prolnutí vybrané oblasti z bitmapy na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již neprolínají). Pozice kam se data prolínají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit prolínaná oblast.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  src | Zdrojová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 10 of file Blender_public.cpp.

{
if (src.getType() != RGBA || src.getData() == NULL) {
return 1;
} // Toto by mělo garantovat že není NULL a využívá správný model
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = PointerArea(dst.getData(), dst.getRect(),
dst.getBpp());
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
blendf_argb_sd f = Blender::getBlendFunction_argb_sd(mode);
if (f == NULL) {
return 3;
} else {
f((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset());
return 0;
}
}

int app::Blender::blendTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_4x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig,
|  | double | alpha
| ) |  |
| static

Prolne bitmapu do cílové s dodatečnou průhledností.

Výsledek operace prolnutí vybrané oblasti z bitmapy na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již neprolínají). Pozice kam se data prolínají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit prolínaná oblast. Na alpha kanál zdrojové bitmapy je pří výpočtu dodatečně násoben hodnotou alpha.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.
  alpha | Dodatečná průhlednost.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 42 of file Blender_public.cpp.

{
if (src.getType() != RGBA || src.getData() == NULL) {
return 1;
} // Toto by mělo garantovat že není NULL a využívá správný model
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = PointerArea(dst.getData(), dst.getRect(),
dst.getBpp());
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
blendf_argb_sda f = Blender::getBlendFunction_argb_sda(mode);
if (f == NULL) {
return 3;
} else {
f((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), alpha);
return 0;
}
}

int app::Blender::blendTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | px_4x8bit * | src,
|  | Rect | dstRect
| ) |  |
| static

Definition at line 75 of file Blender_public.cpp.

{
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 1;
}
PointerArea dstArea = PointerArea(dst.getData(), dst.getRect(), dstRect,
dst.getBpp());
blendf_argb_cd f = Blender::getBlendFunction_argb_cd(mode);
if (f == NULL) {
return 2;
} else {
f((byte *) src, (byte *) dstArea.getAreaBgn(),
(byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), dstArea.bpp, dstArea.getByteOffset());
return 0;
}
}

int app::Blender::blendTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | px_4x8bit * | src,
|  | Rect | dstRect,
|  | double | alpha
| ) |  |
| static

Definition at line 96 of file Blender_public.cpp.

{
// ARGB_Pixel clr(* src);
// clr.seta(alpha * clr.geta() + 0.5);
// return Blender::blendTo(mode, dst, clr.getDataAdress(), dstRect);
px_4x8bit modSrc = *src;
px_1x8bit * aCh = (px_1x8bit *) &modSrc;
aCh += 3;
*aCh = (*aCh) * alpha + 0.5;
return Blender::blendTo(mode, dst, &modSrc, dstRect);
}

int app::Blender::drawTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | px_4x8bit * | src,
|  | Rect | mskRect,
|  | Point | mskOrig
| ) |  |
| static

Kreslí v daném módu na cílovou bitmapu danou barvou s touto bitmapou jako maskou průhlednosti.

Výsledek operace prolnutí konstantní hodnoty barvy při použití vybrané oblasti z masky na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je barva nad cílovou). Vybraná oblast masky je určena obdélníkem mskRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již nepoužijí). Pozice kam se data prolínají je určena bodem mskOrig, který určuje, kam se v ss cílové bítmapy má umístit prolínaná oblast. Na alpha kanál konstantní barvy je pří výpočtu dodatečně násoben hodnotou alpha odpovídající hodnotě masky na dané pozici.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmap. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  src | Konstantní hodnota pixelů, která se má použít jako zdroj.
  mskRect | Vybraná oblast (masky).
  mskOrig | Počátek cílové oblasti.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 630 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blendf_argb_cdm f = Blender::getBlendFunction_argb_cdm(mode);
if (f == NULL) {
return 3;
} else {
f((byte *) src, (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), dstArea.bpp,
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}
}

int app::Blender::drawTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | px_4x8bit * | src,
|  | Rect | mskRect,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Kreslí v daném módu na cílovou bitmapu danou barvou s touto bitmapou jako maskou průhlednosti a dodatečnou alphou.

Výsledek operace prolnutí konstantní hodnoty barvy při použití vybrané oblasti z masky na určené místo v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je barva nad cílovou). Vybraná oblast masky je určena obdélníkem mskRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již nepoužijí). Pozice kam se data prolínají je určena bodem mskOrig, který určuje, kam se v ss cílové bítmapy má umístit prolínaná oblast. Na alpha kanál konstantní barvy je pří výpočtu dodatečně násoben hodnotou alpha odpovídající hodnotě masky na dané pozici.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmap. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  src | Konstantní hodnota pixelů, která se má použít jako zdroj.
  mskRect | Vybraná oblast (masky).
  mskOrig | Počátek cílové oblasti.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 661 of file Blender_public.cpp.

{
// ARGB_Pixel clr(* src);
// clr.seta(alpha * clr.geta() + 0.5);
// return Blender::drawTo(mode, dst, msk, clr.getDataAdress(), mskRect, mskOrig);
px_4x8bit modSrc = *src;
px_1x8bit * aCh = (px_1x8bit *) &modSrc;
aCh += 3;
*aCh = (*aCh) * alpha + 0.5;
return Blender::drawTo(mode, dst, msk, &modSrc, mskRect, mskOrig);
}

int app::Blender::drawTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_4x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig
| ) |  |
| static

Kreslí v daném módu data ze zdrojové bitmapy na cílovou bitmapu s touto bitmapou jako maskou průhlednosti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  src | Zdrojová bitmapa..
  mskRect | Vybraná oblast (masky v jejícm ss).
  srcOrig | Počátek zdrojové oblasti (v ss cíle)
  mskOrig | Počátek oblasti masky (v ss cíle).

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 674 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != RGBA || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea,
mskOrig);
if (err) {
return 100 + err;
}
blendf_argb_sdm f = Blender::getBlendFunction_argb_sdm(mode);
if (f == NULL) {
return 4;
} else {
f((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}
}

int app::Blender::drawTo | ( | BlendMode | mode,
|  | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_4x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Kreslí v daném módu data ze zdrojové bitmapy na cílovou bitmapu s touto bitmapou jako maskou průhlednosti, navíc s využitím dodatečné průhlednosti.

Parameters

  mode | Mód prolnutí.
  dst | Cílová bitmapa.
  src | Zdrojová bitmapa..
  mskRect | Vybraná oblast (masky v jejícm ss).
  srcOrig | Počátek zdrojové oblasti (v ss cíle)
  mskOrig | Počátek oblasti masky (v ss cíle).
  alpha | Dodatečná průhlednost.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 711 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != RGBA || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea,
mskOrig);
if (err) {
return 100 + err;
}
blendf_argb_sdma f = Blender::getBlendFunction_argb_sdma(mode);
if (f == NULL) {
return 4;
} else {
f((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset(), alpha);
return 0;
}
}

int app::Blender::removeFrom | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig
| ) |  |
| static

Odečte bitmapu od cílové bitmapy.

Výsledek operace odečtení vybrané oblasti z bitmapy od určeného místa v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již neodečítají). Pozice odkud se data odečítají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit odečítaná oblast.

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  dst | Cílová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 227 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_remove_onech_sd((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset());
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig,
|  | double | alpha
| ) |  |
| static

Odečte bitmapu od cílové bitmapy.

Výsledek operace odečtení vybrané oblasti z bitmapy od určeného místa v cílové bitmapě se zapíše do cílové bitmapy (pořadí vrstev je zdrojová nad cílovou). Vybraná oblast je určena obdélníkem srcRect (ss této bitmapy, body určené pravou a dolní maximální souřadnicí se již neodečítají). Pozice odkud se data odečítají je určena bodem srcOrig, který určuje, kam se v ss cílové bítmapy má umístit odečítaná oblast. Hodnota zdrojového kanálu je při výpočtu dodatečně násobena hodnotou alpha

Je možné zadat požadavek na prolnutí takový, že by se mělo prolínat z / mimo platnou oblast Bitmapy. V tom případě budou oblasti adekvátně ořezány, aby se prolínala pouze platná data do platné oblasti.

Parameters

  dst | Cílová bitmapa.
  srcRect | Vybraná oblast.
  srcOrig | Počátek cílové oblasti.
  alpha | Dodatečná průhlednost.

Returns
  Vrací 0 při úspěchu, v opačném případě kód chyby.

Definition at line 253 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_remove_onech_sda((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig
| ) |  |
| static

Odečtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.

Definition at line 280 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_remove_onech_sdm((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_1x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Odečtení jednokanálové bitmapy, analogie k drawTo() přes masku a alphu.

Definition at line 310 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != MONO || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_remove_onech_sdma((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig
| ) |  |
| static

Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové

Definition at line 469 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_remove_argb_sd((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset());
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | srcRect,
|  | Point | srcOrig,
|  | double | alpha
| ) |  |
| static

Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové

Definition at line 495 of file Blender_public.cpp.

{
if (src.getType() != MONO || src.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
PointerArea srcArea = PointerArea(src.getData(), src.getRect(), srcRect,
src.getBpp());
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig);
if (err) {
return 100 + err;
}
Blender::blend_remove_argb_sda((byte *) srcArea.getAreaBgn(),
(byte *) dstArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), alpha);
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig
| ) |  |
| static

Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové

Definition at line 522 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_remove_argb_sdm((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset());
return 0;
}

int app::Blender::removeFrom | ( | TBitmap< px_4x8bit, px_1x8bit > & | dst,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | msk,
|  | const TBitmap< px_1x8bit, px_1x8bit > & | src,
|  | Rect | mskRect,
|  | Point | srcOrig,
|  | Point | mskOrig,
|  | double | alpha
| ) |  |
| static

Odečtení jednokanálové bitmapy od alpha kanálu čtyřkanálové

Definition at line 552 of file Blender_public.cpp.

{
if (msk.getType() != MONO || msk.getData() == NULL) {
return 1;
}
if (dst.getType() != RGBA || dst.getData() == NULL) {
return 2;
}
if (src.getType() != MONO || src.getData() == NULL) {
return 3;
}
PointerArea mskArea = PointerArea(msk.getData(), msk.getRect(), mskRect, msk.getBpp());
PointerArea srcArea = src.getPointerArea();
PointerArea dstArea = dst.getPointerArea();
int err = PointerArea::makeCommon(dstArea, srcArea, srcOrig, mskArea, mskOrig);
if (err) {
return 100 + err;
}
blend_remove_argb_sdma((byte *) srcArea.getAreaBgn(), (byte *) dstArea.getAreaBgn(),
(byte *) mskArea.getAreaBgn(), (byte *) dstArea.getAreaEnd(),
(byte *) dstArea.getAreaBgn() + dstArea.getAreaByteWidth(),
dstArea.getOrigByteWidth(), srcArea.getByteOffset(),
dstArea.getByteOffset(), mskArea.getByteOffset(), alpha);
return 0;
}

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

- /home/xxx/eclipse_workspaces/app/appcore/jni/app/blending/Blender.hpp
- /home/xxx/eclipse_workspaces/app/appcore/jni/app/blending/Blender_protected.cpp
- /home/xxx/eclipse_workspaces/app/appcore/jni/app/blending/Blender_public.cpp