Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Unified Diff: src/gpu/GrWindowRectsState.h

Issue 2289363005: Improve usage of window rectangles (Closed) Base URL: https://skia.googlesource.com/skia.git@upload_drawsinreducedclip
Patch Set: Improve usage of window rectangles Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrWindowRectangles.h ('k') | src/gpu/batches/GrClearBatch.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « src/gpu/GrWindowRectangles.h ('k') | src/gpu/batches/GrClearBatch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698