Chromium Code Reviews| Index: tests/BlitMaskClip.cpp |
| diff --git a/tests/BlitMaskClip.cpp b/tests/BlitMaskClip.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1cddbfa307fc32035e72f1e6a19905f3f2369445 |
| --- /dev/null |
| +++ b/tests/BlitMaskClip.cpp |
| @@ -0,0 +1,62 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "SkBlitter.h" |
| +#include "SkMask.h" |
| +#include "Test.h" |
| + |
| +class TestBlitter : public SkBlitter { |
| +public: |
| + TestBlitter(SkIRect bounds, skiatest::Reporter* reporter) |
| + : fBounds(bounds) |
| + , fReporter(reporter) { } |
| + |
| + virtual void blitH(int x, int y, int width) override { |
|
reed1
2015/11/17 16:24:32
our new convention is to *not* say virtual when we
herb_g
2015/11/17 20:14:03
Done.
|
| + |
| + REPORTER_ASSERT(fReporter, x >= fBounds.fLeft && x < fBounds.fRight); |
| + REPORTER_ASSERT(fReporter, y >= fBounds.fTop && y < fBounds.fBottom); |
| + int right = x + width; |
| + REPORTER_ASSERT(fReporter, right > fBounds.fLeft && right <= fBounds.fRight); |
| + } |
| + |
| +private: |
| + SkIRect fBounds; |
| + skiatest::Reporter* fReporter; |
| +}; |
| + |
|
reed1
2015/11/17 16:24:32
Perhaps a small block-comment?
// Exercise all co
herb_g
2015/11/17 20:14:03
Done.
|
| +DEF_TEST(BlitAndClip, reporter) { |
| + const int originX = 100; |
| + const int originY = 100; |
| + for (int width = 1; width <= 32; width++) { |
| + const int height = 2; |
| + int rowBytes = (width + 7) >> 3; |
| + uint8_t* bits = new uint8_t[rowBytes * height]; |
| + |
| + SkIRect b = {originX, originY, originX + width, originY + height}; |
| + |
| + SkMask mask; |
| + mask.fFormat = SkMask::kBW_Format; |
| + mask.fBounds = b; |
| + mask.fImage = (uint8_t*)bits; |
| + mask.fRowBytes = rowBytes; |
| + |
| + TestBlitter tb(mask.fBounds, reporter); |
| + |
| + for (int top = b.fTop; top < b.fBottom; top++) { |
| + for (int bottom = top + 1; bottom <= b.fBottom; bottom++) { |
| + for (int left = b.fLeft; left < b.fRight; left++) { |
| + for (int right = left + 1; right <= b.fRight; right++) { |
| + SkIRect clipRect = {left, top, right, bottom}; |
| + tb.blitMask(mask, clipRect); |
| + } |
| + } |
| + } |
| + } |
| + |
| + delete [] bits; |
| + } |
| +} |