blob: 843feb5d052e04ff0a059f405ab2e784f3d525c9 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
reed@google.com2ade0862011-03-17 17:48:04 +00008#include "Test.h"
9#include "SkBitmap.h"
10#include "SkCanvas.h"
11
12static bool check_for_all_zeros(const SkBitmap& bm) {
13 SkAutoLockPixels alp(bm);
14
15 size_t count = bm.width() * bm.bytesPerPixel();
16 for (int y = 0; y < bm.height(); y++) {
17 const uint8_t* ptr = reinterpret_cast<const uint8_t*>(bm.getAddr(0, y));
18 for (size_t i = 0; i < count; i++) {
19 if (ptr[i]) {
20 return false;
21 }
22 }
23 }
24 return true;
25}
26
27static const int gWidth = 256;
28static const int gHeight = 256;
29
30static void create(SkBitmap* bm, SkBitmap::Config config, SkColor color) {
31 bm->setConfig(config, gWidth, gHeight);
32 bm->allocPixels();
33 bm->eraseColor(color);
34}
35
36static void TestDrawBitmapRect(skiatest::Reporter* reporter) {
37 SkBitmap src, dst;
38
39 create(&src, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
40 create(&dst, SkBitmap::kARGB_8888_Config, 0);
41
42 SkCanvas canvas(dst);
43
44 SkIRect srcR = { gWidth, 0, gWidth + 16, 16 };
45 SkRect dstR = { 0, 0, SkIntToScalar(16), SkIntToScalar(16) };
46
47 canvas.drawBitmapRect(src, &srcR, dstR, NULL);
48
49 // ensure that we draw nothing if srcR does not intersect the bitmap
50 REPORTER_ASSERT(reporter, check_for_all_zeros(dst));
51}
52
53#include "TestClassDef.h"
54DEFINE_TESTCLASS("DrawBitmapRect", TestDrawBitmapRectClass, TestDrawBitmapRect)