11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDisplayXMLParser_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDisplayXMLParser_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkIntArray.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTDict.h" 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayType.h" 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkXMLParser.h" 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkAnimateMaker; 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayable; 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayXMLParserError : public SkXMLParserError { 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project enum ErrorCode { 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kApplyScopesItself = kUnknownError + 1, 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kDisplayTreeTooDeep, 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kElementMissingParent, 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kElementTypeNotAllowedInParent, 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorAddingDataToPost, 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorAddingToMatrix, 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorAddingToPaint, 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorAddingToPath, 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorInAttributeValue, 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kErrorInScript, 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kExpectedMovie, 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kFieldNotInTarget, 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientOffsetsDontMatchColors, 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientOffsetsMustBeNoMoreThanOne, 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientOffsetsMustEndWithOne, 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientOffsetsMustIncrease, 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientOffsetsMustStartWithZero, 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kGradientPointsLengthMustBeFour, 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kInInclude, 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kInMovie, 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kIncludeNameUnknownOrMissing, 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kIndexOutOfRange, 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kMovieNameUnknownOrMissing, 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kNoParentAvailable, 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kParentElementCantContain, 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kSaveLayerNeedsBounds, 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kTargetIDNotFound, 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kUnexpectedType 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project }; 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual ~SkDisplayXMLParserError(); 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void getErrorString(SkString* str) const; 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setCode(ErrorCode code) { INHERITED::setCode((INHERITED::ErrorCode) code); } 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setInnerError(SkAnimateMaker* maker, const SkString& str); 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkXMLParserError INHERITED; 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkDisplayXMLParser; 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayXMLParser : public SkXMLParser { 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayXMLParser(SkAnimateMaker& maker); 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual ~SkDisplayXMLParser(); 650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected: 660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool onAddAttribute(const char name[], const char value[]); 670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool onAddAttributeLen(const char name[], const char value[], size_t len); 680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool onEndElement(const char elem[]); 690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool onStartElement(const char elem[]); 700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool onStartElementLen(const char elem[], size_t len); 710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project struct Parent { 730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayable* fDisplayable; 740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes fType; 750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project }; 760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkTDArray<Parent> fParents; 770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayXMLParser& operator= (const SkDisplayXMLParser& ); 780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayXMLParserError* getError() { return (SkDisplayXMLParserError*) fError; } 790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SkMemberInfo* searchContainer(const SkMemberInfo* , 800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int infoCount); 810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkAnimateMaker& fMaker; 820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkBool fInInclude; 830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkBool fInSkia; 840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // local state between onStartElement and onAddAttribute 850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayable* fCurrDisplayable; 860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes fCurrType; 870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkXMLAnimatorWriter; 880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkXMLParser INHERITED; 890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkDisplayXMLParser_DEFINED 920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 94