180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkXMLAnimatorWriter.h" 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkAnimator.h" 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkAnimateMaker.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDisplayXMLParser.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator) 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fParser = new SkDisplayXMLParser(*fAnimator->fMaker); 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLAnimatorWriter::~SkXMLAnimatorWriter() { 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru delete fParser; 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length) 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fParser->onAddAttributeLen(name, value, length); 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLAnimatorWriter::onEndElement() 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Elem* elem = getEnd(); 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fParser->onEndElement(elem->fName.c_str()); 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru doEnd(elem); 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length) 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru doStart(name, length); 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fParser->onStartElementLen(name, length); 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLAnimatorWriter::writeHeader() 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DEBUG 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkCanvas.h" 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkPaint.h" 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLAnimatorWriter::UnitTest(SkCanvas* canvas) 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{ 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkAnimator s; 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkXMLAnimatorWriter w(&s); 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.startElement("screenplay"); 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.startElement("animateField"); 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("field", "x1"); 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("id", "to100"); 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("from", "0"); 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("to", "100"); 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("dur", "1"); 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.endElement(); 6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.startElement("event"); 6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("kind", "onLoad"); 6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.startElement("line"); 6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("id", "line"); 6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("x1", "-1"); 6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("y1", "20"); 6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("x2", "150"); 6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("y2", "40"); 7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.endElement(); 7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.startElement("apply"); 7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("animator", "to100"); 7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.addAttribute("scope", "line"); 7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.endElement(); 7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.endElement(); 7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru w.endElement(); 7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkPaint paint; 7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru canvas->drawColor(SK_ColorWHITE); 7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru s.draw(canvas, &paint, 0); 8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 83