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 29 SkTextToPath::SkTextToPath() : paint(nullptr), path(nullptr), text(nullptr) { 30 } 31 32 bool SkTextToPath::draw(SkAnimateMaker& maker) { 33 path->draw(maker); 34 return false; 35 } 36 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