1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2017 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker #include "modules/sksg/include/SkSGEffectNode.h" 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkAssert.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "modules/sksg/include/SkSGNode.h" 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker #include <utility> 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker class SkCanvas; 15*c8dee2aaSAndroid Build Coastguard Worker class SkMatrix; 16*c8dee2aaSAndroid Build Coastguard Worker struct SkPoint; 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker namespace sksg { 19*c8dee2aaSAndroid Build Coastguard Worker class InvalidationController; 20*c8dee2aaSAndroid Build Coastguard Worker EffectNode(sk_sp<RenderNode> child,uint32_t inval_traits)21*c8dee2aaSAndroid Build Coastguard WorkerEffectNode::EffectNode(sk_sp<RenderNode> child, uint32_t inval_traits) 22*c8dee2aaSAndroid Build Coastguard Worker : INHERITED(inval_traits) 23*c8dee2aaSAndroid Build Coastguard Worker , fChild(std::move(child)) { 24*c8dee2aaSAndroid Build Coastguard Worker this->observeInval(fChild); 25*c8dee2aaSAndroid Build Coastguard Worker } 26*c8dee2aaSAndroid Build Coastguard Worker ~EffectNode()27*c8dee2aaSAndroid Build Coastguard WorkerEffectNode::~EffectNode() { 28*c8dee2aaSAndroid Build Coastguard Worker this->unobserveInval(fChild); 29*c8dee2aaSAndroid Build Coastguard Worker } 30*c8dee2aaSAndroid Build Coastguard Worker onRender(SkCanvas * canvas,const RenderContext * ctx) const31*c8dee2aaSAndroid Build Coastguard Workervoid EffectNode::onRender(SkCanvas* canvas, const RenderContext* ctx) const { 32*c8dee2aaSAndroid Build Coastguard Worker fChild->render(canvas, ctx); 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker onNodeAt(const SkPoint & p) const35*c8dee2aaSAndroid Build Coastguard Workerconst RenderNode* EffectNode::onNodeAt(const SkPoint& p) const { 36*c8dee2aaSAndroid Build Coastguard Worker return fChild->nodeAt(p); 37*c8dee2aaSAndroid Build Coastguard Worker } 38*c8dee2aaSAndroid Build Coastguard Worker onRevalidate(InvalidationController * ic,const SkMatrix & ctm)39*c8dee2aaSAndroid Build Coastguard WorkerSkRect EffectNode::onRevalidate(InvalidationController* ic, const SkMatrix& ctm) { 40*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(this->hasInval()); 41*c8dee2aaSAndroid Build Coastguard Worker 42*c8dee2aaSAndroid Build Coastguard Worker return fChild->revalidate(ic, ctm); 43*c8dee2aaSAndroid Build Coastguard Worker } 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker } // namespace sksg 46