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 SkSGRenderNode_DEFINED
9 #define SkSGRenderNode_DEFINED
10 
11 #include "SkSGNode.h"
12 
13 class SkCanvas;
14 
15 namespace sksg {
16 
17 /**
18  * Base class for nodes which can render to a canvas.
19  */
20 class RenderNode : public Node {
21 public:
22     // Render the node and its descendants to the canvas.
23     void render(SkCanvas*) const;
24 
25 protected:
26     RenderNode();
27 
28     virtual void onRender(SkCanvas*) const = 0;
29 
30 private:
31     typedef Node INHERITED;
32 };
33 
34 } // namespace sksg
35 
36 #endif // SkSGRenderNode_DEFINED
37