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 "SkPaint.h" 16#include "SkRRect.h" 17#include "SkRect.h" 18#include "SkSurface.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 SkImageInfo info = SkImageInfo::MakeN32Premul(255, 255); 58 59 SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget(grContext, info, 60 sampleCounts[i], NULL)); 61 test_drawPathEmpty(reporter, surface->getCanvas()); 62 } 63 } 64} 65 66#endif 67