diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/src/animator/SkDisplayXMLParser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/src/animator/SkDisplayXMLParser.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,91 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkDisplayXMLParser_DEFINED +#define SkDisplayXMLParser_DEFINED + +#include "SkIntArray.h" +#include "SkTDict.h" +#include "SkDisplayType.h" +#include "SkXMLParser.h" + +class SkAnimateMaker; +class SkDisplayable; + +class SkDisplayXMLParserError : public SkXMLParserError { +public: + enum ErrorCode { + kApplyScopesItself = kUnknownError + 1, + kDisplayTreeTooDeep, + kElementMissingParent, + kElementTypeNotAllowedInParent, + kErrorAddingDataToPost, + kErrorAddingToMatrix, + kErrorAddingToPaint, + kErrorAddingToPath, + kErrorInAttributeValue, + kErrorInScript, + kExpectedMovie, + kFieldNotInTarget, + kGradientOffsetsDontMatchColors, + kGradientOffsetsMustBeNoMoreThanOne, + kGradientOffsetsMustEndWithOne, + kGradientOffsetsMustIncrease, + kGradientOffsetsMustStartWithZero, + kGradientPointsLengthMustBeFour, + kInInclude, + kInMovie, + kIncludeNameUnknownOrMissing, + kIndexOutOfRange, + kMovieNameUnknownOrMissing, + kNoParentAvailable, + kParentElementCantContain, + kSaveLayerNeedsBounds, + kTargetIDNotFound, + kUnexpectedType + }; + virtual ~SkDisplayXMLParserError(); + virtual void getErrorString(SkString* str) const; + void setCode(ErrorCode code) { INHERITED::setCode((INHERITED::ErrorCode) code); } + void setInnerError(SkAnimateMaker* maker, const SkString& str); + typedef SkXMLParserError INHERITED; + friend class SkDisplayXMLParser; +}; + +class SkDisplayXMLParser : public SkXMLParser { +public: + SkDisplayXMLParser(SkAnimateMaker& maker); + virtual ~SkDisplayXMLParser(); +protected: + virtual bool onAddAttribute(const char name[], const char value[]); + bool onAddAttributeLen(const char name[], const char value[], size_t len); + virtual bool onEndElement(const char elem[]); + virtual bool onStartElement(const char elem[]); + bool onStartElementLen(const char elem[], size_t len); +private: + struct Parent { + SkDisplayable* fDisplayable; + SkDisplayTypes fType; + }; + SkTDArray fParents; + SkDisplayXMLParser& operator= (const SkDisplayXMLParser& ); + SkDisplayXMLParserError* getError() { return (SkDisplayXMLParserError*) fError; } + const SkMemberInfo* searchContainer(const SkMemberInfo* , + int infoCount); + SkAnimateMaker& fMaker; + SkBool fInInclude; + SkBool fInSkia; + // local state between onStartElement and onAddAttribute + SkDisplayable* fCurrDisplayable; + SkDisplayTypes fCurrType; + friend class SkXMLAnimatorWriter; + typedef SkXMLParser INHERITED; +}; + +#endif // SkDisplayXMLParser_DEFINED