/* * 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