• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 class GrContext_Base;
17 class GrDrawOp;
18 class GrPaint;
19 class GrRecordingContext;
20 class GrRenderTargetContext;
21 struct GrUserStencilSettings;
22 class SkRandom;
23 
24 /**  This function draws a randomly configured GrDrawOp for testing purposes. */
25 void 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. */
36 const GrUserStencilSettings* GrGetRandomStencil(SkRandom* random, GrContext_Base*);
37 
38 #endif
39 #endif
40