nr-filter-getalpha.cpp revision b0fc1b5cad067af61ffdc6ff82667bfea7ef3f77
/*
* Functions for extracting alpha channel from NRPixBlocks.
*
* Author:
* Niko Kiirala <niko@kiirala.com>
*
* Copyright (C) 2007 Niko Kiirala
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include "display/nr-filter-getalpha.h"
#include "libnr/nr-blit.h"
#include "libnr/nr-pixblock.h"
namespace NR {
NRPixBlock *filter_get_alpha(NRPixBlock *src)
{
NRPixBlock *dst = new NRPixBlock;
nr_pixblock_setup_fast(dst, NR_PIXBLOCK_MODE_R8G8B8A8P,
src->area.x0, src->area.y0,
src->area.x1, src->area.y1, false);
if (!dst || (dst->size != NR_PIXBLOCK_SIZE_TINY && dst->data.px == NULL)) {
g_warning("Memory allocation failed in filter_get_alpha");
delete dst;
return NULL;
}
nr_blit_pixblock_pixblock(dst, src);
unsigned char *data = NR_PIXBLOCK_PX(dst);
int end = dst->rs * (dst->area.y1 - dst->area.y0);
for (int i = 0 ; i < end ; i += 4) {
data[i + 0] = 0;
data[i + 1] = 0;
data[i + 2] = 0;
}
dst->empty = false;
return dst;
}
} // namespace NR
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :