Dna class
♥0 |
Line 76 |
Modified 2010-06-01 02:36:42 |
MIT License
archived:2017-03-20 14:19:44
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