mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-12 07:32:20 +00:00
sw_engine: functions supporting a masking of the clipped images are missing
To preserve the naming convention function '_rasterTranslucentImageRle' is reanmed to '_translucentImageRle'. The '_rasterTranslucentImageRle' function is though created - it checks the composition method and calls the corresponding function. Missing functions are marked, but not implemented (separate commit).
This commit is contained in:
parent
c790e18de6
commit
7bc7ab83d0
1 changed files with 68 additions and 4 deletions
|
@ -275,7 +275,7 @@ static bool _rasterSolidRle(SwSurface* surface, const SwRleData* rle, uint32_t c
|
||||||
/* Image */
|
/* Image */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity)
|
static bool _translucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity)
|
||||||
{
|
{
|
||||||
auto span = rle->spans;
|
auto span = rle->spans;
|
||||||
|
|
||||||
|
@ -292,7 +292,23 @@ static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity)
|
||||||
|
{
|
||||||
|
if (surface->compositor) {
|
||||||
|
if (surface->compositor->method == CompositeMethod::AlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentImageRleAlphaMask(surface, rle, img, w, h, opacity);
|
||||||
|
}
|
||||||
|
if (surface->compositor->method == CompositeMethod::InvAlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentImageRleInvAlphaMask(surface, rle, img, w, h, opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _translucentImageRle(surface, rle, img, w, h, opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool _translucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
||||||
{
|
{
|
||||||
auto span = rle->spans;
|
auto span = rle->spans;
|
||||||
|
|
||||||
|
@ -313,7 +329,23 @@ static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool _rasterTranslucentUpScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
static bool _rasterTranslucentImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
||||||
|
{
|
||||||
|
if (surface->compositor) {
|
||||||
|
if (surface->compositor->method == CompositeMethod::AlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentImageRleAlphaMask(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
if (surface->compositor->method == CompositeMethod::InvAlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentImageRleInvAlphaMask(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _translucentImageRle(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool _translucentUpScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
||||||
{
|
{
|
||||||
auto span = rle->spans;
|
auto span = rle->spans;
|
||||||
for (uint32_t i = 0; i < rle->size; ++i, ++span) {
|
for (uint32_t i = 0; i < rle->size; ++i, ++span) {
|
||||||
|
@ -337,7 +369,23 @@ static bool _rasterTranslucentUpScaleImageRle(SwSurface* surface, const SwRleDat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool _rasterTranslucentDownScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform, float scaling)
|
static bool _rasterTranslucentUpScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform)
|
||||||
|
{
|
||||||
|
if (surface->compositor) {
|
||||||
|
if (surface->compositor->method == CompositeMethod::AlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentUpScaleImageRleAlphaMask(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
if (surface->compositor->method == CompositeMethod::InvAlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentUpScaleImageRleInvAlphaMask(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _translucentUpScaleImageRle(surface, rle, img, w, h, opacity, invTransform);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool _translucentDownScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform, float scaling)
|
||||||
{
|
{
|
||||||
uint32_t halfScaling = static_cast<uint32_t>(0.5f / scaling);
|
uint32_t halfScaling = static_cast<uint32_t>(0.5f / scaling);
|
||||||
if (halfScaling == 0) halfScaling = 1;
|
if (halfScaling == 0) halfScaling = 1;
|
||||||
|
@ -361,6 +409,22 @@ static bool _rasterTranslucentDownScaleImageRle(SwSurface* surface, const SwRleD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool _rasterTranslucentDownScaleImageRle(SwSurface* surface, const SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h, uint32_t opacity, const Matrix* invTransform, float scaling)
|
||||||
|
{
|
||||||
|
if (surface->compositor) {
|
||||||
|
if (surface->compositor->method == CompositeMethod::AlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentDownScaleImageRleAlphaMask(surface, rle, img, w, h, opacity, invTransform, scaling);
|
||||||
|
}
|
||||||
|
if (surface->compositor->method == CompositeMethod::InvAlphaMask) {
|
||||||
|
//TODO: implement
|
||||||
|
// return _translucentDownScaleImageRleInvAlphaMask(surface, rle, img, w, h, opacity, invTransform, scaling);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _translucentDownScaleImageRle(surface, rle, img, w, h, opacity, invTransform, scaling);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool _rasterImageRle(SwSurface* surface, SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h)
|
static bool _rasterImageRle(SwSurface* surface, SwRleData* rle, uint32_t *img, uint32_t w, uint32_t h)
|
||||||
{
|
{
|
||||||
auto span = rle->spans;
|
auto span = rle->spans;
|
||||||
|
|
Loading…
Add table
Reference in a new issue