Tweak based on feedback from PR.
diff --git a/include/rive/drawable.hpp b/include/rive/drawable.hpp index fc710ab..fc1727f 100644 --- a/include/rive/drawable.hpp +++ b/include/rive/drawable.hpp
@@ -24,7 +24,7 @@ public: BlendMode blendMode() const { return (BlendMode)blendModeValue(); } - bool clip(Renderer* renderer, bool needsSave = true) const; + bool clip(Renderer* renderer) const; virtual void draw(Renderer* renderer) = 0; void addClippingShape(ClippingShape* shape); inline const std::vector<ClippingShape*>& clippingShapes() const
diff --git a/src/drawable.cpp b/src/drawable.cpp index 855775f..02ed17b 100644 --- a/src/drawable.cpp +++ b/src/drawable.cpp
@@ -11,17 +11,14 @@ m_ClippingShapes.push_back(shape); } -bool Drawable::clip(Renderer* renderer, bool needsSave) const +bool Drawable::clip(Renderer* renderer) const { if (m_ClippingShapes.size() == 0) { return false; } - if (needsSave) - { - renderer->save(); - } + renderer->save(); for (auto clippingShape : m_ClippingShapes) {
diff --git a/src/shapes/image.cpp b/src/shapes/image.cpp index 2877c01..4672e50 100644 --- a/src/shapes/image.cpp +++ b/src/shapes/image.cpp
@@ -12,10 +12,13 @@ { return; } - renderer->save(); - // Clip and tell it we're already saved (avoids extra save op). - clip(renderer, false); + if (!clip(renderer)) + { + // We didn't clip, so make sure to save as we'll be doing some + // transformations. + renderer->save(); + } auto renderImage = m_ImageAsset->renderImage(); auto width = renderImage->width();