1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * Copyright 2006 The Android Open Source Project 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * Use of this source code is governed by a BSD-style license that can be 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * found in the LICENSE file. 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkXMLAnimatorWriter.h" 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkAnimator.h" 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkAnimateMaker.h" 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkDisplayXMLParser.h" 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownSkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator) 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fParser = new SkDisplayXMLParser(*fAnimator->fMaker); 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownSkXMLAnimatorWriter::~SkXMLAnimatorWriter() { 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown delete fParser; 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length) 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fParser->onAddAttributeLen(name, value, length); 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid SkXMLAnimatorWriter::onEndElement() 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Elem* elem = getEnd(); 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fParser->onEndElement(elem->fName.c_str()); 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown doEnd(elem); 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length) 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown doStart(name, length); 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fParser->onStartElementLen(name, length); 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid SkXMLAnimatorWriter::writeHeader() 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifdef SK_DEBUG 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkCanvas.h" 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "SkPaint.h" 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid SkXMLAnimatorWriter::UnitTest(SkCanvas* canvas) 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown SkAnimator s; 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown SkXMLAnimatorWriter w(&s); 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.startElement("screenplay"); 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.startElement("animateField"); 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("field", "x1"); 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("id", "to100"); 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("from", "0"); 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("to", "100"); 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("dur", "1"); 61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.endElement(); 62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.startElement("event"); 63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("kind", "onLoad"); 64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.startElement("line"); 65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("id", "line"); 66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("x1", "-1"); 67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("y1", "20"); 68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("x2", "150"); 69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("y2", "40"); 70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.endElement(); 71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.startElement("apply"); 72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("animator", "to100"); 73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.addAttribute("scope", "line"); 74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.endElement(); 75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.endElement(); 76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown w.endElement(); 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown SkPaint paint; 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown canvas->drawColor(SK_ColorWHITE); 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown s.draw(canvas, &paint, 0); 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown