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
15enum SkDrawTextBox_Properties {
16    foo = 100,
17    SK_PROPERTY(spacingAlign),
18    SK_PROPERTY(mode)
19};
20
21
22#if SK_USE_CONDENSED_INFO == 0
23
24const 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
35DEFINE_GET_MEMBER(SkDrawTextBox);
36
37SkDrawTextBox::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
46void 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
60bool SkDrawTextBox::getProperty(int index, SkScriptValue* value) const
61{
62    return this->INHERITED::getProperty(index, value);
63}
64
65bool SkDrawTextBox::setProperty(int index, SkScriptValue& scriptValue)
66{
67    return this->INHERITED::setProperty(index, scriptValue);
68}
69
70bool 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