From bf434114cbf55b216fdc76fc8d65a75e84c9dab5 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 16 Sep 2010 14:40:17 -0700 Subject: Snap layer bounds to pixel boundaries. Change-Id: I272ceebf469a119f01ea9d73cdd68519afdffa99 --- libs/hwui/OpenGLRenderer.cpp | 2 ++ libs/hwui/Rect.h | 7 +++++++ 2 files changed, 9 insertions(+) (limited to 'libs') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 670d049..d6c0053 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -353,6 +353,8 @@ bool OpenGLRenderer::createLayer(sp snapshot, float left, float top, // Layers only make sense if they are in the framebuffer's bounds bounds.intersect(*mSnapshot->clipRect); + bounds.snapToPixelBoundaries(); + if (bounds.isEmpty() || bounds.getWidth() > mMaxTextureSize || bounds.getHeight() > mMaxTextureSize) { return false; diff --git a/libs/hwui/Rect.h b/libs/hwui/Rect.h index 6b22c2b..5166ee9 100644 --- a/libs/hwui/Rect.h +++ b/libs/hwui/Rect.h @@ -148,6 +148,13 @@ struct Rect { return false; } + void snapToPixelBoundaries() { + left = floor(left); + top = floor(top); + right = ceil(right); + bottom = ceil(bottom); + } + void dump() const { LOGD("Rect[l=%f t=%f r=%f b=%f]", left, top, right, bottom); } -- cgit v1.1