Index: skia/animator/SkScript.h |
=================================================================== |
--- skia/animator/SkScript.h (revision 16859) |
+++ skia/animator/SkScript.h (working copy) |
@@ -1,274 +0,0 @@ |
-/* libs/graphics/animator/SkScript.h |
-** |
-** Copyright 2006, The Android Open Source Project |
-** |
-** Licensed under the Apache License, Version 2.0 (the "License"); |
-** you may not use this file except in compliance with the License. |
-** You may obtain a copy of the License at |
-** |
-** http://www.apache.org/licenses/LICENSE-2.0 |
-** |
-** Unless required by applicable law or agreed to in writing, software |
-** distributed under the License is distributed on an "AS IS" BASIS, |
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-** See the License for the specific language governing permissions and |
-** limitations under the License. |
-*/ |
- |
-#ifndef SkScript_DEFINED |
-#define SkScript_DEFINED |
- |
-#include "SkOperand.h" |
-#include "SkIntArray.h" |
-#include "SkTDict.h" |
-#include "SkTDStack.h" |
- |
-class SkAnimateMaker; |
- |
-class SkScriptEngine { |
-public: |
- enum Error { |
- kNoError, |
- kArrayIndexOutOfBounds, |
- kCouldNotFindReferencedID, |
- kDotOperatorExpectsObject, |
- kErrorInArrrayIndex, |
- kErrorInFunctionParameters, |
- kExpectedArray, |
- kExpectedBooleanExpression, |
- kExpectedFieldName, |
- kExpectedHex, |
- kExpectedIntForConditionOperator, |
- kExpectedNumber, |
- kExpectedNumberForArrayIndex, |
- kExpectedOperator, |
- kExpectedToken, |
- kExpectedTokenBeforeDotOperator, |
- kExpectedValue, |
- kHandleMemberFailed, |
- kHandleMemberFunctionFailed, |
- kHandleUnboxFailed, |
- kIndexOutOfRange, |
- kMismatchedArrayBrace, |
- kMismatchedBrackets, |
- kNoFunctionHandlerFound, |
- kPrematureEnd, |
- kTooManyParameters, |
- kTypeConversionFailed, |
- kUnterminatedString |
- }; |
- |
- enum SkOpType { |
- kNoType, |
- kInt = 1, |
- kScalar = 2, |
- kString = 4, |
- kArray = 8, |
- kObject = 16 |
-// kStruct = 32 |
- }; |
- |
- typedef bool (*_boxCallBack)(void* userStorage, SkScriptValue* result); |
- typedef bool (*_functionCallBack)(const char* func, size_t len, SkTDArray<SkScriptValue>& params, |
- void* userStorage, SkScriptValue* result); |
- typedef bool (*_memberCallBack)(const char* member, size_t len, void* object, |
- void* userStorage, SkScriptValue* result); |
- typedef bool (*_memberFunctionCallBack)(const char* member, size_t len, void* object, |
- SkTDArray<SkScriptValue>& params, void* userStorage, SkScriptValue* result); |
-// typedef bool (*_objectToStringCallBack)(void* object, void* userStorage, SkScriptValue* result); |
- typedef bool (*_propertyCallBack)(const char* prop, size_t len, void* userStorage, SkScriptValue* result); |
- typedef bool (*_unboxCallBack)(void* userStorage, SkScriptValue* result); |
- SkScriptEngine(SkOpType returnType); |
- ~SkScriptEngine(); |
- void boxCallBack(_boxCallBack func, void* userStorage); |
- bool convertTo(SkDisplayTypes , SkScriptValue* ); |
- bool evaluateScript(const char** script, SkScriptValue* value); |
- void forget(SkTypedArray* array); |
- void functionCallBack(_functionCallBack func, void* userStorage); |
- Error getError() const { return fError; } |
-#ifdef SK_DEBUG |
- bool getErrorString(SkString* err) const; |
-#endif |
- void memberCallBack(_memberCallBack , void* userStorage); |
- void memberFunctionCallBack(_memberFunctionCallBack , void* userStorage); |
-// void objectToStringCallBack(_objectToStringCallBack , void* userStorage); |
- void propertyCallBack(_propertyCallBack prop, void* userStorage); |
- void track(SkTypedArray* array); |
- void track(SkString* string); |
- void unboxCallBack(_unboxCallBack func, void* userStorage); |
- static bool ConvertTo(SkScriptEngine* , SkDisplayTypes toType, SkScriptValue* value); |
- static SkScalar IntToScalar(int32_t ); |
- static SkDisplayTypes ToDisplayType(SkOpType type); |
- static SkOpType ToOpType(SkDisplayTypes type); |
- static bool ValueToString(SkScriptValue value, SkString* string); |
- |
- enum CallBackType { |
- kBox, |
- kFunction, |
- kMember, |
- kMemberFunction, |
- // kObjectToString, |
- kProperty, |
- kUnbox |
- }; |
- |
- struct UserCallBack { |
- CallBackType fCallBackType; |
- void* fUserStorage; |
- union { |
- _boxCallBack fBoxCallBack; |
- _functionCallBack fFunctionCallBack; |
- _memberCallBack fMemberCallBack; |
- _memberFunctionCallBack fMemberFunctionCallBack; |
- // _objectToStringCallBack fObjectToStringCallBack; |
- _propertyCallBack fPropertyCallBack; |
- _unboxCallBack fUnboxCallBack; |
- }; |
- }; |
- |
- enum SkOp { |
- kUnassigned, |
- kAdd, |
- kAddInt = kAdd, |
- kAddScalar, |
- kAddString, // string concat |
- kArrayOp, |
- kBitAnd, |
- kBitNot, |
- kBitOr, |
- kDivide, |
- kDivideInt = kDivide, |
- kDivideScalar, |
- kElse, |
- kEqual, |
- kEqualInt = kEqual, |
- kEqualScalar, |
- kEqualString, |
- kFlipOps, |
- kGreaterEqual, |
- kGreaterEqualInt = kGreaterEqual, |
- kGreaterEqualScalar, |
- kGreaterEqualString, |
- kIf, |
- kLogicalAnd, |
- kLogicalNot, |
- kLogicalOr, |
- kMinus, |
- kMinusInt = kMinus, |
- kMinusScalar, |
- kModulo, |
- kModuloInt = kModulo, |
- kModuloScalar, |
- kMultiply, |
- kMultiplyInt = kMultiply, |
- kMultiplyScalar, |
- kParen, |
- kShiftLeft, |
- kShiftRight, // signed |
- kSubtract, |
- kSubtractInt = kSubtract, |
- kSubtractScalar, |
- kXor, |
- kArtificialOp = 0x40 |
- }; |
- |
- enum SkOpBias { |
- kNoBias, |
- kTowardsNumber = 0, |
- kTowardsString |
- }; |
- |
-protected: |
- |
- struct SkOperatorAttributes { |
- unsigned int fLeftType : 3; // SkOpType, but only lower values |
- unsigned int fRightType : 3; // SkOpType, but only lower values |
- SkOpBias fBias : 1; |
- }; |
- |
- struct SkSuppress { // !!! could be compressed to a long |
- SkOp fOperator; // operand which enabled suppression |
- int fOpStackDepth; // depth when suppression operator was found |
- SkBool8 fSuppress; // set if suppression happens now, as opposed to later |
- SkBool8 fElse; // set on the : half of ? : |
- }; |
- |
- static const SkOperatorAttributes gOpAttributes[]; |
- static const signed char gPrecedence[]; |
- int arithmeticOp(char ch, char nextChar, bool lastPush); |
- void commonCallBack(CallBackType type, UserCallBack& callBack, void* userStorage); |
- bool convertParams(SkTDArray<SkScriptValue>&, const SkFunctionParamType* , |
- int paramTypeCount); |
- void convertToString(SkOperand& operand, SkDisplayTypes type) { |
- SkScriptValue scriptValue; |
- scriptValue.fOperand = operand; |
- scriptValue.fType = type; |
- convertTo(SkType_String, &scriptValue); |
- operand = scriptValue.fOperand; |
- } |
- bool evaluateDot(const char*& script, bool suppressed); |
- bool evaluateDotParam(const char*& script, bool suppressed, const char* field, size_t fieldLength); |
- bool functionParams(const char** scriptPtr, SkTDArray<SkScriptValue>& params); |
- bool handleArrayIndexer(const char** scriptPtr, bool suppressed); |
- bool handleBox(SkScriptValue* value); |
- bool handleFunction(const char** scriptPtr, bool suppressed); |
- bool handleMember(const char* field, size_t len, void* object); |
- bool handleMemberFunction(const char* field, size_t len, void* object, SkTDArray<SkScriptValue>& params); |
-// bool handleObjectToString(void* object); |
- bool handleProperty(bool suppressed); |
- bool handleUnbox(SkScriptValue* scriptValue); |
- bool innerScript(const char** scriptPtr, SkScriptValue* value); |
- int logicalOp(char ch, char nextChar); |
- Error opError(); |
- bool processOp(); |
- void setAnimateMaker(SkAnimateMaker* maker) { fMaker = maker; } |
- bool setError(Error , const char* pos); |
- enum SkBraceStyle { |
- // kStructBrace, |
- kArrayBrace, |
- kFunctionBrace |
- }; |
- |
-#if 0 |
- SkIntArray(SkBraceStyle) fBraceStack; // curly, square, function paren |
- SkIntArray(SkOp) fOpStack; |
- SkIntArray(SkOpType) fTypeStack; |
- SkTDOperandArray fOperandStack; |
- SkTDArray<SkSuppress> fSuppressStack; |
-#else |
- SkTDStack<SkBraceStyle> fBraceStack; // curly, square, function paren |
- SkTDStack<SkOp> fOpStack; |
- SkTDStack<SkOpType> fTypeStack; |
- SkTDStack<SkOperand> fOperandStack; |
- SkTDStack<SkSuppress> fSuppressStack; |
-#endif |
- SkAnimateMaker* fMaker; |
- SkTDTypedArrayArray fTrackArray; |
- SkTDStringArray fTrackString; |
- const char* fToken; // one-deep stack |
- size_t fTokenLength; |
- SkTDArray<UserCallBack> fUserCallBacks; |
- SkOpType fReturnType; |
- Error fError; |
- int fErrorPosition; |
-private: |
- friend class SkTypedArray; |
-#ifdef SK_SUPPORT_UNITTEST |
-public: |
- static void UnitTest(); |
-#endif |
-}; |
- |
-#ifdef SK_SUPPORT_UNITTEST |
- |
-struct SkScriptNAnswer { |
- const char* fScript; |
- SkDisplayTypes fType; |
- int32_t fIntAnswer; |
- SkScalar fScalarAnswer; |
- const char* fStringAnswer; |
-}; |
- |
-#endif |
- |
-#endif // SkScript_DEFINED |