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