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 "SkDrawTextBox.h"
11 #include "SkAnimateMaker.h"
12 #include "SkCanvas.h"
13 #include "SkPaint.h"
14
15 enum SkDrawTextBox_Properties {
16 foo = 100,
17 SK_PROPERTY(spacingAlign),
18 SK_PROPERTY(mode)
19 };
20
21
22 #if SK_USE_CONDENSED_INFO == 0
23
24 const SkMemberInfo SkDrawTextBox::fInfo[] = {
25 SK_MEMBER_INHERITED,
26 SK_MEMBER(mode, TextBoxMode),
27 SK_MEMBER_ALIAS(spacingAdd, fSpacingAdd, Float),
28 SK_MEMBER(spacingAlign, TextBoxAlign),
29 SK_MEMBER_ALIAS(spacingMul, fSpacingMul, Float),
30 SK_MEMBER_ALIAS(text, fText, String)
31 };
32
33 #endif
34
35 DEFINE_GET_MEMBER(SkDrawTextBox);
36
SkDrawTextBox()37 SkDrawTextBox::SkDrawTextBox()
38 {
39 fSpacingMul = SK_Scalar1;
40 fSpacingAdd = 0;
41 spacingAlign = SkTextBox::kStart_SpacingAlign;
42 mode = SkTextBox::kLineBreak_Mode;
43 }
44
45 #ifdef SK_DUMP_ENABLED
dump(SkAnimateMaker * maker)46 void SkDrawTextBox::dump(SkAnimateMaker* maker)
47 {
48 dumpBase(maker);
49 dumpAttrs(maker);
50 if (mode == 0)
51 SkDebugf("mode=\"oneLine\" ");
52 if (spacingAlign == 1)
53 SkDebugf("spacingAlign=\"center\" ");
54 else if (spacingAlign == 2)
55 SkDebugf("spacingAlign=\"end\" ");
56 SkDebugf("/>\n");
57 }
58 #endif
59
getProperty(int index,SkScriptValue * value) const60 bool SkDrawTextBox::getProperty(int index, SkScriptValue* value) const
61 {
62 return this->INHERITED::getProperty(index, value);
63 }
64
setProperty(int index,SkScriptValue & scriptValue)65 bool SkDrawTextBox::setProperty(int index, SkScriptValue& scriptValue)
66 {
67 return this->INHERITED::setProperty(index, scriptValue);
68 }
69
draw(SkAnimateMaker & maker)70 bool SkDrawTextBox::draw(SkAnimateMaker& maker)
71 {
72 SkTextBox box;
73 box.setMode((SkTextBox::Mode) mode);
74 box.setSpacingAlign((SkTextBox::SpacingAlign) spacingAlign);
75 box.setBox(fRect);
76 box.setSpacing(fSpacingMul, fSpacingAdd);
77 SkBoundableAuto boundable(this, maker);
78 box.draw(maker.fCanvas, fText.c_str(), fText.size(), *maker.fPaint);
79 return false;
80 }
81
82
83