blob: edf4a7d17338721c54afc1892df043d6bd1d3e5f [file] [log] [blame]
dojo.provide("dojo.widget.AnimatedPng");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.AnimatedPng",dojo.widget.HtmlWidget,{isContainer:false,width:0,height:0,aniSrc:"",interval:100,_blankSrc:dojo.uri.moduleUri("dojo.widget","templates/images/blank.gif"),templateString:"<img class=\"dojoAnimatedPng\" />",postCreate:function(){
this.cellWidth=this.width;
this.cellHeight=this.height;
var _1=new Image();
var _2=this;
_1.onload=function(){
_2._initAni(_1.width,_1.height);
};
_1.src=this.aniSrc;
},_initAni:function(w,h){
this.domNode.src=this._blankSrc;
this.domNode.width=this.cellWidth;
this.domNode.height=this.cellHeight;
this.domNode.style.backgroundImage="url("+this.aniSrc+")";
this.domNode.style.backgroundRepeat="no-repeat";
this.aniCols=Math.floor(w/this.cellWidth);
this.aniRows=Math.floor(h/this.cellHeight);
this.aniCells=this.aniCols*this.aniRows;
this.aniFrame=0;
window.setInterval(dojo.lang.hitch(this,"_tick"),this.interval);
},_tick:function(){
this.aniFrame++;
if(this.aniFrame==this.aniCells){
this.aniFrame=0;
}
var _5=this.aniFrame%this.aniCols;
var _6=Math.floor(this.aniFrame/this.aniCols);
var bx=-1*_5*this.cellWidth;
var by=-1*_6*this.cellHeight;
this.domNode.style.backgroundPosition=bx+"px "+by+"px";
}});