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 15SkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator) 16{ 17 fParser = new SkDisplayXMLParser(*fAnimator->fMaker); 18} 19 20SkXMLAnimatorWriter::~SkXMLAnimatorWriter() { 21 delete fParser; 22} 23 24void SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length) 25{ 26 fParser->onAddAttributeLen(name, value, length); 27} 28 29void SkXMLAnimatorWriter::onEndElement() 30{ 31 Elem* elem = getEnd(); 32 fParser->onEndElement(elem->fName.c_str()); 33 doEnd(elem); 34} 35 36void SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length) 37{ 38 doStart(name, length); 39 fParser->onStartElementLen(name, length); 40} 41 42void SkXMLAnimatorWriter::writeHeader() 43{ 44} 45 46#ifdef SK_DEBUG 47#include "SkCanvas.h" 48#include "SkPaint.h" 49 50void 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