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.
DEF_TEST(PictureShader_empty,reporter)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