/* * Copyright 2006 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkOperand_DEFINED #define SkOperand_DEFINED #include "SkDisplayType.h" class SkTypedArray; class SkDisplayable; class SkDrawable; class SkString; union SkOperand { // SkOperand() {} // SkOperand(SkScalar scalar) : fScalar(scalar) {} SkTypedArray* fArray; SkDisplayable* fDisplayable; SkDrawable* fDrawable; void* fObject; int32_t fS32; SkMSec fMSec; SkScalar fScalar; SkString* fString; }; struct SkScriptValue { SkOperand fOperand; SkDisplayTypes fType; SkTypedArray* getArray() { SkASSERT(fType == SkType_Array); return fOperand.fArray; } SkDisplayable* getDisplayable() { SkASSERT(fType == SkType_Displayable); return fOperand.fDisplayable; } SkDrawable* getDrawable() { SkASSERT(fType == SkType_Drawable); return fOperand.fDrawable; } int32_t getS32(SkAnimateMaker* maker) { SkASSERT(fType == SkType_Int || fType == SkType_Boolean || SkDisplayType::IsEnum(maker, fType)); return fOperand.fS32; } SkMSec getMSec() { SkASSERT(fType == SkType_MSec); return fOperand.fMSec; } SkScalar getScalar() { SkASSERT(fType == SkType_Float); return fOperand.fScalar; } SkString* getString() { SkASSERT(fType == SkType_String); return fOperand.fString; } }; #endif // SkOperand_DEFINED