diff options
author | Mike Reed <reed@google.com> | 2016-11-15 16:44:34 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-16 15:38:11 +0000 |
commit | d47067392848ba132d4e86ffbeebe2dcacda9534 (patch) | |
tree | 456bd4182524d55f19117d8e726bacca50059fa8 /tests | |
parent | 988283c89458442f65d961f2746a9f271a39c31e (diff) |
make SkXfermode.h go away
This is step one:
- make SkXfermode useless to public clients
- everything they should need is in SkBlendMode.h
Step two:
- remove SkXfermode.h entirely (since skia core will already be using SkXfermodePriv.h)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4534
Change-Id: If2cea9f71df92430ed6644edb98dd306c5572cbc
Reviewed-on: https://skia-review.googlesource.com/4534
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/BlendTest.cpp | 33 | ||||
-rw-r--r-- | tests/RecordingXfermodeTest.cpp | 3 | ||||
-rw-r--r-- | tests/SkColor4fTest.cpp | 51 | ||||
-rw-r--r-- | tests/XfermodeTest.cpp | 55 |
4 files changed, 2 insertions, 140 deletions
diff --git a/tests/BlendTest.cpp b/tests/BlendTest.cpp index ca9e46efd3..cd5e8efba7 100644 --- a/tests/BlendTest.cpp +++ b/tests/BlendTest.cpp @@ -67,36 +67,3 @@ DEF_TEST(Blend_byte_multiply, r) { }; for (auto multiply : perfect) { REPORTER_ASSERT(r, test(multiply).diffs == 0); } } - -DEF_TEST(Blend_premul_begets_premul, r) { - // This test is quite slow, even if you have enough cores to run each mode in parallel. - if (!r->allowExtendedTest()) { - return; - } - - // No matter what xfermode we use, premul inputs should create premul outputs. - auto test_mode = [&](int m) { - SkXfermode::Mode mode = (SkXfermode::Mode)m; - if (mode == SkXfermode::kSrcOver_Mode) { - return; // TODO: can't create a SrcOver xfermode. - } - auto xfermode(SkXfermode::Make(mode)); - SkASSERT(xfermode); - // We'll test all alphas and legal color values, assuming all colors work the same. - // This is not true for non-separable blend modes, but this test still can't hurt. - for (int sa = 0; sa <= 255; sa++) { - for (int da = 0; da <= 255; da++) { - for (int s = 0; s <= sa; s++) { - for (int d = 0; d <= da; d++) { - SkPMColor src = SkPackARGB32(sa, s, s, s), - dst = SkPackARGB32(da, d, d, d); - xfermode->xfer32(&dst, &src, 1, nullptr); // To keep it simple, no AA. - if (!SkPMColorValid(dst)) { - ERRORF(r, "%08x is not premul using %s", dst, SkXfermode::ModeName(mode)); - } - }}}} - }; - - // Parallelism helps speed things up on my desktop from ~725s to ~50s. - SkTaskGroup().batch(SkXfermode::kLastMode, test_mode); -} diff --git a/tests/RecordingXfermodeTest.cpp b/tests/RecordingXfermodeTest.cpp index 32aec36f9f..db4262c7e9 100644 --- a/tests/RecordingXfermodeTest.cpp +++ b/tests/RecordingXfermodeTest.cpp @@ -12,6 +12,7 @@ #include "../include/core/SkStream.h" #include "../include/core/SkString.h" #include "../include/core/SkPictureRecorder.h" +#include "../src/core/SkBlendModePriv.h" #include <cstring> // Verify that replay of a recording into a clipped canvas @@ -160,7 +161,7 @@ DEF_TEST(SkRecordingAccuracyXfermode, reporter) { if (memcmp(goldenBM.getPixels(), pictureBM.getPixels(), pixelsSize)) { numErrors++; errors.appendf("For SkXfermode %d %s: SkPictureRecorder bitmap is wrong\n", - iMode, SkXfermode::ModeName(mode)); + iMode, SkBlendMode_Name(mode)); } #endif } diff --git a/tests/SkColor4fTest.cpp b/tests/SkColor4fTest.cpp index 028b99f413..f268e5f42d 100644 --- a/tests/SkColor4fTest.cpp +++ b/tests/SkColor4fTest.cpp @@ -23,15 +23,6 @@ static bool nearly_equal(float a, float b, float tol = kTolerance) { return fabsf(a - b) <= tol; } -static bool nearly_equal(const SkPM4f a, const SkPM4f& b, float tol = kTolerance) { - for (int i = 0; i < 4; ++i) { - if (!nearly_equal(a.fVec[i], b.fVec[i], tol)) { - return false; - } - } - return true; -} - DEF_TEST(SkColor4f_FromColor, reporter) { const struct { SkColor fC; @@ -75,45 +66,3 @@ DEF_TEST(Color4f_premul, reporter) { REPORTER_ASSERT(reporter, nearly_equal(pm4.b(), c4.fA * c4.fB)); } } - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -typedef SkPM4f (*SkXfermodeProc4f)(const SkPM4f& src, const SkPM4f& dst); - -static bool compare_procs(SkXfermodeProc proc32, SkXfermodeProc4f proc4f) { - const float kTolerance = 1.0f / 255; - - const SkColor colors[] = { - 0, 0xFF000000, 0xFFFFFFFF, 0x80FF0000 - }; - - for (auto s32 : colors) { - SkPMColor s_pm32 = SkPreMultiplyColor(s32); - SkPM4f s_pm4f = SkColor4f::FromColor(s32).premul(); - for (auto d32 : colors) { - SkPMColor d_pm32 = SkPreMultiplyColor(d32); - SkPM4f d_pm4f = SkColor4f::FromColor(d32).premul(); - - SkPMColor r32 = proc32(s_pm32, d_pm32); - SkPM4f r4f = proc4f(s_pm4f, d_pm4f); - - SkPM4f r32_4f = SkPM4f::FromPMColor(r32); - if (!nearly_equal(r4f, r32_4f, kTolerance)) { - return false; - } - } - } - return true; -} - -// Check that our Proc and Proc4f return (nearly) the same results -// -DEF_TEST(Color4f_xfermode_proc4f, reporter) { - // TODO: extend xfermodes so that all cases can be tested. - // - for (int mode = (int)SkBlendMode::kClear; mode <= (int)SkBlendMode::kScreen; ++mode) { - SkXfermodeProc proc32 = SkXfermode::GetProc((SkBlendMode)mode); - SkXfermodeProc4f proc4f = SkXfermode::GetProc4f((SkBlendMode)mode); - REPORTER_ASSERT(reporter, compare_procs(proc32, proc4f)); - } -} diff --git a/tests/XfermodeTest.cpp b/tests/XfermodeTest.cpp deleted file mode 100644 index c3a4d96785..0000000000 --- a/tests/XfermodeTest.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkColor.h" -#include "SkXfermode.h" -#include "Test.h" - -#define ILLEGAL_MODE ((SkXfermode::Mode)-1) - -static void test_asMode(skiatest::Reporter* reporter) { - for (int mode = 0; mode <= SkXfermode::kLastMode; mode++) { - auto xfer = SkXfermode::Make((SkXfermode::Mode) mode); - - SkXfermode::Mode reportedMode = ILLEGAL_MODE; - REPORTER_ASSERT(reporter, reportedMode != mode); - - // test IsMode - REPORTER_ASSERT(reporter, SkXfermode::AsMode(xfer, &reportedMode)); - REPORTER_ASSERT(reporter, reportedMode == mode); - - // repeat that test, but with asMode instead - if (xfer) { - reportedMode = (SkXfermode::Mode) -1; - REPORTER_ASSERT(reporter, xfer->asMode(&reportedMode)); - REPORTER_ASSERT(reporter, reportedMode == mode); - } else { - REPORTER_ASSERT(reporter, SkXfermode::kSrcOver_Mode == mode); - } - } -} - -static void test_IsMode(skiatest::Reporter* reporter) { - REPORTER_ASSERT(reporter, SkXfermode::IsMode(nullptr, - SkXfermode::kSrcOver_Mode)); - - for (int i = 0; i <= SkXfermode::kLastMode; ++i) { - SkXfermode::Mode mode = (SkXfermode::Mode)i; - - auto xfer = SkXfermode::Make(mode); - REPORTER_ASSERT(reporter, SkXfermode::IsMode(xfer, mode)); - - if (SkXfermode::kSrcOver_Mode != mode) { - REPORTER_ASSERT(reporter, !SkXfermode::IsMode(nullptr, mode)); - } - } -} - -DEF_TEST(Xfermode, reporter) { - test_asMode(reporter); - test_IsMode(reporter); -} |