1/* 2 * Copyright 2013 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#if SK_SUPPORT_GPU 9 10#include "GrContext.h" 11#include "GrContextFactory.h" 12#include "SkBitmap.h" 13#include "SkCanvas.h" 14#include "SkColor.h" 15#include "SkGpuDevice.h" 16#include "SkPaint.h" 17#include "SkRRect.h" 18#include "SkRect.h" 19#include "Test.h" 20 21static void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas) { 22 // Filling an empty path should not crash. 23 SkPaint paint; 24 canvas->drawRect(SkRect(), paint); 25 canvas->drawPath(SkPath(), paint); 26 canvas->drawOval(SkRect(), paint); 27 canvas->drawRect(SkRect(), paint); 28 canvas->drawRRect(SkRRect(), paint); 29 30 // Stroking an empty path should not crash. 31 paint.setAntiAlias(true); 32 paint.setStyle(SkPaint::kStroke_Style); 33 paint.setColor(SK_ColorGRAY); 34 paint.setStrokeWidth(SkIntToScalar(20)); 35 paint.setStrokeJoin(SkPaint::kRound_Join); 36 canvas->drawRect(SkRect(), paint); 37 canvas->drawPath(SkPath(), paint); 38 canvas->drawOval(SkRect(), paint); 39 canvas->drawRect(SkRect(), paint); 40 canvas->drawRRect(SkRRect(), paint); 41} 42 43 44DEF_GPUTEST(GpuDrawPath, reporter, factory) { 45 return; 46 47 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { 48 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::GLContextType>(type); 49 50 GrContext* grContext = factory->get(glType); 51 if (NULL == grContext) { 52 continue; 53 } 54 static const int sampleCounts[] = { 0, 4, 16 }; 55 56 for (size_t i = 0; i < SK_ARRAY_COUNT(sampleCounts); ++i) { 57 const int W = 255; 58 const int H = 255; 59 60 GrTextureDesc desc; 61 desc.fConfig = kSkia8888_GrPixelConfig; 62 desc.fFlags = kRenderTarget_GrTextureFlagBit; 63 desc.fWidth = W; 64 desc.fHeight = H; 65 desc.fSampleCnt = sampleCounts[i]; 66 SkAutoTUnref<GrTexture> texture(grContext->createUncachedTexture(desc, NULL, 0)); 67 SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice, (grContext, texture.get()))); 68 SkCanvas drawingCanvas(device.get()); 69 70 test_drawPathEmpty(reporter, &drawingCanvas); 71 } 72 } 73} 74 75#endif 76