Dna class

by yukifuruyoru
♥0 | Line 76 | Modified 2010-06-01 02:36:42 | MIT License
play

ActionScript3 source code

/**
 * Copyright yukifuruyoru ( http://wonderfl.net/user/yukifuruyoru )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/tNfC
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
            
        }
    }
}



//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import flash.display.BitmapData;

function dmap(dat:Array):BitmapData{
	var dna:Dna= new Dna(dat);
	return dna.bmp();
}

class Dna{
	public var size:Array;
	public var palette:Array;
	public var rows:Vector.<Vector.<uint>>;
	
	public function Dna(dat:Array){
		size=dat.shift();
		palette=dat.shift();
		rows=zeromap(size[1]);
		for(var i:uint=0;i<dat.length;i++){
			rows[i]=Vector.<uint>(dat[i]);
		}
		dat.unshift(size,palette);
	}
	
	private function zeromap(h:uint):Vector.<Vector.<uint>>{
		var rows:Vector.<Vector.<uint>>=new Vector.<Vector.<uint>>(h);
		for(var i:uint=0; i<h;i++){
			rows[i]=new Vector.<uint>(1);
		}
		return rows;
	}
	public function bmp():BitmapData{
		var dum:BitmapData=new BitmapData(size[0],size[1],true,palette[0]);
		dotplot(dum);
		return dum;
	}
	private function dotplot(canvas:BitmapData):void{
		var h:uint=rows.length;
		
		canvas.lock();
		for (var i:uint=0;i<h;i++){
			var w:uint=rows[i].length;
			for (var j:uint=0;j<w;j++){
				var color:int=rows[i][j];
				if(color>palette.length){color=0;}
				canvas.setPixel32(j,i,palette[color]);
			}
		}
		canvas.unlock();
	}
	
	public function code():String{
		var rowstr:String=rows[0].toString();
		for(var i:uint=1;i<rows.length;i++){
			rowstr+="],["+rows[i];
		}
		rowstr+="]]";
		var headstr:String="[["+size+"],["+palette+"],[";
		return headstr.concat(rowstr);
	}
	private function optim():void{
		rows.reverse();
		var h:uint=rows.length;
		for(var i:uint=0;i<h;i++){
			rows[i]
		}
		
	}
	private function hex(hdn:uint, nmode:uint=8) :String{
	var str:String="";	var cifra:uint;
	var L:uint=(0<nmode&&nmode<9)? nmode : 8;
	for (var i:uint=0; i<L; i++){
		cifra= 0xF & (hdn >>> 4*i);
		cifra+=(cifra>9)?55:48;	//48="0",57="9",65="A";
		str=String.fromCharCode(cifra)+str;}
	return "0x"+str;
	}
	
}

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx