diff options
Diffstat (limited to 'gfx/skia/skia/src/gpu/GrWindowRectsState.h')
-rw-r--r-- | gfx/skia/skia/src/gpu/GrWindowRectsState.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/gpu/GrWindowRectsState.h b/gfx/skia/skia/src/gpu/GrWindowRectsState.h new file mode 100644 index 000000000..9d3b61b9c --- /dev/null +++ b/gfx/skia/skia/src/gpu/GrWindowRectsState.h @@ -0,0 +1,60 @@ +/* + * 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, const SkIPoint& origin, Mode mode) + : fMode(mode) + , fOrigin(origin) + , fWindows(windows) { + } + + bool enabled() const { return Mode::kInclusive == fMode || !fWindows.empty(); } + Mode mode() const { return fMode; } + const SkIPoint& origin() const { return fOrigin; } + const GrWindowRectangles& windows() const { return fWindows; } + int numWindows() const { return fWindows.count(); } + + void setDisabled() { + fMode = Mode::kExclusive; + fWindows.reset(); + } + + void set(const GrWindowRectangles& windows, const SkIPoint& origin, Mode mode) { + fMode = mode; + fOrigin = origin; + fWindows = windows; + } + + bool cheapEqualTo(const GrWindowRectsState& that) const { + if (fMode != that.fMode) { + return false; + } + if (!fWindows.empty() && fOrigin != that.fOrigin) { + return false; + } + return fWindows == that.fWindows; + } + +private: + Mode fMode; + SkIPoint fOrigin; + GrWindowRectangles fWindows; +}; + +#endif |