bool SkDrawPaint::resolveIDs(SkAnimateMaker& maker, SkDisplayable* origDisp, SkApply* ) { SkASSERT(origDisp->isPaint()); SkDrawPaint* original = (SkDrawPaint*) origDisp; if (fOwnsColor && maker.resolveID(color, original->color) == false) return true; if (fOwnsMaskFilter && maker.resolveID(maskFilter, original->maskFilter) == false) return true; if (fOwnsPathEffect && maker.resolveID(pathEffect, original->pathEffect) == false) return true; if (fOwnsShader && maker.resolveID(shader, original->shader) == false) return true; if (fOwnsTypeface && maker.resolveID(typeface, original->typeface) == false) return true; return false; // succeeded }
bool SkGroup::resolveIDs(SkAnimateMaker& maker, SkDisplayable* orig, SkApply* apply) { SkGroup* original = (SkGroup*) orig; SkTDDrawableArray& originalChildren = original->fChildren; SkDrawable** originalPtr = originalChildren.begin(); SkDrawable** ptr = fChildren.begin(); SkDrawable** end = fChildren.end(); SkDrawable** origChild = ((SkGroup*) orig)->fChildren.begin(); while (ptr < end) { SkDrawable* drawable = *ptr++; maker.resolveID(drawable, *origChild++); if (drawable->resolveIDs(maker, *originalPtr++, apply) == true) return true; // failed } return false; }
bool SkApply::resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* apply) { // replace to/formula strings in animators of the form xxx.step with the step value, if xxx.step is in scope if (resolveField(maker, apply, &dynamicScope) == false) return true; // failed SkAnimateBase** endPtr = fAnimators.end(); SkAnimateBase** origPtr = ((SkApply*) original)->fAnimators.begin(); for (SkAnimateBase** animPtr = fAnimators.begin(); animPtr < endPtr; ) { SkAnimateBase* animator = *animPtr++; maker.resolveID(animator, *origPtr++); if (resolveField(maker, this, &animator->target) == false) return true; if (resolveField(maker, this, &animator->from) == false) return true; if (resolveField(maker, this, &animator->to) == false) return true; if (resolveField(maker, this, &animator->formula) == false) return true; } // setEmbedded(); onEndElement(maker); return false; // succeeded }