diff --git a/test/capi/capiPaint.cpp b/test/capi/capiPaint.cpp index 4beedae8..b874ce9e 100644 --- a/test/capi/capiPaint.cpp +++ b/test/capi/capiPaint.cpp @@ -252,3 +252,84 @@ TEST_CASE("Paint Clip Path Composite Method", "[capiPaint]") REQUIRE(tvg_paint_del(paint) == TVG_RESULT_SUCCESS); } + +TEST_CASE("Paint AlphaMask Composite Method", "[capiPaint]") +{ + Tvg_Paint* paint = tvg_shape_new(); + REQUIRE(paint); + + Tvg_Paint* target = tvg_shape_new(); + REQUIRE(target); + + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_SUCCESS); + REQUIRE(tvg_paint_set_composite_method(paint, target, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_ALPHA_MASK) == TVG_RESULT_INVALID_ARGUMENT); + + Tvg_Paint* target2 = tvg_shape_new(); + REQUIRE(target2); + REQUIRE(tvg_paint_set_composite_method(paint, target2, TVG_COMPOSITE_METHOD_ALPHA_MASK) == TVG_RESULT_SUCCESS); + + const Tvg_Paint* target3 = nullptr; + Tvg_Composite_Method method = TVG_COMPOSITE_METHOD_NONE; + REQUIRE(tvg_paint_get_composite_method(paint, NULL, &method) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, NULL) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, &method) == TVG_RESULT_SUCCESS); + REQUIRE(method == TVG_COMPOSITE_METHOD_ALPHA_MASK); + REQUIRE(target2 == target3); + + REQUIRE(tvg_paint_del(paint) == TVG_RESULT_SUCCESS); +} + +TEST_CASE("Paint InvAlphaMask Composite Method", "[capiPaint]") +{ + Tvg_Paint* paint = tvg_shape_new(); + REQUIRE(paint); + + Tvg_Paint* target = tvg_shape_new(); + REQUIRE(target); + + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_SUCCESS); + REQUIRE(tvg_paint_set_composite_method(paint, target, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK) == TVG_RESULT_INVALID_ARGUMENT); + + Tvg_Paint* target2 = tvg_shape_new(); + REQUIRE(target2); + REQUIRE(tvg_paint_set_composite_method(paint, target2, TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK) == TVG_RESULT_SUCCESS); + + const Tvg_Paint* target3 = nullptr; + Tvg_Composite_Method method = TVG_COMPOSITE_METHOD_NONE; + REQUIRE(tvg_paint_get_composite_method(paint, NULL, &method) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, NULL) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, &method) == TVG_RESULT_SUCCESS); + REQUIRE(method == TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK); + REQUIRE(target2 == target3); + + REQUIRE(tvg_paint_del(paint) == TVG_RESULT_SUCCESS); +} + +TEST_CASE("Paint LumaMask Composite Method", "[capiPaint]") +{ + Tvg_Paint* paint = tvg_shape_new(); + REQUIRE(paint); + + Tvg_Paint* target = tvg_shape_new(); + REQUIRE(target); + + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_SUCCESS); + REQUIRE(tvg_paint_set_composite_method(paint, target, TVG_COMPOSITE_METHOD_NONE) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_set_composite_method(paint, NULL, TVG_COMPOSITE_METHOD_LUMA_MASK) == TVG_RESULT_INVALID_ARGUMENT); + + Tvg_Paint* target2 = tvg_shape_new(); + REQUIRE(target2); + REQUIRE(tvg_paint_set_composite_method(paint, target2, TVG_COMPOSITE_METHOD_LUMA_MASK) == TVG_RESULT_SUCCESS); + + const Tvg_Paint* target3 = nullptr; + Tvg_Composite_Method method = TVG_COMPOSITE_METHOD_NONE; + REQUIRE(tvg_paint_get_composite_method(paint, NULL, &method) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, NULL) == TVG_RESULT_INVALID_ARGUMENT); + REQUIRE(tvg_paint_get_composite_method(paint, &target3, &method) == TVG_RESULT_SUCCESS); + REQUIRE(method == TVG_COMPOSITE_METHOD_LUMA_MASK); + REQUIRE(target2 == target3); + + REQUIRE(tvg_paint_del(paint) == TVG_RESULT_SUCCESS); +} \ No newline at end of file