1 /* 2 * Copyright 2019 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 SkSVGText_DEFINED 9 #define SkSVGText_DEFINED 10 11 #include "include/utils/SkTextUtils.h" 12 #include "modules/svg/include/SkSVGTransformableNode.h" 13 #include "modules/svg/include/SkSVGTypes.h" 14 15 class SkRRect; 16 17 class SkSVGText final : public SkSVGTransformableNode { 18 public: 19 ~SkSVGText() override = default; Make()20 static sk_sp<SkSVGText> Make() { 21 return sk_sp<SkSVGText>(new SkSVGText()); } 22 23 SVG_ATTR(X , SkSVGLength , SkSVGLength(0)) 24 SVG_ATTR(Y , SkSVGLength , SkSVGLength(0)) 25 SVG_ATTR(Text, SkSVGStringType, SkSVGStringType()) 26 27 protected: 28 void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override; 29 30 void onRender(const SkSVGRenderContext&) const override; 31 void appendChild(sk_sp<SkSVGNode>) override; 32 33 SkPath onAsPath(const SkSVGRenderContext&) const override; 34 35 void loadFont(); 36 37 private: 38 SkSVGText(); 39 40 SkFont resolveFont(const SkSVGRenderContext&) const; 41 42 using INHERITED = SkSVGTransformableNode; 43 }; 44 45 #endif // SkSVGText_DEFINED 46