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