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