Home | History | Annotate | Download | only in geometry
      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 SkSGPath_DEFINED
      9 #define SkSGPath_DEFINED
     10 
     11 #include "SkSGGeometryNode.h"
     12 
     13 #include "SkPath.h"
     14 
     15 class SkCanvas;
     16 class SkPaint;
     17 
     18 namespace sksg {
     19 
     20 /**
     21  * Concrete Geometry node, wrapping an SkPath.
     22  */
     23 class Path : public GeometryNode {
     24 public:
     25     static sk_sp<Path> Make()                { return sk_sp<Path>(new Path(SkPath())); }
     26     static sk_sp<Path> Make(const SkPath& r) { return sk_sp<Path>(new Path(r)); }
     27 
     28     SG_ATTRIBUTE(Path, SkPath, fPath)
     29 
     30 protected:
     31     void onClip(SkCanvas*, bool antiAlias) const override;
     32     void onDraw(SkCanvas*, const SkPaint&) const override;
     33 
     34     SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
     35     SkPath onAsPath() const override;
     36 
     37 private:
     38     explicit Path(const SkPath&);
     39 
     40     SkPath fPath;
     41 
     42     using INHERITED = GeometryNode;
     43 };
     44 
     45 } // namespace sksg
     46 
     47 #endif // SkSGPath_DEFINED
     48