Index: src/gpu/GrFixedClip.h |
diff --git a/src/gpu/GrFixedClip.h b/src/gpu/GrFixedClip.h |
index 6fb7d23ed1a317dc6584b838957f21ca523b553b..8b3a9c1c9e9d7827f687a22be23b9f010502b0e8 100644 |
--- a/src/gpu/GrFixedClip.h |
+++ b/src/gpu/GrFixedClip.h |
@@ -9,8 +9,7 @@ |
#define GrFixedClip_DEFINED |
#include "GrClip.h" |
-#include "GrScissorState.h" |
-#include "GrWindowRectsState.h" |
+#include "GrTypesPriv.h" |
/** |
* GrFixedClip is a clip that gets implemented by fixed-function hardware. |
@@ -30,26 +29,32 @@ |
return fScissorState.intersect(irect); |
} |
- const GrWindowRectsState& windowRectsState() const { return fWindowRectsState; } |
- bool hasWindowRectangles() const { return fWindowRectsState.enabled(); } |
+ bool quickContains(const SkRect& rect) const final { |
+ return !fScissorState.enabled() || GrClip::IsInsideClip(fScissorState.rect(), rect); |
+ } |
+ void getConservativeBounds(int width, int height, SkIRect* devResult, |
+ bool* isIntersectionOfRects) const final; |
- void disableWindowRectangles() { fWindowRectsState.setDisabled(); } |
+ bool isRRect(const SkRect& rtBounds, SkRRect* rr, bool* aa) const override { |
+ if (fScissorState.enabled()) { |
+ SkRect rect = SkRect::Make(fScissorState.rect()); |
+ if (!rect.intersects(rtBounds)) { |
+ return false; |
+ } |
+ rr->setRect(rect); |
+ *aa = false; |
+ return true; |
+ } |
+ return false; |
+ }; |
- void setWindowRectangles(const GrWindowRectangles& windows, const SkIPoint& origin, |
- GrWindowRectsState::Mode mode) { |
- fWindowRectsState.set(windows, origin, mode); |
- } |
- |
- bool quickContains(const SkRect&) const override; |
- void getConservativeBounds(int w, int h, SkIRect* devResult, bool* iior) const override; |
- bool isRRect(const SkRect& rtBounds, SkRRect* rr, bool* aa) const override; |
- bool apply(GrContext*, GrDrawContext*, bool, bool, GrAppliedClip* out) const override; |
+ bool apply(GrContext*, GrDrawContext*, bool useHWAA, bool hasUserStencilSettings, |
+ GrAppliedClip* out) const final; |
static const GrFixedClip& Disabled(); |
private: |
- GrScissorState fScissorState; |
- GrWindowRectsState fWindowRectsState; |
+ GrScissorState fScissorState; |
}; |
#endif |