| Index: src/gpu/GrWindowRectsState.h
|
| diff --git a/src/gpu/GrWindowRectsState.h b/src/gpu/GrWindowRectsState.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9d3b61b9cb350aa513e28683d7b8927f19b863c1
|
| --- /dev/null
|
| +++ b/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
|
|
|