Home | History | Annotate | Download | only in tests
      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
     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