blob: b26bc7337c05cd30680e4918b3659f99478ead5d [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/animator/SkXMLAnimatorWriter.cpp
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#include "SkXMLAnimatorWriter.h"
19#include "SkAnimator.h"
20#include "SkAnimateMaker.h"
21#include "SkDisplayXMLParser.h"
22
23SkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator)
24{
25 fParser = new SkDisplayXMLParser(*fAnimator->fMaker);
26}
27
28SkXMLAnimatorWriter::~SkXMLAnimatorWriter() {
29 delete fParser;
30}
31
32void SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length)
33{
34 fParser->onAddAttributeLen(name, value, length);
35}
36
37void SkXMLAnimatorWriter::onEndElement()
38{
39 Elem* elem = getEnd();
40 fParser->onEndElement(elem->fName.c_str());
41 doEnd(elem);
42}
43
44void SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length)
45{
46 doStart(name, length);
47 fParser->onStartElementLen(name, length);
48}
49
50void SkXMLAnimatorWriter::writeHeader()
51{
52}
53
54#ifdef SK_DEBUG
55#include "SkCanvas.h"
56#include "SkPaint.h"
57
58void SkXMLAnimatorWriter::UnitTest(SkCanvas* canvas)
59{
60 SkAnimator s;
61 SkXMLAnimatorWriter w(&s);
62 w.startElement("screenplay");
63 w.startElement("animateField");
64 w.addAttribute("field", "x1");
65 w.addAttribute("id", "to100");
66 w.addAttribute("from", "0");
67 w.addAttribute("to", "100");
68 w.addAttribute("dur", "1");
69 w.endElement();
70 w.startElement("event");
71 w.addAttribute("kind", "onLoad");
72 w.startElement("line");
73 w.addAttribute("id", "line");
74 w.addAttribute("x1", "-1");
75 w.addAttribute("y1", "20");
76 w.addAttribute("x2", "150");
77 w.addAttribute("y2", "40");
78 w.endElement();
79 w.startElement("apply");
80 w.addAttribute("animator", "to100");
81 w.addAttribute("scope", "line");
82 w.endElement();
83 w.endElement();
84 w.endElement();
85 SkPaint paint;
86 canvas->drawColor(SK_ColorWHITE);
87 s.draw(canvas, &paint, 0);
88}
89
90#endif
91