1
2 /*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10 #include "SkTextToPath.h"
11 #include "SkAnimateMaker.h"
12 #include "SkDrawPaint.h"
13 #include "SkDrawPath.h"
14 #include "SkDrawText.h"
15 #include "SkPaint.h"
16
17 #if SK_USE_CONDENSED_INFO == 0
18
19 const SkMemberInfo SkTextToPath::fInfo[] = {
20 SK_MEMBER(paint, Paint),
21 SK_MEMBER(path, Path),
22 SK_MEMBER(text, Text)
23 };
24
25 #endif
26
27 DEFINE_GET_MEMBER(SkTextToPath);
28
SkTextToPath()29 SkTextToPath::SkTextToPath() : paint(nullptr), path(nullptr), text(nullptr) {
30 }
31
draw(SkAnimateMaker & maker)32 bool SkTextToPath::draw(SkAnimateMaker& maker) {
33 path->draw(maker);
34 return false;
35 }
36
onEndElement(SkAnimateMaker & maker)37 void SkTextToPath::onEndElement(SkAnimateMaker& maker) {
38 if (paint == nullptr || path == nullptr || text == nullptr) {
39 // !!! add error message here
40 maker.setErrorCode(SkDisplayXMLParserError::kErrorInAttributeValue);
41 return;
42 }
43 SkPaint realPaint;
44 paint->setupPaint(&realPaint);
45 realPaint.getTextPath(text->getText(), text->getSize(), text->x,
46 text->y, &path->getPath());
47 }
48