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