1  /**
     2   * com.sekati.utils.BitmapUtils
     3   * @version 1.0.0
     4   * @author jason m horwitz | sekati.com
     5   * Copyright (C) 2007  jason m horwitz, Sekat LLC. All Rights Reserved.
     6   * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
     7   */
     8   
     9  import flash.display.BitmapData;
    10  import flash.geom.Matrix;
    11  
    12  /**
    13   * Static class wrapping variousBitmap utilities.
    14   */
    15  class com.sekati.utils.BitmapUtils {
    16  
    17  	/**
    18  	 * copy object to bitmapData object
    19  	 * @param src (MovieClip)
    20  	 * @param target (MovieClip)
    21  	 * @param deleteSource (Boolean)	
    22  	 * @param cacheAsBitmap (Boolean)	
    23  	 * @return Void
    24  	 * {@code Usage: 
    25  	 * BitmapUtils.copy(img, imgCopy, false, true); //copy to a new movieclip
    26  	 * BitmapUtils.copy(img, img, false, true);  //overwrites itself
    27  	 * }
    28  	 */
    29  	public static function copy(src:MovieClip, target:MovieClip, deleteSource:Boolean, cacheAsBitmap:Boolean):Void {
    30  		var bdo:BitmapData = new BitmapData( src._width, src._height, true, 0 );
    31  		target.attachBitmap( bdo, target.getNextHighestDepth( ), "auto", true );
    32  		bdo.draw( src );
    33  		if (deleteSource) {
    34  			src.removeMovieClip( );
    35  		}
    36  		if (cacheAsBitmap) {
    37  			target.cacheAsBitmap = true;
    38  		}
    39  	}
    40  
    41  	/**
    42  	 * returns an array of pixel data from bitmap data object to post/store for later use
    43  	 * @param src (Object)
    44  	 * @param scale (Number)
    45  	 * @return Array
    46  	 */	
    47  	public static function getPixelData(src:Object, scale:Number):Array {
    48  		var pixels:Array = new Array( );
    49  		var bitmap:BitmapData = new BitmapData( src._width, src._height );
    50  		var matrix:Matrix = new Matrix( );
    51  		matrix.scale( scale, scale );
    52  		bitmap.draw( src, matrix );
    53  		var w:Number = bitmap.width;
    54  		var h:Number = bitmap.height;
    55  		var tmp:String;
    56  		for (var a:Number = 0; a <= w ; a++) {
    57  			for (var b:Number = 0; b <= h ; b++) {
    58  				tmp = bitmap.getPixel32( a, b ).toString( 16 );
    59  				pixels.push( tmp.substr( 1 ) );
    60  			}
    61  		}
    62  		bitmap.dispose( );
    63  		return pixels;
    64  	}
    65  
    66  	private function BitmapUtils() {
    67  	}
    68  }