Loading libs/hwui/DisplayListOps.in +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ X(ClipPath) X(ClipRect) X(ClipRRect) X(ClipRegion) X(ClipShader) X(ResetClip) X(DrawPaint) X(DrawBehind) Loading libs/hwui/RecordingCanvas.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,13 @@ struct ClipRegion final : Op { SkClipOp op; void draw(SkCanvas* c, const SkMatrix&) const { c->clipRegion(region, op); } }; struct ClipShader final : Op { static const auto kType = Type::ClipShader; ClipShader(const sk_sp<SkShader>& shader, SkClipOp op) : shader(shader), op(op) {} sk_sp<SkShader> shader; SkClipOp op; void draw(SkCanvas* c, const SkMatrix&) const { c->clipShader(shader, op); } }; struct ResetClip final : Op { static const auto kType = Type::ResetClip; ResetClip() {} Loading Loading @@ -822,6 +829,9 @@ void DisplayListData::clipRRect(const SkRRect& rrect, SkClipOp op, bool aa) { void DisplayListData::clipRegion(const SkRegion& region, SkClipOp op) { this->push<ClipRegion>(0, region, op); } void DisplayListData::clipShader(const sk_sp<SkShader>& shader, SkClipOp op) { this->push<ClipShader>(0, shader, op); } void DisplayListData::resetClip() { this->push<ResetClip>(0); } Loading Loading @@ -1134,6 +1144,11 @@ void RecordingCanvas::onClipRegion(const SkRegion& region, SkClipOp op) { fDL->clipRegion(region, op); this->INHERITED::onClipRegion(region, op); } void RecordingCanvas::onClipShader(sk_sp<SkShader> shader, SkClipOp op) { setClipMayBeComplex(); fDL->clipShader(shader, op); this->INHERITED::onClipShader(shader, op); } void RecordingCanvas::onResetClip() { // This is part of "replace op" emulation, but rely on the following intersection // clip to potentially mark the clip as complex. If we are already complex, we do Loading libs/hwui/RecordingCanvas.h +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ private: void translateZ(SkScalar); void clipPath(const SkPath&, SkClipOp, bool aa); void clipShader(const sk_sp<SkShader>& shader, SkClipOp); void clipRect(const SkRect&, SkClipOp, bool aa); void clipRRect(const SkRRect&, SkClipOp, bool aa); void clipRegion(const SkRegion&, SkClipOp); Loading Loading @@ -216,6 +217,7 @@ public: void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; void onClipShader(sk_sp<SkShader>, SkClipOp) override; void onClipRegion(const SkRegion&, SkClipOp) override; void onResetClip() override; Loading Loading
libs/hwui/DisplayListOps.in +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ X(ClipPath) X(ClipRect) X(ClipRRect) X(ClipRegion) X(ClipShader) X(ResetClip) X(DrawPaint) X(DrawBehind) Loading
libs/hwui/RecordingCanvas.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,13 @@ struct ClipRegion final : Op { SkClipOp op; void draw(SkCanvas* c, const SkMatrix&) const { c->clipRegion(region, op); } }; struct ClipShader final : Op { static const auto kType = Type::ClipShader; ClipShader(const sk_sp<SkShader>& shader, SkClipOp op) : shader(shader), op(op) {} sk_sp<SkShader> shader; SkClipOp op; void draw(SkCanvas* c, const SkMatrix&) const { c->clipShader(shader, op); } }; struct ResetClip final : Op { static const auto kType = Type::ResetClip; ResetClip() {} Loading Loading @@ -822,6 +829,9 @@ void DisplayListData::clipRRect(const SkRRect& rrect, SkClipOp op, bool aa) { void DisplayListData::clipRegion(const SkRegion& region, SkClipOp op) { this->push<ClipRegion>(0, region, op); } void DisplayListData::clipShader(const sk_sp<SkShader>& shader, SkClipOp op) { this->push<ClipShader>(0, shader, op); } void DisplayListData::resetClip() { this->push<ResetClip>(0); } Loading Loading @@ -1134,6 +1144,11 @@ void RecordingCanvas::onClipRegion(const SkRegion& region, SkClipOp op) { fDL->clipRegion(region, op); this->INHERITED::onClipRegion(region, op); } void RecordingCanvas::onClipShader(sk_sp<SkShader> shader, SkClipOp op) { setClipMayBeComplex(); fDL->clipShader(shader, op); this->INHERITED::onClipShader(shader, op); } void RecordingCanvas::onResetClip() { // This is part of "replace op" emulation, but rely on the following intersection // clip to potentially mark the clip as complex. If we are already complex, we do Loading
libs/hwui/RecordingCanvas.h +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,7 @@ private: void translateZ(SkScalar); void clipPath(const SkPath&, SkClipOp, bool aa); void clipShader(const sk_sp<SkShader>& shader, SkClipOp); void clipRect(const SkRect&, SkClipOp, bool aa); void clipRRect(const SkRRect&, SkClipOp, bool aa); void clipRegion(const SkRegion&, SkClipOp); Loading Loading @@ -216,6 +217,7 @@ public: void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; void onClipShader(sk_sp<SkShader>, SkClipOp) override; void onClipRegion(const SkRegion&, SkClipOp) override; void onResetClip() override; Loading