• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* 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 
SkXMLAnimatorWriter(SkAnimator * animator)23 SkXMLAnimatorWriter::SkXMLAnimatorWriter(SkAnimator* animator) : fAnimator(animator)
24 {
25     fParser = new SkDisplayXMLParser(*fAnimator->fMaker);
26 }
27 
~SkXMLAnimatorWriter()28 SkXMLAnimatorWriter::~SkXMLAnimatorWriter() {
29     delete fParser;
30 }
31 
onAddAttributeLen(const char name[],const char value[],size_t length)32 void SkXMLAnimatorWriter::onAddAttributeLen(const char name[], const char value[], size_t length)
33 {
34     fParser->onAddAttributeLen(name, value, length);
35 }
36 
onEndElement()37 void SkXMLAnimatorWriter::onEndElement()
38 {
39     Elem* elem = getEnd();
40     fParser->onEndElement(elem->fName.c_str());
41     doEnd(elem);
42 }
43 
onStartElementLen(const char name[],size_t length)44 void SkXMLAnimatorWriter::onStartElementLen(const char name[], size_t length)
45 {
46     doStart(name, length);
47     fParser->onStartElementLen(name, length);
48 }
49 
writeHeader()50 void SkXMLAnimatorWriter::writeHeader()
51 {
52 }
53 
54 #ifdef SK_DEBUG
55 #include "SkCanvas.h"
56 #include "SkPaint.h"
57 
UnitTest(SkCanvas * canvas)58 void 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 
92