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: 15 GrScissorState() : fEnabled(false) {} 16 GrScissorState(const SkIRect& rect) : fEnabled(true), fRect(rect) {} 17 void setDisabled() { fEnabled = false; } 18 void set(const SkIRect& rect) { fRect = rect; fEnabled = true; } 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 32 bool enabled() const { return fEnabled; } 33 const SkIRect& rect() const { return fRect; } 34 35 private: 36 bool fEnabled; 37 SkIRect fRect; 38 }; 39 40 #endif 41