| /* |
| * Copyright 2017 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkSGGeometryNode_DEFINED |
| #define SkSGGeometryNode_DEFINED |
| |
| #include "modules/sksg/include/SkSGNode.h" |
| |
| class SkCanvas; |
| class SkPaint; |
| class SkPath; |
| |
| namespace sksg { |
| |
| /** |
| * Base class for nodes which provide 'geometry' (as opposed to paint) |
| * for drawing. |
| * |
| * Think SkRect, SkPath, etc. |
| */ |
| class GeometryNode : public Node { |
| public: |
| void clip(SkCanvas*, bool antiAlias) const; |
| void draw(SkCanvas*, const SkPaint&) const; |
| |
| bool contains(const SkPoint&) const; |
| |
| SkPath asPath() const; |
| |
| protected: |
| GeometryNode(); |
| |
| virtual void onClip(SkCanvas*, bool antiAlias) const = 0; |
| |
| virtual void onDraw(SkCanvas*, const SkPaint&) const = 0; |
| |
| virtual bool onContains(const SkPoint&) const = 0; |
| |
| virtual SkPath onAsPath() const = 0; |
| |
| private: |
| friend class Draw; // wants to know the cached bounds. |
| |
| using INHERITED = Node; |
| }; |
| |
| } // namespace sksg |
| |
| #endif // SkSGGeometryNode_DEFINED |