208 {
209 if (!this->isAnimating())
210 return;
211
212 if (!fTimeBase) {
213 fTimeBase = t;
214 }
215
216 const auto rel_t = (t - fTimeBase) / kFocusDuration,
218
220 for (int i = 0; i < 9; ++i) {
221 m[i] = fM0[i] + map_t * (fM1[i] - fM0[i]);
222 }
223
225 fTarget->
fMatrix->setMatrix(m);
226
227 const auto shadeOpacity = fOpacity0 + map_t * (fOpacity1 - fOpacity0);
228 fShadePaint->setOpacity(shadeOpacity);
229
230 if (rel_t < 1)
231 return;
232
233 switch (fState) {
234 case State::kFocusing:
235 fState = State::kFocused;
236 break;
237 case State::kUnfocusing:
238 fState = State::kIdle;
240 break;
241
242 case State::kIdle:
243 case State::kFocused:
245 break;
246 }
247 }
static constexpr const T & SkTPin(const T &x, const T &lo, const T &hi)
float computeYFromX(float x) const
void removeChild(const sk_sp< RenderNode > &)
sk_sp< sksg::Matrix< SkMatrix > > fMatrix