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