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 GrWindowRectsState_DEFINED 9 #define GrWindowRectsState_DEFINED 10 11 #include "GrWindowRectangles.h" 12 13 class GrWindowRectsState { 14 public: 15 enum class Mode : bool { 16 kExclusive, 17 kInclusive 18 }; 19 20 GrWindowRectsState() : fMode(Mode::kExclusive) {} 21 GrWindowRectsState(const GrWindowRectangles& windows, Mode mode) 22 : fMode(mode) 23 , fWindows(windows) { 24 } 25 26 bool enabled() const { return Mode::kInclusive == fMode || !fWindows.empty(); } 27 Mode mode() const { return fMode; } 28 const GrWindowRectangles& windows() const { return fWindows; } 29 int numWindows() const { return fWindows.count(); } 30 31 void setDisabled() { 32 fMode = Mode::kExclusive; 33 fWindows.reset(); 34 } 35 36 void set(const GrWindowRectangles& windows, Mode mode) { 37 fMode = mode; 38 fWindows = windows; 39 } 40 41 bool operator==(const GrWindowRectsState& that) const { 42 if (fMode != that.fMode) { 43 return false; 44 } 45 return fWindows == that.fWindows; 46 } 47 bool operator!=(const GrWindowRectsState& that) const { return !(*this == that); } 48 49 private: 50 Mode fMode; 51 GrWindowRectangles fWindows; 52 }; 53 54 #endif 55