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 "SkXMLAnimatorWriter.h"
     11 #include "SkAnimator.h"
     12 #include "SkAnimateMaker.h"
     13 #include "SkDisplayXMLParser.h"
     14 
     15 SkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator)
     16 {
     17     fParser = new SkDisplayXMLParser(*fAnimator->fMaker);
     18 }
     19 
     20 SkXMLAnimatorWriter::~SkXMLAnimatorWriter() {
     21     delete fParser;
     22 }
     23 
     24 void SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length)
     25 {
     26     fParser->onAddAttributeLen(name, value, length);
     27 }
     28 
     29 void SkXMLAnimatorWriter::onEndElement()
     30 {
     31     Elem* elem = getEnd();
     32     fParser->onEndElement(elem->fName.c_str());
     33     doEnd(elem);
     34 }
     35 
     36 void SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length)
     37 {
     38     doStart(name, length);
     39     fParser->onStartElementLen(name, length);
     40 }
     41 
     42 void SkXMLAnimatorWriter::writeHeader()
     43 {
     44 }
     45 
     46 #ifdef SK_DEBUG
     47 #include "SkCanvas.h"
     48 #include "SkPaint.h"
     49 
     50 void SkXMLAnimatorWriter::UnitTest(SkCanvas* canvas)
     51 {
     52     SkAnimator  s;
     53     SkXMLAnimatorWriter     w(&s);
     54     w.startElement("screenplay");
     55         w.startElement("animateField");
     56             w.addAttribute("field", "x1");
     57             w.addAttribute("id", "to100");
     58             w.addAttribute("from", "0");
     59             w.addAttribute("to", "100");
     60             w.addAttribute("dur", "1");
     61         w.endElement();
     62         w.startElement("event");
     63             w.addAttribute("kind", "onLoad");
     64             w.startElement("line");
     65                 w.addAttribute("id", "line");
     66                 w.addAttribute("x1", "-1");
     67                 w.addAttribute("y1", "20");
     68                 w.addAttribute("x2", "150");
     69                 w.addAttribute("y2", "40");
     70             w.endElement();
     71             w.startElement("apply");
     72                 w.addAttribute("animator", "to100");
     73                 w.addAttribute("scope", "line");
     74             w.endElement();
     75         w.endElement();
     76     w.endElement();
     77     SkPaint paint;
     78     canvas->drawColor(SK_ColorWHITE);
     79     s.draw(canvas, &paint, 0);
     80 }
     81 
     82 #endif
     83 
     84