diff options
-rw-r--r-- | BUILD.gn | 1 | ||||
-rw-r--r-- | experimental/sksg/geometry/SkSGPath.cpp | 25 | ||||
-rw-r--r-- | experimental/sksg/geometry/SkSGPath.h | 43 |
3 files changed, 69 insertions, 0 deletions
@@ -1369,6 +1369,7 @@ if (skia_enable_tools) { "experimental/sksg/SkSGPaintNode.cpp", "experimental/sksg/SkSGRenderNode.cpp", "experimental/sksg/effects/SkSGTransform.cpp", + "experimental/sksg/geometry/SkSGPath.cpp", "experimental/sksg/geometry/SkSGRect.cpp", "experimental/sksg/paint/SkSGColor.cpp", ] diff --git a/experimental/sksg/geometry/SkSGPath.cpp b/experimental/sksg/geometry/SkSGPath.cpp new file mode 100644 index 0000000000..8a1550a8f7 --- /dev/null +++ b/experimental/sksg/geometry/SkSGPath.cpp @@ -0,0 +1,25 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkSGPath.h" + +#include "SkCanvas.h" +#include "SkPaint.h" + +namespace sksg { + +Path::Path(const SkPath& path) : fPath(path) {} + +void Path::onDraw(SkCanvas* canvas, const SkPaint& paint) const { + canvas->drawPath(fPath, paint); +} + +SkRect Path::onComputeBounds() const { + return fPath.computeTightBounds(); +} + +} // namespace sksg diff --git a/experimental/sksg/geometry/SkSGPath.h b/experimental/sksg/geometry/SkSGPath.h new file mode 100644 index 0000000000..42c56188a2 --- /dev/null +++ b/experimental/sksg/geometry/SkSGPath.h @@ -0,0 +1,43 @@ +/* + * 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 SkSGPath_DEFINED +#define SkSGPath_DEFINED + +#include "SkSGGeometryNode.h" + +#include "SkPath.h" + +class SkCanvas; +class SkPaint; + +namespace sksg { + +/** + * Concrete Geometry node, wrapping an SkPath. + */ +class Path : public GeometryNode { +public: + static sk_sp<Path> Make() { return sk_sp<Path>(new Path(SkPath())); } + static sk_sp<Path> Make(const SkPath& r) { return sk_sp<Path>(new Path(r)); } + + SG_ATTRIBUTE(Path, SkPath, fPath) + +protected: + void onDraw(SkCanvas*, const SkPaint&) const override; + + SkRect onComputeBounds() const override; + +private: + explicit Path(const SkPath&); + + SkPath fPath; +}; + +} // namespace sksg + +#endif // SkSGPath_DEFINED |