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