• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;
getArraySkScriptValue246 	SkOpArray* getArray() { SkASSERT(fType == SkOperand2::kArray); return fOperand.fArray; }
getObjectSkScriptValue247 	void* getObject() { SkASSERT(fType == SkOperand2::kObject); return fOperand.fObject; }
getS32SkScriptValue248 	int32_t getS32() { SkASSERT(fType == SkOperand2::kS32); return fOperand.fS32; }
getScalarSkScriptValue249 	SkScalar getScalar() { SkASSERT(fType == SkOperand2::kScalar); return fOperand.fScalar; }
getStringSkScriptValue250 	SkString* getString() { SkASSERT(fType == SkOperand2::kString); return fOperand.fString; }
isConstantSkScriptValue251         bool isConstant() const { return fIsConstant == kConstant; }
52 };
53 
54 #endif // SkOperand2_DEFINED
55