drawSprites method

void drawSprites(
  1. Canvas canvas,
  2. Size size
)

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();
    }
  }
}