gfx/skia/trunk/src/animator/SkScriptCallBack.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/skia/trunk/src/animator/SkScriptCallBack.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,67 @@
     1.4 +
     1.5 +/*
     1.6 + * Copyright 2011 Google Inc.
     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 +#ifndef SkScriptCallBack_DEFINED
    1.12 +#define SkScriptCallBack_DEFINED
    1.13 +
    1.14 +#include "SkOperand2.h"
    1.15 +#include "SkTDArray_Experimental.h"
    1.16 +
    1.17 +class SkScriptCallBack {
    1.18 +public:
    1.19 +    virtual ~SkScriptCallBack() { }
    1.20 +
    1.21 +    enum Type {
    1.22 +        kBox,
    1.23 +        kFunction,
    1.24 +        kMember,
    1.25 +        kMemberFunction,
    1.26 +        kProperty,
    1.27 +        kUnbox
    1.28 +    };
    1.29 +
    1.30 +    virtual bool getReference(const char* , size_t len, SkScriptValue2* result) {  return false; }
    1.31 +    virtual SkOperand2::OpType getReturnType(size_t ref, SkOperand2*) {
    1.32 +        return SkOperand2::kS32; }
    1.33 +    virtual Type getType() const = 0;
    1.34 +};
    1.35 +
    1.36 +class SkScriptCallBackConvert : public SkScriptCallBack {
    1.37 +public:
    1.38 +    virtual bool convert(SkOperand2::OpType type, SkOperand2* operand) = 0;
    1.39 +};
    1.40 +
    1.41 +class SkScriptCallBackFunction : public SkScriptCallBack {
    1.42 +public:
    1.43 +    virtual void getParamTypes(SkIntArray(SkOperand2::OpType)* types) = 0;
    1.44 +    virtual Type getType() const { return kFunction; }
    1.45 +    virtual bool invoke(size_t ref, SkOpArray* params, SkOperand2* value) = 0;
    1.46 +};
    1.47 +
    1.48 +class SkScriptCallBackMember: public SkScriptCallBack {
    1.49 +public:
    1.50 +    bool getMemberReference(const char* , size_t len, void* object, SkScriptValue2* ref);
    1.51 +    virtual Type getType() const { return kMember; }
    1.52 +    virtual bool invoke(size_t ref, void* object, SkOperand2* value) = 0;
    1.53 +};
    1.54 +
    1.55 +class SkScriptCallBackMemberFunction : public SkScriptCallBack {
    1.56 +public:
    1.57 +    bool getMemberReference(const char* , size_t len, void* object, SkScriptValue2* ref);
    1.58 +    virtual void getParamTypes(SkIntArray(SkOperand2::OpType)* types) = 0;
    1.59 +    virtual Type getType() const { return kMemberFunction; }
    1.60 +    virtual bool invoke(size_t ref, void* object, SkOpArray* params, SkOperand2* value) = 0;
    1.61 +};
    1.62 +
    1.63 +class SkScriptCallBackProperty : public SkScriptCallBack {
    1.64 +public:
    1.65 +    virtual bool getConstValue(const char* name, size_t len, SkOperand2* value) { return false; }
    1.66 +    virtual bool getResult(size_t ref, SkOperand2* answer) { return false; }
    1.67 +    virtual Type getType() const { return kProperty; }
    1.68 +};
    1.69 +
    1.70 +#endif // SkScriptCallBack_DEFINED

mercurial