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 "src/gpu/GrWindowRectangles.h"
12 
13 class GrWindowRectsState {
14 public:
15     enum class Mode : bool {
16         kExclusive,
17         kInclusive
18     };
19 
GrWindowRectsState()20     GrWindowRectsState() : fMode(Mode::kExclusive) {}
GrWindowRectsState(const GrWindowRectangles & windows,Mode mode)21     GrWindowRectsState(const GrWindowRectangles& windows, Mode mode)
22         : fMode(mode)
23         , fWindows(windows) {
24     }
25 
enabled()26     bool enabled() const { return Mode::kInclusive == fMode || !fWindows.empty(); }
mode()27     Mode mode() const { return fMode; }
windows()28     const GrWindowRectangles& windows() const { return fWindows; }
numWindows()29     int numWindows() const { return fWindows.count(); }
30 
setDisabled()31     void setDisabled() {
32         fMode = Mode::kExclusive;
33         fWindows.reset();
34     }
35 
set(const GrWindowRectangles & windows,Mode mode)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