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