Home | History | Annotate | Download | only in tests
      1 
      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  */
      8 #include "Test.h"
      9 #include "SkBitmap.h"
     10 #include "SkCanvas.h"
     11 
     12 static 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 
     27 static const int gWidth = 256;
     28 static const int gHeight = 256;
     29 
     30 static void create(SkBitmap* bm, SkBitmap::Config config, SkColor color) {
     31     bm->setConfig(config, gWidth, gHeight);
     32     bm->allocPixels();
     33     bm->eraseColor(color);
     34 }
     35 
     36 static 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"
     54 DEFINE_TESTCLASS("DrawBitmapRect", TestDrawBitmapRectClass, TestDrawBitmapRect)
     55