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