Home | History | Annotate | Download | only in tests
      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 
     21 static 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 
     44 DEF_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