aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/svg/model/SkSVGUse.h
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2017-10-11 14:02:11 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-11 18:21:37 +0000
commit6a69c053ff244a11ae41002bfc09b54a5dc9ec68 (patch)
treea64fe55a386cf1a8a974855680d9e3832b0b06f5 /experimental/svg/model/SkSVGUse.h
parentc9472af8585be3c12691b968b667cde3ca83cae4 (diff)
[SVGDom] Initial <use> support
https://www.w3.org/TR/SVG/struct.html#UseElement Change-Id: Id85c2648255dcd4763bf11c7bdb8b1490286f1e4 Reviewed-on: https://skia-review.googlesource.com/58260 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'experimental/svg/model/SkSVGUse.h')
-rw-r--r--experimental/svg/model/SkSVGUse.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/experimental/svg/model/SkSVGUse.h b/experimental/svg/model/SkSVGUse.h
new file mode 100644
index 0000000000..4ae17e64bc
--- /dev/null
+++ b/experimental/svg/model/SkSVGUse.h
@@ -0,0 +1,47 @@
+/*
+ * 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 SkSVGUse_DEFINED
+#define SkSVGUse_DEFINED
+
+#include "SkSVGTransformableNode.h"
+#include "SkSVGTypes.h"
+
+/**
+ * Implements support for <use> (reference) elements.
+ * (https://www.w3.org/TR/SVG/struct.html#UseElement)
+ */
+class SkSVGUse final : public SkSVGTransformableNode {
+public:
+ ~SkSVGUse() override = default;
+
+ static sk_sp<SkSVGUse> Make() { return sk_sp<SkSVGUse>(new SkSVGUse()); }
+
+ void appendChild(sk_sp<SkSVGNode>) override;
+
+ void setHref(const SkSVGStringType&);
+ void setX(const SkSVGLength&);
+ void setY(const SkSVGLength&);
+
+protected:
+ void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
+
+ bool onPrepareToRender(SkSVGRenderContext*) const override;
+ void onRender(const SkSVGRenderContext&) const override;
+ SkPath onAsPath(const SkSVGRenderContext&) const override;
+
+private:
+ SkSVGUse();
+
+ SkSVGStringType fHref;
+ SkSVGLength fX = SkSVGLength(0);
+ SkSVGLength fY = SkSVGLength(0);
+
+ typedef SkSVGTransformableNode INHERITED;
+};
+
+#endif // SkSVGUse_DEFINED