aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrReducedClip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/GrReducedClip.cpp')
-rw-r--r--src/gpu/GrReducedClip.cpp45
1 files changed, 4 insertions, 41 deletions
diff --git a/src/gpu/GrReducedClip.cpp b/src/gpu/GrReducedClip.cpp
index bc3286bdf0..d37c83f11a 100644
--- a/src/gpu/GrReducedClip.cpp
+++ b/src/gpu/GrReducedClip.cpp
@@ -17,6 +17,7 @@
#include "GrFixedClip.h"
#include "GrPathRenderer.h"
#include "GrStencilSettings.h"
+#include "GrStencilClip.h"
#include "GrStyle.h"
#include "GrUserStencilSettings.h"
#include "SkClipOpPriv.h"
@@ -695,52 +696,14 @@ bool GrReducedClip::drawAlphaClipMask(GrRenderTargetContext* rtc) const {
////////////////////////////////////////////////////////////////////////////////
// Create a 1-bit clip mask in the stencil buffer.
-class StencilClip final : public GrClip {
-public:
- StencilClip(const SkIRect& scissorRect, uint32_t clipStackID)
- : fFixedClip(scissorRect)
- , fClipStackID(clipStackID) {
- }
-
- const GrFixedClip& fixedClip() const { return fFixedClip; }
-
- void setWindowRectangles(const GrWindowRectangles& windows, GrWindowRectsState::Mode mode) {
- fFixedClip.setWindowRectangles(windows, mode);
- }
-
-private:
- bool quickContains(const SkRect&) const override {
- return false;
- }
- void getConservativeBounds(int width, int height, SkIRect* bounds, bool* iior) const override {
- fFixedClip.getConservativeBounds(width, height, bounds, iior);
- }
- bool isRRect(const SkRect& rtBounds, SkRRect* rr, GrAA*) const override {
- return false;
- }
- bool apply(GrContext* context, GrRenderTargetContext* renderTargetContext, bool useHWAA,
- bool hasUserStencilSettings, GrAppliedClip* out, SkRect* bounds) const override {
- if (!fFixedClip.apply(context, renderTargetContext, useHWAA, hasUserStencilSettings, out,
- bounds)) {
- return false;
- }
- out->addStencilClip(fClipStackID);
- return true;
- }
-
- GrFixedClip fFixedClip;
- uint32_t fClipStackID;
-
- typedef GrClip INHERITED;
-};
-
bool GrReducedClip::drawStencilClipMask(GrContext* context,
GrRenderTargetContext* renderTargetContext) const {
// We set the current clip to the bounds so that our recursive draws are scissored to them.
- StencilClip stencilClip(fScissor, this->maskGenID());
+ GrStencilClip stencilClip(fScissor, this->maskGenID());
if (!fWindowRects.empty()) {
- stencilClip.setWindowRectangles(fWindowRects, GrWindowRectsState::Mode::kExclusive);
+ stencilClip.fixedClip().setWindowRectangles(fWindowRects,
+ GrWindowRectsState::Mode::kExclusive);
}
bool initialState = InitialState::kAllIn == this->initialState();