summaryrefslogtreecommitdiff
path: root/thirdparty/thorvg/src/lib/tvgPaint.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/thorvg/src/lib/tvgPaint.cpp')
-rw-r--r--thirdparty/thorvg/src/lib/tvgPaint.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/thirdparty/thorvg/src/lib/tvgPaint.cpp b/thirdparty/thorvg/src/lib/tvgPaint.cpp
index d0e908ddf2..c90e95cd33 100644
--- a/thirdparty/thorvg/src/lib/tvgPaint.cpp
+++ b/thirdparty/thorvg/src/lib/tvgPaint.cpp
@@ -38,9 +38,9 @@ static bool _compFastTrack(Paint* cmpTarget, const RenderTransform* pTransform,
if (rTransform) rTransform->update();
- //No rotational.
- if (pTransform && !mathRightAngle(&pTransform->m)) return false;
- if (rTransform && !mathRightAngle(&rTransform->m)) return false;
+ //No rotation and no skewing
+ if (pTransform && (!mathRightAngle(&pTransform->m) || mathSkewed(&pTransform->m))) return false;
+ if (rTransform && (!mathRightAngle(&rTransform->m) || mathSkewed(&rTransform->m))) return false;
//Perpendicular Rectangle?
auto pt1 = pts + 0;
@@ -384,6 +384,19 @@ CompositeMethod Paint::composite(const Paint** target) const noexcept
}
+Result Paint::composite(const Paint** source, CompositeMethod* method) const noexcept
+{
+ if (source) *source = pImpl->compSource;
+ auto met = (pImpl->compSource && pImpl->compSource->pImpl->compData ?
+ pImpl->compSource->pImpl->compData->method : CompositeMethod::None);
+ if (method) *method = met;
+
+ if (pImpl->compSource != nullptr && met != CompositeMethod::None)
+ return Result::Success;
+ return Result::InsufficientCondition;
+}
+
+
Result Paint::opacity(uint8_t o) noexcept
{
if (pImpl->opacity == o) return Result::Success;