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