• 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 #include "Test.h"
9 // This is a GR test
10 #if SK_SUPPORT_GPU
11 #include "GrClipStackClip.h"
12 #include "GrContext.h"
13 
14 // Ensure that the 'getConservativeBounds' calls are returning bounds clamped
15 // to the render target
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrClipBounds,reporter,ctxInfo)16 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrClipBounds, reporter, ctxInfo) {
17     static const int kXSize = 100;
18     static const int kYSize = 100;
19 
20     const SkIRect intScreen = SkIRect::MakeWH(kXSize, kYSize);
21     const SkRect screen = SkRect::Make(intScreen);
22 
23     SkRect clipRect(screen);
24     clipRect.outset(10, 10);
25 
26     // create a clip stack that will (trivially) reduce to a single rect that
27     // is larger than the screen
28     SkClipStack stack;
29     stack.clipRect(clipRect, SkMatrix::I(), kReplace_SkClipOp, false);
30 
31     bool isIntersectionOfRects = true;
32     SkRect devStackBounds;
33 
34     stack.getConservativeBounds(0, 0, kXSize, kYSize,
35                                 &devStackBounds,
36                                 &isIntersectionOfRects);
37 
38     // make sure that the SkClipStack is behaving itself
39     REPORTER_ASSERT(reporter, screen == devStackBounds);
40     REPORTER_ASSERT(reporter, isIntersectionOfRects);
41 
42     // wrap the SkClipStack in a GrClip
43     GrClipStackClip clipData(&stack);
44 
45     SkIRect devGrClipBound;
46     clipData.getConservativeBounds(kXSize, kYSize,
47                                    &devGrClipBound,
48                                    &isIntersectionOfRects);
49 
50     // make sure that GrClip is behaving itself
51     REPORTER_ASSERT(reporter, intScreen == devGrClipBound);
52     REPORTER_ASSERT(reporter, isIntersectionOfRects);
53 }
54 
55 #endif
56