Index: src/gpu/GrReducedClip.h |
diff --git a/src/gpu/GrReducedClip.h b/src/gpu/GrReducedClip.h |
index 780f6f1ff54ad631c55ff764da770fe77eed59ca..07e06694a1764197d55de8139b06a2d5f91f17e3 100644 |
--- a/src/gpu/GrReducedClip.h |
+++ b/src/gpu/GrReducedClip.h |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright 2012 Google Inc. |
+ * Copyright 2016 Google Inc. |
* |
* Use of this source code is governed by a BSD-style license that can be |
* found in the LICENSE file. |
@@ -11,37 +11,57 @@ |
#include "SkClipStack.h" |
#include "SkTLList.h" |
+/** |
+ * This class takes a clip stack and produces a reduced set of elements that are equivalent to |
+ * applying that full stack within a specified query rectangle. |
+ */ |
class SK_API GrReducedClip { |
public: |
+ GrReducedClip(const SkClipStack& stack, const SkRect& queryBounds); |
+ |
+ /** |
+ * Uniquely identifies this reduced clip. |
+ */ |
+ int32_t genID() const { return fGenID; } |
+ |
+ /** |
+ * Bounding box within which the reduced clip is valid. The caller must not draw any pixels |
+ * outside this box. |
+ */ |
+ const SkIRect& iBounds() const { return fIBounds; } |
+ int left() const { return this->iBounds().left(); } |
+ int top() const { return this->iBounds().top(); } |
+ int width() const { return this->iBounds().width(); } |
+ int height() const { return this->iBounds().height(); } |
+ |
typedef SkTLList<SkClipStack::Element, 16> ElementList; |
- enum InitialState { |
- kAllIn_InitialState, |
- kAllOut_InitialState, |
+ /** |
+ * Populated with a minimal list of elements that implement the clip. |
+ */ |
+ const ElementList& elements() const { return fElements; } |
+ |
+ /** |
+ * Indicates whether antialiasing is required to process any of the clip elements. |
+ */ |
+ bool requiresAA() const { return fRequiresAA; } |
+ |
+ enum class InitialState : bool { |
+ kAllIn, |
+ kAllOut |
}; |
/** |
- * This function produces a reduced set of SkClipStack::Elements that are equivalent to applying |
- * a full clip stack within a specified query rectangle. |
- * |
- * @param stack the clip stack to reduce. |
- * @param queryBounds bounding box of geometry the stack will clip. |
- * @param result populated with a minimal list of elements that implement the clip |
- * within the provided query bounds. |
- * @param resultGenID uniquely identifies the resulting reduced clip. |
- * @param clipIBounds bounding box within which the reduced clip is valid. The caller must |
- * not draw any pixels outside this box. NOTE: this box may be undefined |
- * if no pixels are valid (e.g. empty result, "all out" initial state.) |
- * @param requiresAA indicates whether anti-aliasing is required to process any of the |
- * elements in the element list result. Undefined if the result is empty. |
- * @return the initial clip state within clipIBounds ("all in" or "all out"). |
+ * The initial state of the clip within iBounds(). |
*/ |
- static InitialState ReduceClipStack(const SkClipStack& stack, |
- const SkRect& queryBounds, |
- ElementList* result, |
- int32_t* resultGenID, |
- SkIRect* clipIBounds, |
- bool* requiresAA); |
+ InitialState initialState() const { return fInitialState; } |
+ |
+private: |
+ int32_t fGenID; |
+ SkIRect fIBounds; |
+ ElementList fElements; |
+ bool fRequiresAA; |
+ InitialState fInitialState; |
}; |
#endif |