OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "SkScript2.h" | 8 #include "SkScript2.h" |
9 #include "SkData.h" | 9 #include "SkData.h" |
10 #include "SkFloatingPoint.h" | 10 #include "SkFloatingPoint.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 | 163 |
164 void SkScriptEngine2::addTokenInt(int integer) { | 164 void SkScriptEngine2::addTokenInt(int integer) { |
165 fActiveStream->write(&integer, sizeof(integer)); | 165 fActiveStream->write(&integer, sizeof(integer)); |
166 } | 166 } |
167 | 167 |
168 void SkScriptEngine2::addTokenScalar(SkScalar scalar) { | 168 void SkScriptEngine2::addTokenScalar(SkScalar scalar) { |
169 fActiveStream->write(&scalar, sizeof(scalar)); | 169 fActiveStream->write(&scalar, sizeof(scalar)); |
170 } | 170 } |
171 | 171 |
172 void SkScriptEngine2::addTokenString(const SkString& string) { | 172 void SkScriptEngine2::addTokenString(const SkString& string) { |
173 int size = string.size(); | 173 int size = SkToInt(string.size()); |
174 addTokenInt(size); | 174 addTokenInt(size); |
175 fActiveStream->write(string.c_str(), size); | 175 fActiveStream->write(string.c_str(), size); |
176 } | 176 } |
177 | 177 |
178 void SkScriptEngine2::addTokenValue(const SkScriptValue2& value, AddTokenRegiste
r reg) { | 178 void SkScriptEngine2::addTokenValue(const SkScriptValue2& value, AddTokenRegiste
r reg) { |
179 if (value.isConstant() == false) { | 179 if (value.isConstant() == false) { |
180 if (reg == kAccumulator) { | 180 if (reg == kAccumulator) { |
181 if (fAccumulatorType == SkOperand2::kNoType) | 181 if (fAccumulatorType == SkOperand2::kNoType) |
182 addToken(kAccumulatorPop); | 182 addToken(kAccumulatorPop); |
183 } else { | 183 } else { |
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1016 addTokenValue(fValueStack.top(), kAccumulator); | 1016 addTokenValue(fValueStack.top(), kAccumulator); |
1017 fValueStack.pop(); | 1017 fValueStack.pop(); |
1018 addToken(kElseOp); | 1018 addToken(kElseOp); |
1019 size_t newOffset = getTokenOffset(); | 1019 size_t newOffset = getTokenOffset(); |
1020 addTokenInt(0); // placeholder for future branch | 1020 addTokenInt(0); // placeholder for future branch |
1021 Branch& branch = fBranchStack.top(); | 1021 Branch& branch = fBranchStack.top(); |
1022 resolveBranch(branch); | 1022 resolveBranch(branch); |
1023 branch.fOperator = op; | 1023 branch.fOperator = op; |
1024 branch.fDone = Branch::kIsNotDone; | 1024 branch.fDone = Branch::kIsNotDone; |
1025 SkASSERT(branch.fOpStackDepth == fOpStack.count()); | 1025 SkASSERT(branch.fOpStackDepth == fOpStack.count()); |
1026 branch.fOffset = newOffset; | 1026 branch.fOffset = SkToU16(newOffset); |
1027 fAccumulatorType = SkOperand2::kNoType; | 1027 fAccumulatorType = SkOperand2::kNoType; |
1028 } break; | 1028 } break; |
1029 case kLogicalAnd: | 1029 case kLogicalAnd: |
1030 case kLogicalOr: { | 1030 case kLogicalOr: { |
1031 Branch& oldTop = fBranchStack.top(); | 1031 Branch& oldTop = fBranchStack.top(); |
1032 Branch::Primed wasPrime = oldTop.fPrimed; | 1032 Branch::Primed wasPrime = oldTop.fPrimed; |
1033 Branch::Done wasDone = oldTop.fDone; | 1033 Branch::Done wasDone = oldTop.fDone; |
1034 oldTop.fPrimed = Branch::kIsNotPrimed; | 1034 oldTop.fPrimed = Branch::kIsNotPrimed; |
1035 oldTop.fDone = Branch::kIsNotDone; | 1035 oldTop.fDone = Branch::kIsNotDone; |
1036 if (fAccumulatorType == SkOperand2::kNoType) { | 1036 if (fAccumulatorType == SkOperand2::kNoType) { |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1497 case SkOperand2::kString: | 1497 case SkOperand2::kString: |
1498 SkASSERT(value.fOperand.fString->equals(scriptTests[index].fStri
ngAnswer)); | 1498 SkASSERT(value.fOperand.fString->equals(scriptTests[index].fStri
ngAnswer)); |
1499 break; | 1499 break; |
1500 default: | 1500 default: |
1501 SkASSERT(0); | 1501 SkASSERT(0); |
1502 } | 1502 } |
1503 } | 1503 } |
1504 #endif // SK_SUPPORT_UNITTEST | 1504 #endif // SK_SUPPORT_UNITTEST |
1505 } | 1505 } |
1506 #endif // SK_DEBUG | 1506 #endif // SK_DEBUG |
OLD | NEW |