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 15class SkTypedArray; 16class SkDisplayable; 17class SkDrawable; 18class SkString; 19 20union SkOperand { 21// SkOperand() {} 22// SkOperand(SkScalar scalar) : fScalar(scalar) {} 23 SkTypedArray* fArray; 24 SkDisplayable* fDisplayable; 25 SkDrawable* fDrawable; 26 void* fObject; 27 int32_t fS32; 28 SkMSec fMSec; 29 SkScalar fScalar; 30 SkString* fString; 31}; 32 33struct 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 SkDrawable* 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