diff options
author | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:09:42 +0000 |
---|---|---|
committer | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:09:42 +0000 |
commit | ae2c20f398933a9e86c387dcc465ec0f71065ffc (patch) | |
tree | de668b1411e2ee0b4e49b6d8f8b68183134ac990 /skia/animator/SkDrawTextBox.cpp | |
parent | 09911bf300f1a419907a9412154760efd0b7abc3 (diff) | |
download | chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.zip chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.tar.gz chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.tar.bz2 |
Add skia to the repository.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/animator/SkDrawTextBox.cpp')
-rw-r--r-- | skia/animator/SkDrawTextBox.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/skia/animator/SkDrawTextBox.cpp b/skia/animator/SkDrawTextBox.cpp new file mode 100644 index 0000000..2c3108f --- /dev/null +++ b/skia/animator/SkDrawTextBox.cpp @@ -0,0 +1,90 @@ +/* libs/graphics/animator/SkDrawTextBox.cpp +** +** Copyright 2006, Google Inc. +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +#include "SkDrawTextBox.h" +#include "SkAnimateMaker.h" +#include "SkCanvas.h" +#include "SkPaint.h" + +enum SkDrawTextBox_Properties { + foo = 100, + SK_PROPERTY(spacingAlign), + SK_PROPERTY(mode) +}; + + +#if SK_USE_CONDENSED_INFO == 0 + +const SkMemberInfo SkDrawTextBox::fInfo[] = { + SK_MEMBER_INHERITED, + SK_MEMBER(mode, TextBoxMode), + SK_MEMBER_ALIAS(spacingAdd, fSpacingAdd, Float), + SK_MEMBER(spacingAlign, TextBoxAlign), + SK_MEMBER_ALIAS(spacingMul, fSpacingMul, Float), + SK_MEMBER_ALIAS(text, fText, String) +}; + +#endif + +DEFINE_GET_MEMBER(SkDrawTextBox); + +SkDrawTextBox::SkDrawTextBox() +{ + fSpacingMul = SK_Scalar1; + fSpacingAdd = 0; + spacingAlign = SkTextBox::kStart_SpacingAlign; + mode = SkTextBox::kLineBreak_Mode; +} + +#ifdef SK_DUMP_ENABLED +void SkDrawTextBox::dump(SkAnimateMaker* maker) +{ + dumpBase(maker); + dumpAttrs(maker); + if (mode == 0) + SkDebugf("mode=\"oneLine\" "); + if (spacingAlign == 1) + SkDebugf("spacingAlign=\"center\" "); + else if (spacingAlign == 2) + SkDebugf("spacingAlign=\"end\" "); + SkDebugf("/>\n"); +} +#endif + +bool SkDrawTextBox::getProperty(int index, SkScriptValue* value) const +{ + return this->INHERITED::getProperty(index, value); +} + +bool SkDrawTextBox::setProperty(int index, SkScriptValue& scriptValue) +{ + return this->INHERITED::setProperty(index, scriptValue); +} + +bool SkDrawTextBox::draw(SkAnimateMaker& maker) +{ + SkTextBox box; + box.setMode((SkTextBox::Mode) mode); + box.setSpacingAlign((SkTextBox::SpacingAlign) spacingAlign); + box.setBox(fRect); + box.setSpacing(fSpacingMul, fSpacingAdd); + SkBoundableAuto boundable(this, maker); + box.draw(maker.fCanvas, fText.c_str(), fText.size(), *maker.fPaint); + return false; +} + + |