drawSprites method
Implementation
void drawSprites(Canvas canvas, Size size) {
for (final sprite in videoItem.sprites) {
final imageKey = sprite.imageKey;
// var matteKey = sprite.matteKey;
if (imageKey.isEmpty ||
videoItem.dynamicItem.dynamicHidden[imageKey] == true) {
continue;
}
final frameItem = sprite.frames[currentFrame];
final needTransform = frameItem.hasTransform();
final needClip = frameItem.hasClipPath();
if (needTransform) {
canvas.save();
canvas.transform(Float64List.fromList(<double>[
frameItem.transform.a,
frameItem.transform.b,
0.0,
0.0,
frameItem.transform.c,
frameItem.transform.d,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
frameItem.transform.tx,
frameItem.transform.ty,
0.0,
1.0
]));
}
if (needClip) {
canvas.save();
canvas.clipPath(buildDPath(frameItem.clipPath));
}
final frameRect =
Rect.fromLTRB(0, 0, frameItem.layout.width, frameItem.layout.height);
final frameAlpha =
frameItem.hasAlpha() ? (frameItem.alpha * 255).toInt() : 255;
drawBitmap(canvas, imageKey, frameRect, frameAlpha);
drawShape(canvas, frameItem.shapes, frameAlpha);
// draw dynamic
final dynamicDrawer = videoItem.dynamicItem.dynamicDrawer[imageKey];
if (dynamicDrawer != null) {
dynamicDrawer(canvas, currentFrame);
}
if (needClip) {
canvas.restore();
}
if (needTransform) {
canvas.restore();
}
}
}