180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc. 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SamplePipeControllers.h" 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBitmap.h" 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkCanvas.h" 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkGPipe.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkPaint.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkShader.h" 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "Test.h" 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// Ensures that the pipe gracefully handles drawing an invalid bitmap. 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic void testDrawingBadBitmap(SkCanvas* pipeCanvas) { 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBitmap badBitmap; 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru badBitmap.setConfig(SkBitmap::kNo_Config, 5, 5); 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru pipeCanvas->drawBitmap(badBitmap, 0, 0); 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// Ensure that pipe gracefully handles attempting to draw after endRecording is called on the 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// SkGPipeWriter. 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic void testDrawingAfterEndRecording(SkCanvas* canvas) { 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru PipeController pc(canvas); 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGPipeWriter writer; 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas* pipeCanvas = writer.startRecording(&pc, SkGPipeWriter::kCrossProcess_Flag); 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru writer.endRecording(); 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBitmap bm; 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bm.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bm.allocPixels(); 35363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger bm.eraseColor(SK_ColorTRANSPARENT); 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkShader* shader = SkShader::CreateBitmapShader(bm, SkShader::kClamp_TileMode, 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkShader::kClamp_TileMode); 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkPaint paint; 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru paint.setShader(shader)->unref(); 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru pipeCanvas->drawPaint(paint); 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru pipeCanvas->drawBitmap(bm, 0, 0); 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic void test_pipeTests(skiatest::Reporter*) { 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBitmap bitmap; 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bitmap.setConfig(SkBitmap::kARGB_8888_Config, 64, 64); 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas canvas(bitmap); 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru PipeController pipeController(&canvas); 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkGPipeWriter writer; 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas* pipeCanvas = writer.startRecording(&pipeController); 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru testDrawingBadBitmap(pipeCanvas); 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru writer.endRecording(); 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru testDrawingAfterEndRecording(&canvas); 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "TestClassDef.h" 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruDEFINE_TESTCLASS("PipeTest", PipeTestClass, test_pipeTests) 62