diff options
author | Bill Peckham <bpeckham@google.com> | 2018-09-08 10:06:40 -0700 |
---|---|---|
committer | Bill Peckham <bpeckham@google.com> | 2018-09-08 10:06:40 -0700 |
commit | a74879d25eb0e4ef53855b57181b038bca75d05f (patch) | |
tree | 2a1ef83944343e547bebeae9998b098557225070 /libs/hwui/CanvasTransform.cpp | |
parent | b00720941bf751117cf02da40add144683ab51f1 (diff) |
Merge QP1A.180823.001
Change-Id: Ia2d6fa811b3c57185c1975db603d59e6eaef73fc
Diffstat (limited to 'libs/hwui/CanvasTransform.cpp')
-rw-r--r-- | libs/hwui/CanvasTransform.cpp | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/libs/hwui/CanvasTransform.cpp b/libs/hwui/CanvasTransform.cpp index bac7a4d17a49..1b15dbd526cc 100644 --- a/libs/hwui/CanvasTransform.cpp +++ b/libs/hwui/CanvasTransform.cpp @@ -15,32 +15,38 @@ */ #include "CanvasTransform.h" +#include "utils/Color.h" #include "Properties.h" +#include <ui/ColorSpace.h> #include <SkColorFilter.h> #include <SkPaint.h> -#include <log/log.h> + +#include <algorithm> +#include <cmath> namespace android::uirenderer { static SkColor makeLight(SkColor color) { - SkScalar hsv[3]; - SkColorToHSV(color, hsv); - if (hsv[1] > .2f) return color; - // hsv[1] *= .85f; - // hsv[2] = std::min(1.0f, std::max(hsv[2], 1 - hsv[2]) * 1.3f); - hsv[2] = std::max(hsv[2], 1.1f - hsv[2]); - return SkHSVToColor(SkColorGetA(color), hsv); + Lab lab = sRGBToLab(color); + float invertedL = std::min(110 - lab.L, 100.0f); + if (invertedL > lab.L) { + lab.L = invertedL; + return LabToSRGB(lab, SkColorGetA(color)); + } else { + return color; + } } static SkColor makeDark(SkColor color) { - SkScalar hsv[3]; - SkColorToHSV(color, hsv); - if (hsv[1] > .2f) return color; - // hsv[1] *= .85f; - // hsv[2] = std::max(0.0f, std::min(hsv[2], 1 - hsv[2]) * .7f); - hsv[2] = std::min(hsv[2], 1.1f - hsv[2]); - return SkHSVToColor(SkColorGetA(color), hsv); + Lab lab = sRGBToLab(color); + float invertedL = std::min(110 - lab.L, 100.0f); + if (invertedL < lab.L) { + lab.L = invertedL; + return LabToSRGB(lab, SkColorGetA(color)); + } else { + return color; + } } static SkColor transformColor(ColorTransform transform, SkColor color) { |