Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "SkCanvas.h"
      9 #include "SkPicture.h"
     10 #include "SkPictureRecorder.h"
     11 #include "SkShader.h"
     12 #include "Test.h"
     13 
     14 // Test that attempting to create a picture shader with a nullptr picture or
     15 // empty picture returns a shader that draws nothing.
     16 DEF_TEST(PictureShader_empty, reporter) {
     17     SkPaint paint;
     18 
     19     SkBitmap bitmap;
     20     bitmap.allocN32Pixels(1,1);
     21 
     22     SkCanvas canvas(bitmap);
     23     canvas.clear(SK_ColorGREEN);
     24 
     25     SkShader* shader = SkShader::CreatePictureShader(
     26             nullptr, SkShader::kClamp_TileMode, SkShader::kClamp_TileMode, nullptr, nullptr);
     27     paint.setShader(shader)->unref();
     28 
     29     canvas.drawRect(SkRect::MakeWH(1,1), paint);
     30     REPORTER_ASSERT(reporter, *bitmap.getAddr32(0,0) == SK_ColorGREEN);
     31 
     32 
     33     SkPictureRecorder factory;
     34     factory.beginRecording(0, 0, nullptr, 0);
     35     SkAutoTUnref<SkPicture> picture(factory.endRecording());
     36     shader = SkShader::CreatePictureShader(
     37             picture.get(), SkShader::kClamp_TileMode, SkShader::kClamp_TileMode, nullptr, nullptr);
     38     paint.setShader(shader)->unref();
     39 
     40     canvas.drawRect(SkRect::MakeWH(1,1), paint);
     41     REPORTER_ASSERT(reporter, *bitmap.getAddr32(0,0) == SK_ColorGREEN);
     42 }
     43