• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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