summaryrefslogtreecommitdiff
path: root/libs/hwui/StatefulBaseRenderer.cpp
diff options
context:
space:
mode:
author Chris Craik <ccraik@google.com> 2014-07-29 12:50:14 -0700
committer Chris Craik <ccraik@google.com> 2014-07-30 17:15:50 +0000
commitaf4d04cab6d48ae0d6a5e79bd30f679af87abaad (patch)
treeb1fe9d83f5ccc32b1e0db8f002d2d3035368dfac /libs/hwui/StatefulBaseRenderer.cpp
parent3d1856f4449f02a9a3bda06738c3eb83df96f88b (diff)
Use RoundRect clipping for circle reveal animation
bug:16630975 Also, remove inverse clipping feature from reveal animator. Change-Id: I770a4eb48cd123b0ca0f39d16a0f3eefd1be3653
Diffstat (limited to 'libs/hwui/StatefulBaseRenderer.cpp')
-rw-r--r--libs/hwui/StatefulBaseRenderer.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/libs/hwui/StatefulBaseRenderer.cpp b/libs/hwui/StatefulBaseRenderer.cpp
index 473005cf2c93..dc41157d5778 100644
--- a/libs/hwui/StatefulBaseRenderer.cpp
+++ b/libs/hwui/StatefulBaseRenderer.cpp
@@ -20,6 +20,8 @@
#include "StatefulBaseRenderer.h"
+#include "utils/MathUtils.h"
+
namespace android {
namespace uirenderer {
@@ -189,9 +191,24 @@ bool StatefulBaseRenderer::clipRegion(const SkRegion* region, SkRegion::Op op) {
}
void StatefulBaseRenderer::setClippingOutline(LinearAllocator& allocator, const Outline* outline) {
- mSnapshot->setClippingOutline(allocator, outline);
+ Rect bounds;
+ float radius;
+ if (!outline->getAsRoundRect(&bounds, &radius)) return; // only RR supported
+
+ if (!MathUtils::isPositive(radius)) {
+ // TODO: consider storing this rect separately, so that this can't be replaced with clip ops
+ clipRect(bounds.left, bounds.top, bounds.right, bounds.bottom, SkRegion::kIntersect_Op);
+ return;
+ }
+ setClippingRoundRect(allocator, bounds, radius);
}
+void StatefulBaseRenderer::setClippingRoundRect(LinearAllocator& allocator,
+ const Rect& rect, float radius) {
+ mSnapshot->setClippingRoundRect(allocator, rect, radius);
+}
+
+
///////////////////////////////////////////////////////////////////////////////
// Quick Rejection
///////////////////////////////////////////////////////////////////////////////