119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org/*
219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * Copyright 2013 Google Inc.
319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org *
419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * found in the LICENSE file.
619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org */
719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#if SK_SUPPORT_GPU
919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
1019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "GrContext.h"
1119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "GrContextFactory.h"
1219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkBitmap.h"
1319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkCanvas.h"
1419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkColor.h"
1519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkPaint.h"
1619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkRRect.h"
178f6884aab8aecd7657cf3f9cdbc682f0deca29c5tfarina@chromium.org#include "SkRect.h"
1869f6f00fd975823e825c5aa0b1b8f4416e7c812breed#include "SkSurface.h"
1919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "Test.h"
2019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
214ee16bfaedb14aff8cf102f1f0722ff2529a9699tfarina@chromium.orgstatic void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas) {
2219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    // Filling an empty path should not crash.
2319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    SkPaint paint;
2419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRect(SkRect(), paint);
2519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawPath(SkPath(), paint);
2619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawOval(SkRect(), paint);
2719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRect(SkRect(), paint);
2819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRRect(SkRRect(), paint);
2919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
3019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    // Stroking an empty path should not crash.
3119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    paint.setAntiAlias(true);
3219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    paint.setStyle(SkPaint::kStroke_Style);
3319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    paint.setColor(SK_ColorGRAY);
3419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    paint.setStrokeWidth(SkIntToScalar(20));
3519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    paint.setStrokeJoin(SkPaint::kRound_Join);
3619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRect(SkRect(), paint);
3719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawPath(SkPath(), paint);
3819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawOval(SkRect(), paint);
3919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRect(SkRect(), paint);
4019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    canvas->drawRRect(SkRRect(), paint);
4119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org}
4219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
4319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
444ee16bfaedb14aff8cf102f1f0722ff2529a9699tfarina@chromium.orgDEF_GPUTEST(GpuDrawPath, reporter, factory) {
452f683ba958488f29fdf117a7fab7d04390b4836djvanverth@google.com    return;
462f683ba958488f29fdf117a7fab7d04390b4836djvanverth@google.com
4719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
4819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        GrContextFactory::GLContextType glType = static_cast<GrContextFactory::GLContextType>(type);
4919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
5019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        GrContext* grContext = factory->get(glType);
5119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        if (NULL == grContext) {
5219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org            continue;
5319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        }
5419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        static const int sampleCounts[] = { 0, 4, 16 };
5519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
5619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        for (size_t i = 0; i < SK_ARRAY_COUNT(sampleCounts); ++i) {
5769f6f00fd975823e825c5aa0b1b8f4416e7c812breed            SkImageInfo info = SkImageInfo::MakeN32Premul(255, 255);
5869f6f00fd975823e825c5aa0b1b8f4416e7c812breed
59afe3005be3392e43bc51eb7eb2017eefaed85ad1bsalomon            SkAutoTUnref<SkSurface> surface(
60afe3005be3392e43bc51eb7eb2017eefaed85ad1bsalomon                SkSurface::NewRenderTarget(grContext, SkSurface::kNo_Budgeted, info,
61afe3005be3392e43bc51eb7eb2017eefaed85ad1bsalomon                                           sampleCounts[i], NULL));
6269f6f00fd975823e825c5aa0b1b8f4416e7c812breed            test_drawPathEmpty(reporter, surface->getCanvas());
6319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org        }
6419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org    }
6519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org}
6619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org
6719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#endif
68