8#ifndef SkRasterClipStack_DEFINED
9#define SkRasterClipStack_DEFINED
20 , fDisableAA(
SkScan::PathRequiresTiling(fRootBounds)) {
29 Rec& rec = fStack.
back();
31 rec.fRC.setRect(fRootBounds);
39 fStack.
back().fDeferredCount += 1;
46 if (--fStack.
back().fDeferredCount < 0) {
54 this->writable_rc().op(rect, ctm, op, this->finalAA(aa));
59 this->writable_rc().op(rrect, ctm, op, this->finalAA(aa));
64 this->writable_rc().op(path, ctm, op, this->finalAA(aa));
69 this->writable_rc().op(std::move(sh));
74 this->writable_rc().op(rgn, op);
81 this->writable_rc().setEmpty();
83 this->writable_rc().setRect(devRect);
113 if (fStack.
back().fDeferredCount > 0) {
114 fStack.
back().fDeferredCount -= 1;
117 return fStack.
back().fRC;
120 bool finalAA(
bool aa)
const {
return aa && !fDisableAA; }
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
const SkRect & getBounds() const
void setNewSize(int w, int h)
void clipShader(sk_sp< SkShader > sh)
void clipPath(const SkMatrix &ctm, const SkPath &path, SkClipOp op, bool aa)
void replaceClip(const SkIRect &rect)
void clipRegion(const SkRegion &rgn, SkClipOp op)
const SkRasterClip & rc() const
SkRasterClipStack(int width, int height)
void clipRect(const SkMatrix &ctm, const SkRect &rect, SkClipOp op, bool aa)
void clipRRect(const SkMatrix &ctm, const SkRRect &rrect, SkClipOp op, bool aa)
T & emplace_back(Args &&... args)
bool intersect(const SkIRect &r)
void setXYWH(int32_t x, int32_t y, int32_t width, int32_t height)
bool contains(int32_t x, int32_t y) const