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