|  |  | 
|  | /* | 
|  | * Copyright 2006 The Android Open Source Project | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  |  | 
|  | #include "SkDrawTextBox.h" | 
|  | #include "SkAnimateMaker.h" | 
|  | #include "SkCanvas.h" | 
|  | #include "SkPaint.h" | 
|  |  | 
|  | enum SkDrawTextBox_Properties { | 
|  | foo = 100, | 
|  | SK_PROPERTY(spacingAlign), | 
|  | SK_PROPERTY(mode) | 
|  | }; | 
|  |  | 
|  |  | 
|  | #if SK_USE_CONDENSED_INFO == 0 | 
|  |  | 
|  | const SkMemberInfo SkDrawTextBox::fInfo[] = { | 
|  | SK_MEMBER_INHERITED, | 
|  | SK_MEMBER(mode, TextBoxMode), | 
|  | SK_MEMBER_ALIAS(spacingAdd, fSpacingAdd, Float), | 
|  | SK_MEMBER(spacingAlign, TextBoxAlign), | 
|  | SK_MEMBER_ALIAS(spacingMul, fSpacingMul, Float), | 
|  | SK_MEMBER_ALIAS(text, fText, String) | 
|  | }; | 
|  |  | 
|  | #endif | 
|  |  | 
|  | DEFINE_GET_MEMBER(SkDrawTextBox); | 
|  |  | 
|  | SkDrawTextBox::SkDrawTextBox() | 
|  | { | 
|  | fSpacingMul     = SK_Scalar1; | 
|  | fSpacingAdd     = 0; | 
|  | spacingAlign    = SkTextBox::kStart_SpacingAlign; | 
|  | mode            = SkTextBox::kLineBreak_Mode; | 
|  | } | 
|  |  | 
|  | #ifdef SK_DUMP_ENABLED | 
|  | void SkDrawTextBox::dump(SkAnimateMaker* maker) | 
|  | { | 
|  | dumpBase(maker); | 
|  | dumpAttrs(maker); | 
|  | if (mode == 0) | 
|  | SkDebugf("mode=\"oneLine\" "); | 
|  | if (spacingAlign == 1) | 
|  | SkDebugf("spacingAlign=\"center\" "); | 
|  | else if (spacingAlign == 2) | 
|  | SkDebugf("spacingAlign=\"end\" "); | 
|  | SkDebugf("/>\n"); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | bool SkDrawTextBox::getProperty(int index, SkScriptValue* value) const | 
|  | { | 
|  | return this->INHERITED::getProperty(index, value); | 
|  | } | 
|  |  | 
|  | bool SkDrawTextBox::setProperty(int index, SkScriptValue& scriptValue) | 
|  | { | 
|  | return this->INHERITED::setProperty(index, scriptValue); | 
|  | } | 
|  |  | 
|  | bool SkDrawTextBox::draw(SkAnimateMaker& maker) | 
|  | { | 
|  | SkTextBox   box; | 
|  | box.setMode((SkTextBox::Mode) mode); | 
|  | box.setSpacingAlign((SkTextBox::SpacingAlign) spacingAlign); | 
|  | box.setBox(fRect); | 
|  | box.setSpacing(fSpacingMul, fSpacingAdd); | 
|  | SkBoundableAuto boundable(this, maker); | 
|  | box.draw(maker.fCanvas, fText.c_str(), fText.size(), *maker.fPaint); | 
|  | return false; | 
|  | } |