thorvg/src/renderer/wg_engine
Sergii Liebodkin af6969e15e wg_engine: introduced composition ability
[issues 1479: Masking](#1479)

Supported composition methods:

    AlphaMask
    InvAlphaMask
    LumaMask
    InvLumaMask
    AddMask
    SubtractMask
    IntersectMask
    DifferenceMask

Usage example:

    //Solid Rectangle
    auto shape = tvg::Shape::gen();
    shape->appendRect(0, 0, 400, 400);
    shape->fill(0, 0, 255);

    //Mask
    auto mask = tvg::Shape::gen();
    mask->appendCircle(200, 200, 125, 125);
    mask->fill(255, 255, 255);        //AlphaMask RGB channels are unused.

    //Nested Mask
    auto nMask = tvg::Shape::gen();
    nMask->appendCircle(220, 220, 125, 125);
    nMask->fill(255, 255, 255);       //AlphaMask RGB channels are unused.

    mask->composite(std::move(nMask), tvg::CompositeMethod::AlphaMask);
    shape->composite(std::move(mask), tvg::CompositeMethod::AlphaMask);
    canvas->push(std::move(shape));

    //Star
    auto star = tvg::Shape::gen();
    star->fill(80, 80, 80);
    star->moveTo(599, 34);
    star->lineTo(653, 143);
    star->lineTo(774, 160);
    star->lineTo(687, 244);
    star->lineTo(707, 365);
    star->lineTo(599, 309);
    star->lineTo(497, 365);
    star->lineTo(512, 245);
    star->lineTo(426, 161);
    star->lineTo(546, 143);
    star->close();
    star->strokeWidth(30);
    star->strokeJoin(tvg::StrokeJoin::Miter);
    star->strokeFill(255, 255, 255);

    //Mask3
    auto mask3 = tvg::Shape::gen();
    mask3->appendCircle(600, 200, 125, 125);
    mask3->fill(255, 255, 255);       //AlphaMask RGB channels are unused.
    mask3->opacity(200);
    star->composite(std::move(mask3), tvg::CompositeMethod::AlphaMask);
    if (canvas->push(std::move(star)) != tvg::Result::Success) return;
2024-04-05 17:28:08 +09:00
..
meson.build wg_engine: refactor render targets handling 2024-01-02 20:34:11 +09:00
tvgWgBindGroups.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgBindGroups.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgCommon.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgCommon.h updated copyright date (#1866) 2024-01-02 20:34:12 +09:00
tvgWgGeometry.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgGeometry.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgPipelines.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgPipelines.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgRenderData.cpp updated copyright date (#1866) 2024-01-02 20:34:12 +09:00
tvgWgRenderData.h updated copyright date (#1866) 2024-01-02 20:34:12 +09:00
tvgWgRenderer.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgRenderer.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgRenderTarget.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgRenderTarget.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgShaderSrc.cpp wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgShaderSrc.h wg_engine: introduced composition ability 2024-04-05 17:28:08 +09:00
tvgWgShaderTypes.cpp updated copyright date (#1866) 2024-01-02 20:34:12 +09:00
tvgWgShaderTypes.h updated copyright date (#1866) 2024-01-02 20:34:12 +09:00