Skip fillRect if fill color is transparent, speed up copyPixels on HTML5

This commit is contained in:
Joshua Granick
2017-06-06 09:04:27 -07:00
parent 2f03b68e47
commit e17e4f45f8

View File

@@ -152,7 +152,7 @@ class Image {
this.buffer = new ImageBuffer (null, width, height); this.buffer = new ImageBuffer (null, width, height);
ImageCanvasUtil.createCanvas (this, width, height); ImageCanvasUtil.createCanvas (this, width, height);
if (color != null) { if (color != null && color != 0) {
fillRect (new Rectangle (0, 0, width, height), color); fillRect (new Rectangle (0, 0, width, height), color);
@@ -162,7 +162,7 @@ class Image {
this.buffer = new ImageBuffer (new UInt8Array (width * height * 4), width, height); this.buffer = new ImageBuffer (new UInt8Array (width * height * 4), width, height);
if (color != null) { if (color != null && color != 0) {
fillRect (new Rectangle (0, 0, width, height), color); fillRect (new Rectangle (0, 0, width, height), color);
@@ -355,7 +355,9 @@ class Image {
case CANVAS: case CANVAS:
if (alphaImage != null) { // The data path appears to be much faster, even with no alpha image
//if (alphaImage != null || sourceImage.type != CANVAS) {
ImageCanvasUtil.convertToData (this); ImageCanvasUtil.convertToData (this);
ImageCanvasUtil.convertToData (sourceImage); ImageCanvasUtil.convertToData (sourceImage);
@@ -363,13 +365,13 @@ class Image {
ImageDataUtil.copyPixels (this, sourceImage, sourceRect, destPoint, alphaImage, alphaPoint, mergeAlpha); ImageDataUtil.copyPixels (this, sourceImage, sourceRect, destPoint, alphaImage, alphaPoint, mergeAlpha);
} else { //} else {
//
ImageCanvasUtil.convertToCanvas (this); //ImageCanvasUtil.convertToCanvas (this);
ImageCanvasUtil.convertToCanvas (sourceImage); //ImageCanvasUtil.convertToCanvas (sourceImage);
ImageCanvasUtil.copyPixels (this, sourceImage, sourceRect, destPoint, alphaImage, alphaPoint, mergeAlpha); //ImageCanvasUtil.copyPixels (this, sourceImage, sourceRect, destPoint, alphaImage, alphaPoint, mergeAlpha);
//
} //}
case DATA: case DATA: