1/*
2 * Copyright 2015 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#ifndef GrDrawOpTest_DEFINED
9#define GrDrawOpTest_DEFINED
10
11#include "include/core/SkRefCnt.h"
12#include "src/gpu/GrTestUtils.h"
13
14#if GR_TEST_UTILS
15
16class GrContext_Base;
17class GrDrawOp;
18class GrPaint;
19class GrRecordingContext;
20class GrRenderTargetContext;
21struct GrUserStencilSettings;
22class SkRandom;
23
24/** This function draws a randomly configured GrDrawOp for testing purposes. */
25void GrDrawRandomOp(SkRandom*, GrRenderTargetContext*, GrPaint&&);
26
27/** GrDrawOp subclasses should define test factory functions using this macro. */
28#define GR_DRAW_OP_TEST_DEFINE(Op) \
29 std::unique_ptr<GrDrawOp> Op##__Test(GrPaint&& paint, SkRandom* random, \
30 GrRecordingContext* context, int numSamples)
31#define GR_DRAW_OP_TEST_FRIEND(Op) \
32 friend std::unique_ptr<GrDrawOp> Op##__Test(GrPaint&& paint, SkRandom* random, \
33 GrRecordingContext* context, int numSamples)
34
35/** Helper for op test factories to pick a random stencil state. */
36const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext_Base*);
37
38#endif
39#endif
40