OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
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 | 8 |
9 | 9 |
10 #include "SkAnimateMaker.h" | 10 #include "SkAnimateMaker.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "SkSystemEventTypes.h" | 21 #include "SkSystemEventTypes.h" |
22 #include "SkTime.h" | 22 #include "SkTime.h" |
23 | 23 |
24 class DefaultTimeline : public SkAnimator::Timeline { | 24 class DefaultTimeline : public SkAnimator::Timeline { |
25 virtual SkMSec getMSecs() const { | 25 virtual SkMSec getMSecs() const { |
26 return SkTime::GetMSecs(); | 26 return SkTime::GetMSecs(); |
27 } | 27 } |
28 } gDefaultTimeline; | 28 } gDefaultTimeline; |
29 | 29 |
30 SkAnimateMaker::SkAnimateMaker(SkAnimator* animator, SkCanvas* canvas, SkPaint*
paint) | 30 SkAnimateMaker::SkAnimateMaker(SkAnimator* animator, SkCanvas* canvas, SkPaint*
paint) |
31 : fActiveEvent(NULL), fAdjustedStart(0), fCanvas(canvas), fEnableTime(0), | 31 : fActiveEvent(nullptr), fAdjustedStart(0), fCanvas(canvas), fEnableTime(0), |
32 fHostEventSinkID(0), fMinimumInterval((SkMSec) -1), fPaint(paint), fPare
ntMaker(NULL), | 32 fHostEventSinkID(0), fMinimumInterval((SkMSec) -1), fPaint(paint), fPare
ntMaker(nullptr), |
33 fTimeline(&gDefaultTimeline), fInInclude(false), fInMovie(false), | 33 fTimeline(&gDefaultTimeline), fInInclude(false), fInMovie(false), |
34 fFirstScriptError(false), fLoaded(false), fIDs(256), fAnimator(animator) | 34 fFirstScriptError(false), fLoaded(false), fIDs(256), fAnimator(animator) |
35 { | 35 { |
36 fScreenplay.time = 0; | 36 fScreenplay.time = 0; |
37 #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING | 37 #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING |
38 fDebugTimeBase = (SkMSec) -1; | 38 fDebugTimeBase = (SkMSec) -1; |
39 #endif | 39 #endif |
40 #ifdef SK_DUMP_ENABLED | 40 #ifdef SK_DUMP_ENABLED |
41 fDumpEvents = fDumpGConditions = fDumpPosts = false; | 41 fDumpEvents = fDumpGConditions = fDumpPosts = false; |
42 #endif | 42 #endif |
(...skipping 16 matching lines...) Expand all Loading... |
59 | 59 |
60 void SkAnimateMaker::appendActive(SkActive* active) { | 60 void SkAnimateMaker::appendActive(SkActive* active) { |
61 fDisplayList.append(active); | 61 fDisplayList.append(active); |
62 } | 62 } |
63 | 63 |
64 void SkAnimateMaker::clearExtraPropertyCallBack(SkDisplayTypes type) { | 64 void SkAnimateMaker::clearExtraPropertyCallBack(SkDisplayTypes type) { |
65 SkExtras** end = fExtras.end(); | 65 SkExtras** end = fExtras.end(); |
66 for (SkExtras** extraPtr = fExtras.begin(); extraPtr < end; extraPtr++) { | 66 for (SkExtras** extraPtr = fExtras.begin(); extraPtr < end; extraPtr++) { |
67 SkExtras* extra = *extraPtr; | 67 SkExtras* extra = *extraPtr; |
68 if (extra->definesType(type)) { | 68 if (extra->definesType(type)) { |
69 extra->fExtraCallBack = NULL; | 69 extra->fExtraCallBack = nullptr; |
70 extra->fExtraStorage = NULL; | 70 extra->fExtraStorage = nullptr; |
71 break; | 71 break; |
72 } | 72 } |
73 } | 73 } |
74 } | 74 } |
75 | 75 |
76 bool SkAnimateMaker::computeID(SkDisplayable* displayable, SkDisplayable* parent
, SkString* newID) { | 76 bool SkAnimateMaker::computeID(SkDisplayable* displayable, SkDisplayable* parent
, SkString* newID) { |
77 const char* script; | 77 const char* script; |
78 if (findKey(displayable, &script) == false) | 78 if (findKey(displayable, &script) == false) |
79 return true; | 79 return true; |
80 return SkAnimatorScript::EvaluateString(*this, displayable, parent, script,
newID); | 80 return SkAnimatorScript::EvaluateString(*this, displayable, parent, script,
newID); |
81 } | 81 } |
82 | 82 |
83 SkDisplayable* SkAnimateMaker::createInstance(const char name[], size_t len) { | 83 SkDisplayable* SkAnimateMaker::createInstance(const char name[], size_t len) { |
84 SkDisplayTypes type = SkDisplayType::GetType(this, name, len ); | 84 SkDisplayTypes type = SkDisplayType::GetType(this, name, len ); |
85 if ((int)type >= 0) | 85 if ((int)type >= 0) |
86 return SkDisplayType::CreateInstance(this, type); | 86 return SkDisplayType::CreateInstance(this, type); |
87 return NULL; | 87 return nullptr; |
88 } | 88 } |
89 | 89 |
90 // differs from SkAnimator::decodeStream in that it does not reset error state | 90 // differs from SkAnimator::decodeStream in that it does not reset error state |
91 bool SkAnimateMaker::decodeStream(SkStream* stream) | 91 bool SkAnimateMaker::decodeStream(SkStream* stream) |
92 { | 92 { |
93 SkDisplayXMLParser parser(*this); | 93 SkDisplayXMLParser parser(*this); |
94 return parser.parse(*stream); | 94 return parser.parse(*stream); |
95 } | 95 } |
96 | 96 |
97 // differs from SkAnimator::decodeURI in that it does not set URI base | 97 // differs from SkAnimator::decodeURI in that it does not set URI base |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 | 174 |
175 bool SkAnimateMaker::doEvent(const SkEvent& event) { | 175 bool SkAnimateMaker::doEvent(const SkEvent& event) { |
176 return (!fInMovie || fLoaded) && fAnimator->doEvent(event); | 176 return (!fInMovie || fLoaded) && fAnimator->doEvent(event); |
177 } | 177 } |
178 | 178 |
179 #ifdef SK_DUMP_ENABLED | 179 #ifdef SK_DUMP_ENABLED |
180 void SkAnimateMaker::dump(const char* match) { | 180 void SkAnimateMaker::dump(const char* match) { |
181 SkTDict<SkDisplayable*>::Iter iter(fIDs); | 181 SkTDict<SkDisplayable*>::Iter iter(fIDs); |
182 const char* name; | 182 const char* name; |
183 SkDisplayable* result; | 183 SkDisplayable* result; |
184 while ((name = iter.next(&result)) != NULL) { | 184 while ((name = iter.next(&result)) != nullptr) { |
185 if (strcmp(match,name) == 0) | 185 if (strcmp(match,name) == 0) |
186 result->dump(this); | 186 result->dump(this); |
187 } | 187 } |
188 } | 188 } |
189 #endif | 189 #endif |
190 | 190 |
191 int SkAnimateMaker::dynamicProperty(SkString& nameStr, SkDisplayable** displayab
lePtr ) { | 191 int SkAnimateMaker::dynamicProperty(SkString& nameStr, SkDisplayable** displayab
lePtr ) { |
192 const char* name = nameStr.c_str(); | 192 const char* name = nameStr.c_str(); |
193 const char* dot = strchr(name, '.'); | 193 const char* dot = strchr(name, '.'); |
194 SkASSERT(dot); | 194 SkASSERT(dot); |
(...skipping 11 matching lines...) Expand all Loading... |
206 SkMSec SkAnimateMaker::getAppTime() const { | 206 SkMSec SkAnimateMaker::getAppTime() const { |
207 return fTimeline->getMSecs(); | 207 return fTimeline->getMSecs(); |
208 } | 208 } |
209 | 209 |
210 #ifdef SK_DEBUG | 210 #ifdef SK_DEBUG |
211 SkAnimator* SkAnimateMaker::getRoot() | 211 SkAnimator* SkAnimateMaker::getRoot() |
212 { | 212 { |
213 SkAnimateMaker* maker = this; | 213 SkAnimateMaker* maker = this; |
214 while (maker->fParentMaker) | 214 while (maker->fParentMaker) |
215 maker = maker->fParentMaker; | 215 maker = maker->fParentMaker; |
216 return maker == this ? NULL : maker->fAnimator; | 216 return maker == this ? nullptr : maker->fAnimator; |
217 } | 217 } |
218 #endif | 218 #endif |
219 | 219 |
220 void SkAnimateMaker::helperAdd(SkDisplayable* trackMe) { | 220 void SkAnimateMaker::helperAdd(SkDisplayable* trackMe) { |
221 SkASSERT(fHelpers.find(trackMe) < 0); | 221 SkASSERT(fHelpers.find(trackMe) < 0); |
222 *fHelpers.append() = trackMe; | 222 *fHelpers.append() = trackMe; |
223 } | 223 } |
224 | 224 |
225 void SkAnimateMaker::helperRemove(SkDisplayable* alreadyTracked) { | 225 void SkAnimateMaker::helperRemove(SkDisplayable* alreadyTracked) { |
226 int helperIndex = fHelpers.find(alreadyTracked); | 226 int helperIndex = fHelpers.find(alreadyTracked); |
227 if (helperIndex >= 0) | 227 if (helperIndex >= 0) |
228 fHelpers.remove(helperIndex); | 228 fHelpers.remove(helperIndex); |
229 } | 229 } |
230 | 230 |
231 #if 0 | 231 #if 0 |
232 void SkAnimateMaker::loadMovies() { | 232 void SkAnimateMaker::loadMovies() { |
233 for (SkDisplayable** dispPtr = fMovies.begin(); dispPtr < fMovies.end(); dis
pPtr++) { | 233 for (SkDisplayable** dispPtr = fMovies.begin(); dispPtr < fMovies.end(); dis
pPtr++) { |
234 SkDisplayable* displayable = *dispPtr; | 234 SkDisplayable* displayable = *dispPtr; |
235 SkASSERT(displayable->getType() == SkType_Movie); | 235 SkASSERT(displayable->getType() == SkType_Movie); |
236 SkDisplayMovie* movie = (SkDisplayMovie*) displayable; | 236 SkDisplayMovie* movie = (SkDisplayMovie*) displayable; |
237 SkAnimateMaker* movieMaker = movie->fMovie.fMaker; | 237 SkAnimateMaker* movieMaker = movie->fMovie.fMaker; |
238 movieMaker->fEvents.doEvent(*movieMaker, SkDisplayEvent::kOnload, NULL); | 238 movieMaker->fEvents.doEvent(*movieMaker, SkDisplayEvent::kOnload, nullpt
r); |
239 movieMaker->fEvents.removeEvent(SkDisplayEvent::kOnload, NULL); | 239 movieMaker->fEvents.removeEvent(SkDisplayEvent::kOnload, nullptr); |
240 movieMaker->loadMovies(); | 240 movieMaker->loadMovies(); |
241 } | 241 } |
242 } | 242 } |
243 #endif | 243 #endif |
244 | 244 |
245 void SkAnimateMaker::notifyInval() { | 245 void SkAnimateMaker::notifyInval() { |
246 if (fHostEventSinkID) | 246 if (fHostEventSinkID) |
247 fAnimator->onEventPost(new SkEvent(SK_EventType_Inval), fHostEventSinkID
); | 247 fAnimator->onEventPost(new SkEvent(SK_EventType_Inval), fHostEventSinkID
); |
248 } | 248 } |
249 | 249 |
(...skipping 14 matching lines...) Expand all Loading... |
264 void SkAnimateMaker::reset() { | 264 void SkAnimateMaker::reset() { |
265 deleteMembers(); | 265 deleteMembers(); |
266 fChildren.reset(); | 266 fChildren.reset(); |
267 fHelpers.reset(); | 267 fHelpers.reset(); |
268 fIDs.reset(); | 268 fIDs.reset(); |
269 fEvents.reset(); | 269 fEvents.reset(); |
270 fDisplayList.hardReset(); | 270 fDisplayList.hardReset(); |
271 } | 271 } |
272 | 272 |
273 void SkAnimateMaker::removeActive(SkActive* active) { | 273 void SkAnimateMaker::removeActive(SkActive* active) { |
274 if (active == NULL) | 274 if (active == nullptr) |
275 return; | 275 return; |
276 fDisplayList.remove(active); | 276 fDisplayList.remove(active); |
277 } | 277 } |
278 | 278 |
279 bool SkAnimateMaker::resolveID(SkDisplayable* displayable, SkDisplayable* origin
al) { | 279 bool SkAnimateMaker::resolveID(SkDisplayable* displayable, SkDisplayable* origin
al) { |
280 SkString newID; | 280 SkString newID; |
281 bool success = computeID(original, NULL, &newID); | 281 bool success = computeID(original, nullptr, &newID); |
282 if (success) | 282 if (success) |
283 setID(displayable, newID); | 283 setID(displayable, newID); |
284 return success; | 284 return success; |
285 } | 285 } |
286 | 286 |
287 void SkAnimateMaker::setErrorString() { | 287 void SkAnimateMaker::setErrorString() { |
288 fErrorString.reset(); | 288 fErrorString.reset(); |
289 if (fError.hasError()) { | 289 if (fError.hasError()) { |
290 SkString err; | 290 SkString err; |
291 if (fFileName.size() > 0) | 291 if (fFileName.size() > 0) |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 } | 363 } |
364 | 364 |
365 bool SkAnimateMaker::GetStep(const char* token, size_t len, void* stepPtr, SkScr
iptValue* value) { | 365 bool SkAnimateMaker::GetStep(const char* token, size_t len, void* stepPtr, SkScr
iptValue* value) { |
366 if (SK_LITERAL_STR_EQUAL("step", token, len)) { | 366 if (SK_LITERAL_STR_EQUAL("step", token, len)) { |
367 value->fOperand.fS32 = *(int32_t*) stepPtr; | 367 value->fOperand.fS32 = *(int32_t*) stepPtr; |
368 value->fType = SkType_Int; | 368 value->fType = SkType_Int; |
369 return true; | 369 return true; |
370 } | 370 } |
371 return false; | 371 return false; |
372 } | 372 } |
OLD | NEW |