11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkOperand_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkOperand_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayType.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkTypedArray;
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayable;
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDrawable;
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkString;
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectunion SkOperand {
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//  SkOperand() {}
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project//  SkOperand(SkScalar scalar) : fScalar(scalar) {}
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTypedArray* fArray;
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayable* fDisplayable;
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDrawable* fDrawable;
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void* fObject;
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int32_t fS32;
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkMSec fMSec;
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar fScalar;
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkString* fString;
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkScriptValue {
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkOperand fOperand;
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayTypes fType;
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTypedArray* getArray() { SkASSERT(fType == SkType_Array); return fOperand.fArray; }
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayable* getDisplayable() { SkASSERT(fType == SkType_Displayable); return fOperand.fDisplayable; }
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDrawable* getDrawable() { SkASSERT(fType == SkType_Drawable); return fOperand.fDrawable; }
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int32_t getS32(SkAnimateMaker* maker) { SkASSERT(fType == SkType_Int || fType == SkType_Boolean ||
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkDisplayType::IsEnum(maker, fType)); return fOperand.fS32; }
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkMSec getMSec() { SkASSERT(fType == SkType_MSec); return fOperand.fMSec; }
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar getScalar() { SkASSERT(fType == SkType_Float); return fOperand.fScalar; }
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkString* getString() { SkASSERT(fType == SkType_String); return fOperand.fString; }
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkOperand_DEFINED
47