From 9143d88ec76ce479cabdccc15e8db1d8b28e0e5c Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Tue, 1 Feb 2022 23:34:41 +0100 Subject: [PATCH] svg_loader: fixing the used mask-type For the performance reasons, regardless of the set/default mask-type value, if the mask is white, the alpha masking is used. To qualify a mask as white, not only its fill has to be checked, but its stroke as well. The second was missing. Change-Id: I407ec17f1b8dfd8fda5948319cf11bd609e7ab91 --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index e9b8f42..9abcc6a 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -594,7 +594,10 @@ static unique_ptr _sceneBuildHelper(const SvgNode* node, const Box& vBox, if (isMaskWhite) { uint8_t r, g, b; shape->fillColor(&r, &g, &b, nullptr); - if (shape->fill() || r < 255 || g < 255 || b < 255) *isMaskWhite = false; + if (shape->fill() || r < 255 || g < 255 || b < 255 || shape->strokeFill() || + (shape->strokeColor(&r, &g, &b, nullptr) == Result::Success && (r < 255 || g < 255 || b < 255))) { + *isMaskWhite = false; + } } scene->push(move(shape)); } -- 2.7.4