Index: include/gpu/GrTypesPriv.h |
diff --git a/include/gpu/GrTypesPriv.h b/include/gpu/GrTypesPriv.h |
index d60fab13378bc031343c3a930d4fec4d20a7786e..8c42d648d08f2a20f52104f8953f58a2c3f38cdb 100644 |
--- a/include/gpu/GrTypesPriv.h |
+++ b/include/gpu/GrTypesPriv.h |
@@ -9,6 +9,7 @@ |
#define GrTypesPriv_DEFINED |
#include "GrTypes.h" |
+#include "SkRect.h" |
#include "SkRefCnt.h" |
/** |
@@ -419,6 +420,32 @@ |
kRW_GrIOType |
}; |
+struct GrScissorState { |
+ GrScissorState() : fEnabled(false) {} |
+ GrScissorState(const SkIRect& rect) : fEnabled(true), fRect(rect) {} |
+ void setDisabled() { fEnabled = false; } |
+ void set(const SkIRect& rect) { fRect = rect; fEnabled = true; } |
+ bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& rect) { |
+ if (!fEnabled) { |
+ this->set(rect); |
+ return true; |
+ } |
+ return fRect.intersect(rect); |
+ } |
+ bool operator==(const GrScissorState& other) const { |
+ return fEnabled == other.fEnabled && |
+ (false == fEnabled || fRect == other.fRect); |
+ } |
+ bool operator!=(const GrScissorState& other) const { return !(*this == other); } |
+ |
+ bool enabled() const { return fEnabled; } |
+ const SkIRect& rect() const { return fRect; } |
+ |
+private: |
+ bool fEnabled; |
+ SkIRect fRect; |
+}; |
+ |
/** |
* Indicates the type of data that a GPU buffer will be used for. |
*/ |