apply method

  1. @override
void apply(
  1. BitmapData bitmapData, [
  2. Rectangle<num>? rectangle
])
override

Implementation

@override
void apply(BitmapData bitmapData, [Rectangle<num>? rectangle]) {
  final renderTextureQuad = rectangle == null
      ? bitmapData.renderTextureQuad
      : bitmapData.renderTextureQuad.cut(rectangle);

  final matrix = renderTextureQuad.drawMatrix;
  final vxList = renderTextureQuad.vxList;
  final canvas = renderTextureQuad.renderTexture.canvas;
  final renderContext = RenderContextCanvas(canvas);
  final renderState = RenderState(renderContext, matrix);
  final context = renderContext.rawContext;

  context.save();
  context.globalCompositeOperation = 'destination-in';
  context.setTransform(
      matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
  context.rect(
      vxList[0], vxList[1], vxList[8] - vxList[0], vxList[9] - vxList[1]);
  context.clip();
  renderState.globalMatrix.prepend(this.matrix);
  renderState.renderTextureQuad(this.bitmapData.renderTextureQuad);
  context.restore();
}