Home | History | Annotate | Download | only in animator
      1 
      2 /*
      3  * Copyright 2006 The Android Open Source Project
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 
     10 #ifndef SkOperand_DEFINED
     11 #define SkOperand_DEFINED
     12 
     13 #include "SkDisplayType.h"
     14 
     15 class SkTypedArray;
     16 class SkDisplayable;
     17 class SkADrawable;
     18 class SkString;
     19 
     20 union SkOperand {
     21 //  SkOperand() {}
     22 //  SkOperand(SkScalar scalar) : fScalar(scalar) {}
     23     SkTypedArray* fArray;
     24     SkDisplayable* fDisplayable;
     25     SkADrawable* fDrawable;
     26     void* fObject;
     27     int32_t fS32;
     28     SkMSec fMSec;
     29     SkScalar fScalar;
     30     SkString* fString;
     31 };
     32 
     33 struct SkScriptValue {
     34     SkOperand fOperand;
     35     SkDisplayTypes fType;
     36     SkTypedArray* getArray() { SkASSERT(fType == SkType_Array); return fOperand.fArray; }
     37     SkDisplayable* getDisplayable() { SkASSERT(fType == SkType_Displayable); return fOperand.fDisplayable; }
     38     SkADrawable* getDrawable() { SkASSERT(fType == SkType_Drawable); return fOperand.fDrawable; }
     39     int32_t getS32(SkAnimateMaker* maker) { SkASSERT(fType == SkType_Int || fType == SkType_Boolean ||
     40         SkDisplayType::IsEnum(maker, fType)); return fOperand.fS32; }
     41     SkMSec getMSec() { SkASSERT(fType == SkType_MSec); return fOperand.fMSec; }
     42     SkScalar getScalar() { SkASSERT(fType == SkType_Float); return fOperand.fScalar; }
     43     SkString* getString() { SkASSERT(fType == SkType_String); return fOperand.fString; }
     44 };
     45 
     46 #endif // SkOperand_DEFINED
     47