From 3b52c03f5035b833d365215420739aa840ac5080 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 6 Aug 2014 10:19:32 -0700 Subject: [PATCH] clamp & round alpha Bug: 16842521 Change-Id: Ifd93f40b5751746835c9d56bb3c2b5ba700bdccc --- libs/hwui/RenderProperties.h | 2 +- libs/hwui/utils/MathUtils.h | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h index 9898bde5ce058..41f48cd626855 100644 --- a/libs/hwui/RenderProperties.h +++ b/libs/hwui/RenderProperties.h @@ -209,7 +209,7 @@ public: } bool setAlpha(float alpha) { - alpha = fminf(1.0f, fmaxf(0.0f, alpha)); + alpha = MathUtils::clampAlpha(alpha); return RP_SET(mPrimitiveFields.mAlpha, alpha); } diff --git a/libs/hwui/utils/MathUtils.h b/libs/hwui/utils/MathUtils.h index 2dfe9c600ba57..66bc127d20d33 100644 --- a/libs/hwui/utils/MathUtils.h +++ b/libs/hwui/utils/MathUtils.h @@ -20,6 +20,7 @@ namespace android { namespace uirenderer { #define NON_ZERO_EPSILON (0.001f) +#define ALPHA_EPSILON (0.001f) class MathUtils { public: @@ -34,6 +35,16 @@ public: return value >= NON_ZERO_EPSILON; } + inline static float clampAlpha(float alpha) { + if (alpha <= ALPHA_EPSILON) { + return 0; + } else if (alpha >= (1 - ALPHA_EPSILON)) { + return 1; + } else { + return alpha; + } + } + inline static bool areEqual(float valueA, float valueB) { return isZero(valueA - valueB); }