Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright 2017 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkSGEffectNode_DEFINED
      9 #define SkSGEffectNode_DEFINED
     10 
     11 #include "SkSGRenderNode.h"
     12 
     13 namespace sksg {
     14 
     15 /**
     16  * Base class for nodes which apply some transformation when rendering
     17  * their descendants.
     18  *
     19  * This includes transforms, clipping, filters, etc.
     20  */
     21 class EffectNode : public RenderNode {
     22 protected:
     23     explicit EffectNode(sk_sp<RenderNode>, uint32_t inval_traits = 0);
     24     ~EffectNode() override;
     25 
     26     void onRender(SkCanvas*, const RenderContext*) const override;
     27     const RenderNode* onNodeAt(const SkPoint&)     const override;
     28 
     29     SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
     30 
     31     const sk_sp<RenderNode>& getChild() const { return fChild; }
     32 
     33 private:
     34     sk_sp<RenderNode> fChild;
     35 
     36     typedef RenderNode INHERITED;
     37 };
     38 
     39 } // namespace sksg
     40 
     41 #endif // SkSGEffectNode_DEFINED
     42