From 1bc797ad68862f6af9b9663217c5a4eef3241e8f Mon Sep 17 00:00:00 2001 From: garyZlot Date: Thu, 23 May 2013 11:22:03 +0800 Subject: [PATCH] Update BitmapData.js refactor method copyChannel to improve the performance --- js/BitmapData.js | 60 +++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/js/BitmapData.js b/js/BitmapData.js index 356c326..49243b2 100644 --- a/js/BitmapData.js +++ b/js/BitmapData.js @@ -407,29 +407,47 @@ function BitmapData(width, height, transparent, fillColor, canvas) { }; this.copyChannel = function(sourceBitmapData, sourceRect, destPoint, sourceChannel, destChannel) { - var sourceColor, sourceRGB, rgb; - var redChannel = BitmapDataChannel.RED; - var greenChannel = BitmapDataChannel.GREEN; - var blueChannel = BitmapDataChannel.BLUE; + var sourceOffset = 0; + var destOffset = 0; + + switch(sourceChannel){ + case 1: + sourceOffset = 0; + break; + case 2: + sourceOffset = 1; + break; + case 4: + sourceOffset = 2; + break; + case 8: + sourceOffset = 3; + break; + } + + switch(destChannel){ + case 1: + destOffset = 0; + break; + case 2: + destOffset = 1; + break; + case 4: + destOffset = 2; + break; + case 8: + destOffset = 3; + break; + } + var sourcepos; + var sourcedata = sourceBitmapData.imagedata.data; + var data = this.imagedata.data; for (var y=0; y