1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/animator/SkDrawTextBox.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,80 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2006 The Android Open Source Project 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 + 1.12 + 1.13 +#include "SkDrawTextBox.h" 1.14 +#include "SkAnimateMaker.h" 1.15 +#include "SkCanvas.h" 1.16 +#include "SkPaint.h" 1.17 + 1.18 +enum SkDrawTextBox_Properties { 1.19 + foo = 100, 1.20 + SK_PROPERTY(spacingAlign), 1.21 + SK_PROPERTY(mode) 1.22 +}; 1.23 + 1.24 + 1.25 +#if SK_USE_CONDENSED_INFO == 0 1.26 + 1.27 +const SkMemberInfo SkDrawTextBox::fInfo[] = { 1.28 + SK_MEMBER_INHERITED, 1.29 + SK_MEMBER(mode, TextBoxMode), 1.30 + SK_MEMBER_ALIAS(spacingAdd, fSpacingAdd, Float), 1.31 + SK_MEMBER(spacingAlign, TextBoxAlign), 1.32 + SK_MEMBER_ALIAS(spacingMul, fSpacingMul, Float), 1.33 + SK_MEMBER_ALIAS(text, fText, String) 1.34 +}; 1.35 + 1.36 +#endif 1.37 + 1.38 +DEFINE_GET_MEMBER(SkDrawTextBox); 1.39 + 1.40 +SkDrawTextBox::SkDrawTextBox() 1.41 +{ 1.42 + fSpacingMul = SK_Scalar1; 1.43 + fSpacingAdd = 0; 1.44 + spacingAlign = SkTextBox::kStart_SpacingAlign; 1.45 + mode = SkTextBox::kLineBreak_Mode; 1.46 +} 1.47 + 1.48 +#ifdef SK_DUMP_ENABLED 1.49 +void SkDrawTextBox::dump(SkAnimateMaker* maker) 1.50 +{ 1.51 + dumpBase(maker); 1.52 + dumpAttrs(maker); 1.53 + if (mode == 0) 1.54 + SkDebugf("mode=\"oneLine\" "); 1.55 + if (spacingAlign == 1) 1.56 + SkDebugf("spacingAlign=\"center\" "); 1.57 + else if (spacingAlign == 2) 1.58 + SkDebugf("spacingAlign=\"end\" "); 1.59 + SkDebugf("/>\n"); 1.60 +} 1.61 +#endif 1.62 + 1.63 +bool SkDrawTextBox::getProperty(int index, SkScriptValue* value) const 1.64 +{ 1.65 + return this->INHERITED::getProperty(index, value); 1.66 +} 1.67 + 1.68 +bool SkDrawTextBox::setProperty(int index, SkScriptValue& scriptValue) 1.69 +{ 1.70 + return this->INHERITED::setProperty(index, scriptValue); 1.71 +} 1.72 + 1.73 +bool SkDrawTextBox::draw(SkAnimateMaker& maker) 1.74 +{ 1.75 + SkTextBox box; 1.76 + box.setMode((SkTextBox::Mode) mode); 1.77 + box.setSpacingAlign((SkTextBox::SpacingAlign) spacingAlign); 1.78 + box.setBox(fRect); 1.79 + box.setSpacing(fSpacingMul, fSpacingAdd); 1.80 + SkBoundableAuto boundable(this, maker); 1.81 + box.draw(maker.fCanvas, fText.c_str(), fText.size(), *maker.fPaint); 1.82 + return false; 1.83 +}