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