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