| 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 "SkDisplayable.h" | 10 #include "SkDisplayable.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 } | 57 } |
| 58 | 58 |
| 59 void SkDisplayable::clearBounder() { | 59 void SkDisplayable::clearBounder() { |
| 60 } | 60 } |
| 61 | 61 |
| 62 bool SkDisplayable::contains(SkDisplayable* ) { | 62 bool SkDisplayable::contains(SkDisplayable* ) { |
| 63 return false; | 63 return false; |
| 64 } | 64 } |
| 65 | 65 |
| 66 SkDisplayable* SkDisplayable::contains(const SkString& ) { | 66 SkDisplayable* SkDisplayable::contains(const SkString& ) { |
| 67 return NULL; | 67 return nullptr; |
| 68 } | 68 } |
| 69 | 69 |
| 70 SkDisplayable* SkDisplayable::deepCopy(SkAnimateMaker* maker) { | 70 SkDisplayable* SkDisplayable::deepCopy(SkAnimateMaker* maker) { |
| 71 SkDisplayTypes type = getType(); | 71 SkDisplayTypes type = getType(); |
| 72 if (type == SkType_Unknown) { | 72 if (type == SkType_Unknown) { |
| 73 SkASSERT(0); | 73 SkASSERT(0); |
| 74 return NULL; | 74 return nullptr; |
| 75 } | 75 } |
| 76 SkDisplayable* copy = SkDisplayType::CreateInstance(maker, type); | 76 SkDisplayable* copy = SkDisplayType::CreateInstance(maker, type); |
| 77 int index = -1; | 77 int index = -1; |
| 78 int propIndex = 0; | 78 int propIndex = 0; |
| 79 const SkMemberInfo* info; | 79 const SkMemberInfo* info; |
| 80 do { | 80 do { |
| 81 info = copy->getMember(++index); | 81 info = copy->getMember(++index); |
| 82 if (info == NULL) | 82 if (info == nullptr) |
| 83 break; | 83 break; |
| 84 if (info->fType == SkType_MemberProperty) { | 84 if (info->fType == SkType_MemberProperty) { |
| 85 SkScriptValue value; | 85 SkScriptValue value; |
| 86 if (getProperty(propIndex, &value)) | 86 if (getProperty(propIndex, &value)) |
| 87 copy->setProperty(propIndex, value); | 87 copy->setProperty(propIndex, value); |
| 88 propIndex++; | 88 propIndex++; |
| 89 continue; | 89 continue; |
| 90 } | 90 } |
| 91 if (info->fType == SkType_MemberFunction) | 91 if (info->fType == SkType_MemberFunction) |
| 92 continue; | 92 continue; |
| 93 if (info->fType == SkType_Array) { | 93 if (info->fType == SkType_Array) { |
| 94 SkTDOperandArray* array = (SkTDOperandArray*) info->memberData(this)
; | 94 SkTDOperandArray* array = (SkTDOperandArray*) info->memberData(this)
; |
| 95 int arrayCount; | 95 int arrayCount; |
| 96 if (array == NULL || (arrayCount = array->count()) == 0) | 96 if (array == nullptr || (arrayCount = array->count()) == 0) |
| 97 continue; | 97 continue; |
| 98 SkTDOperandArray* copyArray = (SkTDOperandArray*) info->memberData(c
opy); | 98 SkTDOperandArray* copyArray = (SkTDOperandArray*) info->memberData(c
opy); |
| 99 copyArray->setCount(arrayCount); | 99 copyArray->setCount(arrayCount); |
| 100 SkDisplayTypes elementType; | 100 SkDisplayTypes elementType; |
| 101 if (type == SkType_Array) { | 101 if (type == SkType_Array) { |
| 102 SkDisplayArray* dispArray = (SkDisplayArray*) this; | 102 SkDisplayArray* dispArray = (SkDisplayArray*) this; |
| 103 elementType = dispArray->values.getType(); | 103 elementType = dispArray->values.getType(); |
| 104 } else | 104 } else |
| 105 elementType = info->arrayType(); | 105 elementType = info->arrayType(); |
| 106 size_t elementSize = SkMemberInfo::GetSize(elementType); | 106 size_t elementSize = SkMemberInfo::GetSize(elementType); |
| 107 size_t byteSize = elementSize * arrayCount; | 107 size_t byteSize = elementSize * arrayCount; |
| 108 memcpy(copyArray->begin(), array->begin(), byteSize); | 108 memcpy(copyArray->begin(), array->begin(), byteSize); |
| 109 continue; | 109 continue; |
| 110 } | 110 } |
| 111 if (SkDisplayType::IsDisplayable(maker, info->fType)) { | 111 if (SkDisplayType::IsDisplayable(maker, info->fType)) { |
| 112 SkDisplayable** displayable = (SkDisplayable**) info->memberData(thi
s); | 112 SkDisplayable** displayable = (SkDisplayable**) info->memberData(thi
s); |
| 113 if (*displayable == NULL || *displayable == (SkDisplayable*) -1) | 113 if (*displayable == nullptr || *displayable == (SkDisplayable*) -1) |
| 114 continue; | 114 continue; |
| 115 SkDisplayable* deeper = (*displayable)->deepCopy(maker); | 115 SkDisplayable* deeper = (*displayable)->deepCopy(maker); |
| 116 info->setMemberData(copy, deeper, sizeof(deeper)); | 116 info->setMemberData(copy, deeper, sizeof(deeper)); |
| 117 continue; | 117 continue; |
| 118 } | 118 } |
| 119 if (info->fType == SkType_String || info->fType == SkType_DynamicString)
{ | 119 if (info->fType == SkType_String || info->fType == SkType_DynamicString)
{ |
| 120 SkString* string; | 120 SkString* string; |
| 121 info->getString(this, &string); | 121 info->getString(this, &string); |
| 122 info->setString(copy, string); | 122 info->setString(copy, string); |
| 123 continue; | 123 continue; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 153 int index = -1; | 153 int index = -1; |
| 154 int propIndex = 0; | 154 int propIndex = 0; |
| 155 const SkMemberInfo* info; | 155 const SkMemberInfo* info; |
| 156 const SkMemberInfo* blankInfo; | 156 const SkMemberInfo* blankInfo; |
| 157 SkScriptValue value; | 157 SkScriptValue value; |
| 158 SkScriptValue blankValue; | 158 SkScriptValue blankValue; |
| 159 SkOperand values[2]; | 159 SkOperand values[2]; |
| 160 SkOperand blankValues[2]; | 160 SkOperand blankValues[2]; |
| 161 do { | 161 do { |
| 162 info = this->getMember(++index); | 162 info = this->getMember(++index); |
| 163 if (NULL == info) { | 163 if (nullptr == info) { |
| 164 //SkDebugf("\n"); | 164 //SkDebugf("\n"); |
| 165 break; | 165 break; |
| 166 } | 166 } |
| 167 if (SkType_MemberProperty == info->fType) { | 167 if (SkType_MemberProperty == info->fType) { |
| 168 if (getProperty(propIndex, &value)) { | 168 if (getProperty(propIndex, &value)) { |
| 169 blankCopy->getProperty(propIndex, &blankValue); | 169 blankCopy->getProperty(propIndex, &blankValue); |
| 170 //last two are dummies | 170 //last two are dummies |
| 171 dumpValues(info, value.fType, value.fOperand, blankValue.fOperan
d, value.fOperand, blankValue.fOperand); | 171 dumpValues(info, value.fType, value.fOperand, blankValue.fOperan
d, value.fOperand, blankValue.fOperand); |
| 172 } | 172 } |
| 173 | 173 |
| 174 propIndex++; | 174 propIndex++; |
| 175 continue; | 175 continue; |
| 176 } | 176 } |
| 177 if (SkDisplayType::IsDisplayable(maker, info->fType)) { | 177 if (SkDisplayType::IsDisplayable(maker, info->fType)) { |
| 178 continue; | 178 continue; |
| 179 } | 179 } |
| 180 | 180 |
| 181 if (info->fType == SkType_MemberFunction) | 181 if (info->fType == SkType_MemberFunction) |
| 182 continue; | 182 continue; |
| 183 | 183 |
| 184 | 184 |
| 185 if (info->fType == SkType_Array) { | 185 if (info->fType == SkType_Array) { |
| 186 SkTDOperandArray* array = (SkTDOperandArray*) info->memberData(this)
; | 186 SkTDOperandArray* array = (SkTDOperandArray*) info->memberData(this)
; |
| 187 int arrayCount; | 187 int arrayCount; |
| 188 if (array == NULL || (arrayCount = array->count()) == 0) | 188 if (array == nullptr || (arrayCount = array->count()) == 0) |
| 189 continue; | 189 continue; |
| 190 SkDisplayTypes elementType; | 190 SkDisplayTypes elementType; |
| 191 if (type == SkType_Array) { | 191 if (type == SkType_Array) { |
| 192 SkDisplayArray* dispArray = (SkDisplayArray*) this; | 192 SkDisplayArray* dispArray = (SkDisplayArray*) this; |
| 193 elementType = dispArray->values.getType(); | 193 elementType = dispArray->values.getType(); |
| 194 } else | 194 } else |
| 195 elementType = info->arrayType(); | 195 elementType = info->arrayType(); |
| 196 bool firstElem = true; | 196 bool firstElem = true; |
| 197 SkDebugf("%s=\"[", info->fName); | 197 SkDebugf("%s=\"[", info->fName); |
| 198 for (SkOperand* op = array->begin(); op < array->end(); op++) { | 198 for (SkOperand* op = array->begin(); op < array->end(); op++) { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 } | 252 } |
| 253 | 253 |
| 254 void SkDisplayable::dumpChildren(SkAnimateMaker* maker, bool closedAngle) { | 254 void SkDisplayable::dumpChildren(SkAnimateMaker* maker, bool closedAngle) { |
| 255 | 255 |
| 256 int index = -1; | 256 int index = -1; |
| 257 const SkMemberInfo* info; | 257 const SkMemberInfo* info; |
| 258 index = -1; | 258 index = -1; |
| 259 SkDisplayList::fIndent += 4; | 259 SkDisplayList::fIndent += 4; |
| 260 do { | 260 do { |
| 261 info = this->getMember(++index); | 261 info = this->getMember(++index); |
| 262 if (NULL == info) { | 262 if (nullptr == info) { |
| 263 break; | 263 break; |
| 264 } | 264 } |
| 265 if (SkDisplayType::IsDisplayable(maker, info->fType)) { | 265 if (SkDisplayType::IsDisplayable(maker, info->fType)) { |
| 266 SkDisplayable** displayable = (SkDisplayable**) info->memberData(thi
s); | 266 SkDisplayable** displayable = (SkDisplayable**) info->memberData(thi
s); |
| 267 if (*displayable == NULL || *displayable == (SkDisplayable*) -1) | 267 if (*displayable == nullptr || *displayable == (SkDisplayable*) -1) |
| 268 continue; | 268 continue; |
| 269 if (closedAngle == false) { | 269 if (closedAngle == false) { |
| 270 SkDebugf(">\n"); | 270 SkDebugf(">\n"); |
| 271 closedAngle = true; | 271 closedAngle = true; |
| 272 } | 272 } |
| 273 (*displayable)->dump(maker); | 273 (*displayable)->dump(maker); |
| 274 } | 274 } |
| 275 } while (true); | 275 } while (true); |
| 276 SkDisplayList::fIndent -= 4; | 276 SkDisplayList::fIndent -= 4; |
| 277 if (closedAngle) | 277 if (closedAngle) |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 SkASSERT(0); | 415 SkASSERT(0); |
| 416 } | 416 } |
| 417 | 417 |
| 418 void SkDisplayable::getBounds(SkRect* rect) { | 418 void SkDisplayable::getBounds(SkRect* rect) { |
| 419 SkASSERT(rect); | 419 SkASSERT(rect); |
| 420 rect->fLeft = rect->fTop = SK_ScalarMax; | 420 rect->fLeft = rect->fTop = SK_ScalarMax; |
| 421 rect->fRight= rect->fBottom = -SK_ScalarMax; | 421 rect->fRight= rect->fBottom = -SK_ScalarMax; |
| 422 } | 422 } |
| 423 | 423 |
| 424 const SkFunctionParamType* SkDisplayable::getFunctionsParameters() { | 424 const SkFunctionParamType* SkDisplayable::getFunctionsParameters() { |
| 425 return NULL; | 425 return nullptr; |
| 426 } | 426 } |
| 427 | 427 |
| 428 const SkMemberInfo* SkDisplayable::getMember(int index) { | 428 const SkMemberInfo* SkDisplayable::getMember(int index) { |
| 429 return NULL; | 429 return nullptr; |
| 430 } | 430 } |
| 431 | 431 |
| 432 const SkMemberInfo* SkDisplayable::getMember(const char name[]) { | 432 const SkMemberInfo* SkDisplayable::getMember(const char name[]) { |
| 433 return NULL; | 433 return nullptr; |
| 434 } | 434 } |
| 435 | 435 |
| 436 const SkFunctionParamType* SkDisplayable::getParameters(const SkMemberInfo* info
, | 436 const SkFunctionParamType* SkDisplayable::getParameters(const SkMemberInfo* info
, |
| 437 int* paramCount) { | 437 int* paramCount) { |
| 438 const SkFunctionParamType* params = getFunctionsParameters(); | 438 const SkFunctionParamType* params = getFunctionsParameters(); |
| 439 SkASSERT(params != NULL); | 439 SkASSERT(params != nullptr); |
| 440 int funcIndex = info->functionIndex(); | 440 int funcIndex = info->functionIndex(); |
| 441 // !!! eventually break traversing params into an external function (maybe t
his whole function) | 441 // !!! eventually break traversing params into an external function (maybe t
his whole function) |
| 442 int index = funcIndex; | 442 int index = funcIndex; |
| 443 int offset = 0; | 443 int offset = 0; |
| 444 while (--index >= 0) { | 444 while (--index >= 0) { |
| 445 while (params[offset] != 0) | 445 while (params[offset] != 0) |
| 446 offset++; | 446 offset++; |
| 447 offset++; | 447 offset++; |
| 448 } | 448 } |
| 449 int count = 0; | 449 int count = 0; |
| 450 while (params[offset] != 0) { | 450 while (params[offset] != 0) { |
| 451 count++; | 451 count++; |
| 452 offset++; | 452 offset++; |
| 453 } | 453 } |
| 454 *paramCount = count; | 454 *paramCount = count; |
| 455 return ¶ms[offset - count]; | 455 return ¶ms[offset - count]; |
| 456 } | 456 } |
| 457 | 457 |
| 458 SkDisplayable* SkDisplayable::getParent() const { | 458 SkDisplayable* SkDisplayable::getParent() const { |
| 459 return NULL; | 459 return nullptr; |
| 460 } | 460 } |
| 461 | 461 |
| 462 bool SkDisplayable::getProperty(int index, SkScriptValue* ) const { | 462 bool SkDisplayable::getProperty(int index, SkScriptValue* ) const { |
| 463 // SkASSERT(0); | 463 // SkASSERT(0); |
| 464 return false; | 464 return false; |
| 465 } | 465 } |
| 466 | 466 |
| 467 bool SkDisplayable::getProperty2(int index, SkOperand2* value) const { | 467 bool SkDisplayable::getProperty2(int index, SkOperand2* value) const { |
| 468 SkASSERT(0); | 468 SkASSERT(0); |
| 469 return false; | 469 return false; |
| 470 } | 470 } |
| 471 | 471 |
| 472 SkDisplayTypes SkDisplayable::getType() const { | 472 SkDisplayTypes SkDisplayable::getType() const { |
| 473 return SkType_Unknown; | 473 return SkType_Unknown; |
| 474 } | 474 } |
| 475 | 475 |
| 476 bool SkDisplayable::hasEnable() const { | 476 bool SkDisplayable::hasEnable() const { |
| 477 return false; | 477 return false; |
| 478 } | 478 } |
| 479 | 479 |
| 480 bool SkDisplayable::isDrawable() const { | 480 bool SkDisplayable::isDrawable() const { |
| 481 return false; | 481 return false; |
| 482 } | 482 } |
| 483 | 483 |
| 484 void SkDisplayable::onEndElement(SkAnimateMaker& ) {} | 484 void SkDisplayable::onEndElement(SkAnimateMaker& ) {} |
| 485 | 485 |
| 486 const SkMemberInfo* SkDisplayable::preferredChild(SkDisplayTypes type) { | 486 const SkMemberInfo* SkDisplayable::preferredChild(SkDisplayTypes type) { |
| 487 return NULL; | 487 return nullptr; |
| 488 } | 488 } |
| 489 | 489 |
| 490 bool SkDisplayable::resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, S
kApply* apply) { | 490 bool SkDisplayable::resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, S
kApply* apply) { |
| 491 return false; | 491 return false; |
| 492 } | 492 } |
| 493 | 493 |
| 494 //SkDisplayable* SkDisplayable::resolveTarget(SkAnimateMaker& ) { | 494 //SkDisplayable* SkDisplayable::resolveTarget(SkAnimateMaker& ) { |
| 495 // return this; | 495 // return this; |
| 496 //} | 496 //} |
| 497 | 497 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 } | 531 } |
| 532 // !!! unclear why displayable is dirtied here | 532 // !!! unclear why displayable is dirtied here |
| 533 // if this is called, this breaks fromPath.xml | 533 // if this is called, this breaks fromPath.xml |
| 534 // displayable->dirty(); | 534 // displayable->dirty(); |
| 535 } | 535 } |
| 536 | 536 |
| 537 #ifdef SK_DEBUG | 537 #ifdef SK_DEBUG |
| 538 void SkDisplayable::validate() { | 538 void SkDisplayable::validate() { |
| 539 } | 539 } |
| 540 #endif | 540 #endif |
| OLD | NEW |