1 /*
2  * Copyright 2016 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 GrScissorState_DEFINED
9 #define GrScissorState_DEFINED
10 
11 #include "SkRect.h"
12 
13 class GrScissorState {
14 public:
GrScissorState()15     GrScissorState() : fEnabled(false) {}
GrScissorState(const SkIRect & rect)16     GrScissorState(const SkIRect& rect) : fEnabled(true), fRect(rect) {}
setDisabled()17     void setDisabled() { fEnabled = false; }
set(const SkIRect & rect)18     void set(const SkIRect& rect) { fRect = rect; fEnabled = true; }
intersect(const SkIRect & rect)19     bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& rect) {
20         if (!fEnabled) {
21             this->set(rect);
22             return true;
23         }
24         return fRect.intersect(rect);
25     }
26     bool operator==(const GrScissorState& other) const {
27         return fEnabled == other.fEnabled &&
28                 (false == fEnabled || fRect == other.fRect);
29     }
30     bool operator!=(const GrScissorState& other) const { return !(*this == other); }
31 
enabled()32     bool enabled() const { return fEnabled; }
rect()33     const SkIRect& rect() const { return fRect; }
34 
35 private:
36     bool    fEnabled;
37     SkIRect fRect;
38 };
39 
40 #endif
41