aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/sksg/effects/SkSGMaskEffect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/sksg/effects/SkSGMaskEffect.cpp')
-rw-r--r--experimental/sksg/effects/SkSGMaskEffect.cpp54
1 files changed, 0 insertions, 54 deletions
diff --git a/experimental/sksg/effects/SkSGMaskEffect.cpp b/experimental/sksg/effects/SkSGMaskEffect.cpp
deleted file mode 100644
index 16e4c0dd8d..0000000000
--- a/experimental/sksg/effects/SkSGMaskEffect.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2018 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkSGMaskEffect.h"
-
-#include "SkCanvas.h"
-
-namespace sksg {
-
-MaskEffect::MaskEffect(sk_sp<RenderNode> child, sk_sp<RenderNode> mask, Mode mode)
- : INHERITED(std::move(child))
- , fMaskNode(std::move(mask))
- , fMaskMode(mode) {
- this->observeInval(fMaskNode);
-}
-
-MaskEffect::~MaskEffect() {
- this->unobserveInval(fMaskNode);
-}
-
-void MaskEffect::onRender(SkCanvas* canvas) const {
- if (this->bounds().isEmpty())
- return;
-
- SkAutoCanvasRestore acr(canvas, false);
-
- canvas->saveLayer(this->bounds(), nullptr);
- fMaskNode->render(canvas);
-
-
- SkPaint p;
- p.setBlendMode(fMaskMode == Mode::kNormal ? SkBlendMode::kSrcIn : SkBlendMode::kSrcOut);
- canvas->saveLayer(this->bounds(), &p);
-
- this->INHERITED::onRender(canvas);
-}
-
-
-SkRect MaskEffect::onRevalidate(InvalidationController* ic, const SkMatrix& ctm) {
- SkASSERT(this->hasInval());
-
- const auto maskBounds = fMaskNode->revalidate(ic, ctm);
- auto childBounds = this->INHERITED::onRevalidate(ic, ctm);
-
- return (fMaskMode == Mode::kInvert || childBounds.intersect(maskBounds))
- ? childBounds
- : SkRect::MakeEmpty();
-}
-
-} // namespace sksg