/*
|
* Copyright 2016 Google Inc.
|
*
|
* Use of this source code is governed by a BSD-style license that can be
|
* found in the LICENSE file.
|
*/
|
|
#ifndef GrWindowRectsState_DEFINED
|
#define GrWindowRectsState_DEFINED
|
|
#include "GrWindowRectangles.h"
|
|
class GrWindowRectsState {
|
public:
|
enum class Mode : bool {
|
kExclusive,
|
kInclusive
|
};
|
|
GrWindowRectsState() : fMode(Mode::kExclusive) {}
|
GrWindowRectsState(const GrWindowRectangles& windows, Mode mode)
|
: fMode(mode)
|
, fWindows(windows) {
|
}
|
|
bool enabled() const { return Mode::kInclusive == fMode || !fWindows.empty(); }
|
Mode mode() const { return fMode; }
|
const GrWindowRectangles& windows() const { return fWindows; }
|
int numWindows() const { return fWindows.count(); }
|
|
void setDisabled() {
|
fMode = Mode::kExclusive;
|
fWindows.reset();
|
}
|
|
void set(const GrWindowRectangles& windows, Mode mode) {
|
fMode = mode;
|
fWindows = windows;
|
}
|
|
bool operator==(const GrWindowRectsState& that) const {
|
if (fMode != that.fMode) {
|
return false;
|
}
|
return fWindows == that.fWindows;
|
}
|
bool operator!=(const GrWindowRectsState& that) const { return !(*this == that); }
|
|
private:
|
Mode fMode;
|
GrWindowRectangles fWindows;
|
};
|
|
#endif
|