Thu, 15 Jan 2015 15:55:04 +0100
Back out 97036ab72558 which inappropriately compared turds to third parties.
michael@0 | 1 | |
michael@0 | 2 | /* |
michael@0 | 3 | * Copyright 2006 The Android Open Source Project |
michael@0 | 4 | * |
michael@0 | 5 | * Use of this source code is governed by a BSD-style license that can be |
michael@0 | 6 | * found in the LICENSE file. |
michael@0 | 7 | */ |
michael@0 | 8 | |
michael@0 | 9 | |
michael@0 | 10 | #ifndef SkDisplayXMLParser_DEFINED |
michael@0 | 11 | #define SkDisplayXMLParser_DEFINED |
michael@0 | 12 | |
michael@0 | 13 | #include "SkIntArray.h" |
michael@0 | 14 | #include "SkTDict.h" |
michael@0 | 15 | #include "SkDisplayType.h" |
michael@0 | 16 | #include "SkXMLParser.h" |
michael@0 | 17 | |
michael@0 | 18 | class SkAnimateMaker; |
michael@0 | 19 | class SkDisplayable; |
michael@0 | 20 | |
michael@0 | 21 | class SkDisplayXMLParserError : public SkXMLParserError { |
michael@0 | 22 | public: |
michael@0 | 23 | enum ErrorCode { |
michael@0 | 24 | kApplyScopesItself = kUnknownError + 1, |
michael@0 | 25 | kDisplayTreeTooDeep, |
michael@0 | 26 | kElementMissingParent, |
michael@0 | 27 | kElementTypeNotAllowedInParent, |
michael@0 | 28 | kErrorAddingDataToPost, |
michael@0 | 29 | kErrorAddingToMatrix, |
michael@0 | 30 | kErrorAddingToPaint, |
michael@0 | 31 | kErrorAddingToPath, |
michael@0 | 32 | kErrorInAttributeValue, |
michael@0 | 33 | kErrorInScript, |
michael@0 | 34 | kExpectedMovie, |
michael@0 | 35 | kFieldNotInTarget, |
michael@0 | 36 | kGradientOffsetsDontMatchColors, |
michael@0 | 37 | kGradientOffsetsMustBeNoMoreThanOne, |
michael@0 | 38 | kGradientOffsetsMustEndWithOne, |
michael@0 | 39 | kGradientOffsetsMustIncrease, |
michael@0 | 40 | kGradientOffsetsMustStartWithZero, |
michael@0 | 41 | kGradientPointsLengthMustBeFour, |
michael@0 | 42 | kInInclude, |
michael@0 | 43 | kInMovie, |
michael@0 | 44 | kIncludeNameUnknownOrMissing, |
michael@0 | 45 | kIndexOutOfRange, |
michael@0 | 46 | kMovieNameUnknownOrMissing, |
michael@0 | 47 | kNoParentAvailable, |
michael@0 | 48 | kParentElementCantContain, |
michael@0 | 49 | kSaveLayerNeedsBounds, |
michael@0 | 50 | kTargetIDNotFound, |
michael@0 | 51 | kUnexpectedType |
michael@0 | 52 | }; |
michael@0 | 53 | virtual ~SkDisplayXMLParserError(); |
michael@0 | 54 | virtual void getErrorString(SkString* str) const; |
michael@0 | 55 | void setCode(ErrorCode code) { INHERITED::setCode((INHERITED::ErrorCode) code); } |
michael@0 | 56 | void setInnerError(SkAnimateMaker* maker, const SkString& str); |
michael@0 | 57 | typedef SkXMLParserError INHERITED; |
michael@0 | 58 | friend class SkDisplayXMLParser; |
michael@0 | 59 | }; |
michael@0 | 60 | |
michael@0 | 61 | class SkDisplayXMLParser : public SkXMLParser { |
michael@0 | 62 | public: |
michael@0 | 63 | SkDisplayXMLParser(SkAnimateMaker& maker); |
michael@0 | 64 | virtual ~SkDisplayXMLParser(); |
michael@0 | 65 | protected: |
michael@0 | 66 | virtual bool onAddAttribute(const char name[], const char value[]); |
michael@0 | 67 | bool onAddAttributeLen(const char name[], const char value[], size_t len); |
michael@0 | 68 | virtual bool onEndElement(const char elem[]); |
michael@0 | 69 | virtual bool onStartElement(const char elem[]); |
michael@0 | 70 | bool onStartElementLen(const char elem[], size_t len); |
michael@0 | 71 | private: |
michael@0 | 72 | struct Parent { |
michael@0 | 73 | SkDisplayable* fDisplayable; |
michael@0 | 74 | SkDisplayTypes fType; |
michael@0 | 75 | }; |
michael@0 | 76 | SkTDArray<Parent> fParents; |
michael@0 | 77 | SkDisplayXMLParser& operator= (const SkDisplayXMLParser& ); |
michael@0 | 78 | SkDisplayXMLParserError* getError() { return (SkDisplayXMLParserError*) fError; } |
michael@0 | 79 | const SkMemberInfo* searchContainer(const SkMemberInfo* , |
michael@0 | 80 | int infoCount); |
michael@0 | 81 | SkAnimateMaker& fMaker; |
michael@0 | 82 | SkBool fInInclude; |
michael@0 | 83 | SkBool fInSkia; |
michael@0 | 84 | // local state between onStartElement and onAddAttribute |
michael@0 | 85 | SkDisplayable* fCurrDisplayable; |
michael@0 | 86 | SkDisplayTypes fCurrType; |
michael@0 | 87 | friend class SkXMLAnimatorWriter; |
michael@0 | 88 | typedef SkXMLParser INHERITED; |
michael@0 | 89 | }; |
michael@0 | 90 | |
michael@0 | 91 | #endif // SkDisplayXMLParser_DEFINED |