1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/animator/SkDisplayXMLParser.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,91 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2006 The Android Open Source Project 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 + 1.12 + 1.13 +#ifndef SkDisplayXMLParser_DEFINED 1.14 +#define SkDisplayXMLParser_DEFINED 1.15 + 1.16 +#include "SkIntArray.h" 1.17 +#include "SkTDict.h" 1.18 +#include "SkDisplayType.h" 1.19 +#include "SkXMLParser.h" 1.20 + 1.21 +class SkAnimateMaker; 1.22 +class SkDisplayable; 1.23 + 1.24 +class SkDisplayXMLParserError : public SkXMLParserError { 1.25 +public: 1.26 + enum ErrorCode { 1.27 + kApplyScopesItself = kUnknownError + 1, 1.28 + kDisplayTreeTooDeep, 1.29 + kElementMissingParent, 1.30 + kElementTypeNotAllowedInParent, 1.31 + kErrorAddingDataToPost, 1.32 + kErrorAddingToMatrix, 1.33 + kErrorAddingToPaint, 1.34 + kErrorAddingToPath, 1.35 + kErrorInAttributeValue, 1.36 + kErrorInScript, 1.37 + kExpectedMovie, 1.38 + kFieldNotInTarget, 1.39 + kGradientOffsetsDontMatchColors, 1.40 + kGradientOffsetsMustBeNoMoreThanOne, 1.41 + kGradientOffsetsMustEndWithOne, 1.42 + kGradientOffsetsMustIncrease, 1.43 + kGradientOffsetsMustStartWithZero, 1.44 + kGradientPointsLengthMustBeFour, 1.45 + kInInclude, 1.46 + kInMovie, 1.47 + kIncludeNameUnknownOrMissing, 1.48 + kIndexOutOfRange, 1.49 + kMovieNameUnknownOrMissing, 1.50 + kNoParentAvailable, 1.51 + kParentElementCantContain, 1.52 + kSaveLayerNeedsBounds, 1.53 + kTargetIDNotFound, 1.54 + kUnexpectedType 1.55 + }; 1.56 + virtual ~SkDisplayXMLParserError(); 1.57 + virtual void getErrorString(SkString* str) const; 1.58 + void setCode(ErrorCode code) { INHERITED::setCode((INHERITED::ErrorCode) code); } 1.59 + void setInnerError(SkAnimateMaker* maker, const SkString& str); 1.60 + typedef SkXMLParserError INHERITED; 1.61 + friend class SkDisplayXMLParser; 1.62 +}; 1.63 + 1.64 +class SkDisplayXMLParser : public SkXMLParser { 1.65 +public: 1.66 + SkDisplayXMLParser(SkAnimateMaker& maker); 1.67 + virtual ~SkDisplayXMLParser(); 1.68 +protected: 1.69 + virtual bool onAddAttribute(const char name[], const char value[]); 1.70 + bool onAddAttributeLen(const char name[], const char value[], size_t len); 1.71 + virtual bool onEndElement(const char elem[]); 1.72 + virtual bool onStartElement(const char elem[]); 1.73 + bool onStartElementLen(const char elem[], size_t len); 1.74 +private: 1.75 + struct Parent { 1.76 + SkDisplayable* fDisplayable; 1.77 + SkDisplayTypes fType; 1.78 + }; 1.79 + SkTDArray<Parent> fParents; 1.80 + SkDisplayXMLParser& operator= (const SkDisplayXMLParser& ); 1.81 + SkDisplayXMLParserError* getError() { return (SkDisplayXMLParserError*) fError; } 1.82 + const SkMemberInfo* searchContainer(const SkMemberInfo* , 1.83 + int infoCount); 1.84 + SkAnimateMaker& fMaker; 1.85 + SkBool fInInclude; 1.86 + SkBool fInSkia; 1.87 + // local state between onStartElement and onAddAttribute 1.88 + SkDisplayable* fCurrDisplayable; 1.89 + SkDisplayTypes fCurrType; 1.90 + friend class SkXMLAnimatorWriter; 1.91 + typedef SkXMLParser INHERITED; 1.92 +}; 1.93 + 1.94 +#endif // SkDisplayXMLParser_DEFINED