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

Unified Diff: src/gpu/GrClip.cpp

Issue 947443003: Move clip off of draw target (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 5 years, 10 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/GrBitmapTextContext.cpp ('k') | src/gpu/GrClipData.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrClip.cpp
diff --git a/src/gpu/GrClip.cpp b/src/gpu/GrClip.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0f8aac874953237dfd03323c516d2879b2edfc38
--- /dev/null
+++ b/src/gpu/GrClip.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrClip.h"
+
+#include "GrSurface.h"
+#include "SkRect.h"
+
+///////////////////////////////////////////////////////////////////////////////
+
+/**
+ * getConservativeBounds returns the conservative bounding box of the clip
+ * in device (as opposed to canvas) coordinates. If the bounding box is
+ * the result of purely intersections of rects (with an initial replace)
+ * isIntersectionOfRects will be set to true.
+ */
+void GrClip::getConservativeBounds(int width, int height, SkIRect* devResult,
+ bool* isIntersectionOfRects) const {
+ switch (fClipType) {
+ default:
+ SkFAIL("incomplete switch\n");
+ case kWideOpen_ClipType: {
+ devResult->setLTRB(0, 0, width, height);
+ if (isIntersectionOfRects) {
+ *isIntersectionOfRects = true;
+ }
+ } break;
+ case kIRect_ClipType: {
+ *devResult = this->irect();
+ if (isIntersectionOfRects) {
+ *isIntersectionOfRects = true;
+ }
+ } break;
+ case kClipStack_ClipType: {
+ SkRect devBounds;
+ this->clipStack()->getConservativeBounds(-this->origin().fX,
+ -this->origin().fY,
+ width,
+ height,
+ &devBounds,
+ isIntersectionOfRects);
+ devBounds.roundOut(devResult);
+ } break;
+
+ }
+}
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | src/gpu/GrClipData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698