blob: 7a3251a26f458f3f2cefb059c63ea0d5dd57c5d3 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
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);
rmistry@google.comd6176b02012-08-23 18:14:13 +000050 if (mode == 0)
reed@android.com8a1c16f2008-12-17 15:59:43 +000051 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}