Home | History | Annotate | Download | only in animator
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      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 #ifndef SkOperand2_DEFINED
      9 #define SkOperand2_DEFINED
     10 
     11 #include "SkScalar.h"
     12 
     13 class SkOpArray;
     14 class SkString;
     15 
     16 union SkOperand2 {
     17     enum OpType {
     18         kNoType,
     19         kS32 = 1,
     20         kScalar = 2,
     21         kString = 4,
     22         kArray = 8,
     23         kObject = 16
     24     };
     25     SkOpArray* fArray;
     26     void* fObject;
     27     size_t fReference;
     28     int32_t fS32;
     29     SkScalar fScalar;
     30     SkString* fString;
     31 };
     32 
     33 struct SkScriptValue2 {
     34     enum IsConstant {
     35         kConstant,
     36         kVariable
     37     };
     38     enum IsWritten {
     39         kUnwritten,
     40         kWritten
     41     };
     42     SkOperand2 fOperand;
     43     SkOperand2::OpType fType : 8;
     44     IsConstant fIsConstant : 8;
     45     IsWritten fIsWritten : 8;
     46     SkOpArray* getArray() { SkASSERT(fType == SkOperand2::kArray); return fOperand.fArray; }
     47     void* getObject() { SkASSERT(fType == SkOperand2::kObject); return fOperand.fObject; }
     48     int32_t getS32() { SkASSERT(fType == SkOperand2::kS32); return fOperand.fS32; }
     49     SkScalar getScalar() { SkASSERT(fType == SkOperand2::kScalar); return fOperand.fScalar; }
     50     SkString* getString() { SkASSERT(fType == SkOperand2::kString); return fOperand.fString; }
     51         bool isConstant() const { return fIsConstant == kConstant; }
     52 };
     53 
     54 #endif // SkOperand2_DEFINED
     55