App
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:

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.

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
dstCílová bitmapa.
srcRectVybraná oblast.
srcOrigPočá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
dstCílová bitmapa.
srcRectVybraná oblast.
srcOrigPočátek cílové oblasti.
alphaDodateč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
modeMód prolnutí.
dstCílová bitmapa.
srcZdrojová bitmapa.
srcRectVybraná oblast.
srcOrigPočá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
modeMód prolnutí.
dstCílová bitmapa.
srcRectVybraná oblast.
srcOrigPočátek cílové oblasti.
alphaDodateč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
modeMód prolnutí.
dstCílová bitmapa.
srcKonstantní hodnota pixelů, která se má použít jako zdroj.
mskRectVybraná oblast (masky).
mskOrigPočá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
modeMód prolnutí.
dstCílová bitmapa.
srcKonstantní hodnota pixelů, která se má použít jako zdroj.
mskRectVybraná oblast (masky).
mskOrigPočá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
modeMód prolnutí.
dstCílová bitmapa.
srcZdrojová bitmapa..
mskRectVybraná oblast (masky v jejícm ss).
srcOrigPočátek zdrojové oblasti (v ss cíle)
mskOrigPočá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
modeMód prolnutí.
dstCílová bitmapa.
srcZdrojová bitmapa..
mskRectVybraná oblast (masky v jejícm ss).
srcOrigPočátek zdrojové oblasti (v ss cíle)
mskOrigPočátek oblasti masky (v ss cíle).
alphaDodateč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
dstCílová bitmapa.
srcRectVybraná oblast.
srcOrigPočá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
dstCílová bitmapa.
srcRectVybraná oblast.
srcOrigPočátek cílové oblasti.
alphaDodateč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: