From 129ed1cd6d792f3f6cf563aefa9756fc6308289d Mon Sep 17 00:00:00 2001 From: reed Date: Mon, 22 Feb 2016 06:42:31 -0800 Subject: lots of sRGB and F16 blits - generalize F16 xfermode procs - spriteblits for F16 and sRGB - saveLayer now respects colortype and profiletype BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1686013002 Review URL: https://codereview.chromium.org/1685203002 --- src/core/SkXfermode.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/core/SkXfermode.cpp') diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 7f89327703..7002e9a533 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -95,7 +95,7 @@ static Sk4f overlay_4f(const Sk4f& s, const Sk4f& d) { Sk4f two = Sk4f(2); Sk4f rc = (two * d <= da).thenElse(two * s * d, sa * da - two * (da - d) * (sa - s)); - return s + d - s * da + color_alpha(rc - d * sa, 0); + return pin_1(s + d - s * da + color_alpha(rc - d * sa, 0)); } static Sk4f hardlight_4f(const Sk4f& s, const Sk4f& d) { @@ -1343,6 +1343,15 @@ SkXfermodeProc4f SkXfermode::GetProc4f(Mode mode) { return proc; } +static SkPM4f missing_proc4f(const SkPM4f& src, const SkPM4f& dst) { + return src; +} + +SkXfermodeProc4f SkXfermode::getProc4f() const { + Mode mode; + return this->asMode(&mode) ? GetProc4f(mode) : missing_proc4f; +} + bool SkXfermode::ModeAsCoeff(Mode mode, Coeff* src, Coeff* dst) { SkASSERT(SK_ARRAY_COUNT(gProcCoeffs) == kModeCount); -- cgit v1.2.3