apply method
Implementation
@override
void apply(BitmapData bitmapData, [Rectangle<num>? rectangle]) {
final renderTextureQuad = rectangle == null
? bitmapData.renderTextureQuad
: bitmapData.renderTextureQuad.cut(rectangle);
final imageData = renderTextureQuad.getImageData();
final data = imageData.data;
final width = imageData.width;
final height = imageData.height;
final pixelRatio = renderTextureQuad.pixelRatio;
final blurX = (this.blurX * pixelRatio).round();
final blurY = (this.blurY * pixelRatio).round();
final stride = width * 4;
premultiplyAlpha(data);
for (var x = 0; x < width; x++) {
blur(data, x * 4 + 0, height, stride, blurY);
blur(data, x * 4 + 1, height, stride, blurY);
blur(data, x * 4 + 2, height, stride, blurY);
blur(data, x * 4 + 3, height, stride, blurY);
}
for (var y = 0; y < height; y++) {
blur(data, y * stride + 0, width, 4, blurX);
blur(data, y * stride + 1, width, 4, blurX);
blur(data, y * stride + 2, width, 4, blurX);
blur(data, y * stride + 3, width, 4, blurX);
}
unpremultiplyAlpha(data);
renderTextureQuad.putImageData(imageData);
}