blob: f97469ca34fff2c4c980e13e792303a6dbbc2de0 [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.drawing.manager.Canvas"]){
dojo._hasResource["dojox.drawing.manager.Canvas"]=true;
dojo.provide("dojox.drawing.manager.Canvas");
(function(){
dojox.drawing.manager.Canvas=dojox.drawing.util.oo.declare(function(_1){
dojo.mixin(this,_1);
var _2=dojo.contentBox(this.srcRefNode);
this.height=this.parentHeight=_2.h;
this.width=this.parentWidth=_2.w;
this.domNode=dojo.create("div",{id:"canvasNode"},this.srcRefNode);
dojo.style(this.domNode,{width:this.width,height:"auto"});
dojo.setSelectable(this.domNode,false);
this.id=this.id||this.util.uid("surface");
this.gfxSurface=dojox.gfx.createSurface(this.domNode,this.width,this.height);
this.gfxSurface.whenLoaded(this,function(){
setTimeout(dojo.hitch(this,function(){
this.surfaceReady=true;
if(dojo.isIE){
}else{
if(dojox.gfx.renderer=="silverlight"){
this.id=this.domNode.firstChild.id;
}else{
}
}
this.underlay=this.gfxSurface.createGroup();
this.surface=this.gfxSurface.createGroup();
this.overlay=this.gfxSurface.createGroup();
this.surface.setTransform({dx:0,dy:0,xx:1,yy:1});
this.gfxSurface.getDimensions=dojo.hitch(this.gfxSurface,"getDimensions");
if(_1.callback){
_1.callback(this.domNode);
}
}),500);
});
this._mouseHandle=this.mouse.register(this);
},{zoom:1,useScrollbars:true,baseClass:"drawingCanvas",resize:function(_3,_4){
this.parentWidth=_3;
this.parentHeight=_4;
this.setDimensions(_3,_4);
},setDimensions:function(_5,_6,_7,_8){
var sw=this.getScrollWidth();
this.width=Math.max(_5,this.parentWidth);
this.height=Math.max(_6,this.parentHeight);
if(this.height>this.parentHeight){
this.width-=sw;
}
if(this.width>this.parentWidth){
this.height-=sw;
}
this.gfxSurface.setDimensions(this.width,this.height);
this.domNode.parentNode.scrollTop=_8||0;
this.domNode.parentNode.scrollLeft=_7||0;
if(this.useScrollbars){
dojo.style(this.domNode.parentNode,{overflowY:this.height>this.parentHeight?"scroll":"hidden",overflowX:this.width>this.parentWidth?"scroll":"hidden"});
}else{
dojo.style(this.domNode.parentNode,{overflowY:"hidden",overflowX:"hidden"});
}
},setZoom:function(_9){
this.zoom=_9;
this.surface.setTransform({xx:_9,yy:_9});
this.setDimensions(this.width*_9,this.height*_9);
},onScroll:function(){
},getScrollOffset:function(){
return {top:this.domNode.parentNode.scrollTop,left:this.domNode.parentNode.scrollLeft};
},getScrollWidth:function(){
var p=dojo.create("div");
p.innerHTML="<div style=\"width:50px;height:50px;overflow:hidden;position:absolute;top:0px;left:-1000px;\"><div style=\"height:100px;\"></div>";
var _a=p.firstChild;
dojo.body().appendChild(_a);
var _b=dojo.contentBox(_a).h;
dojo.style(_a,"overflow","scroll");
var _c=_b-dojo.contentBox(_a).h;
dojo.destroy(_a);
this.getScrollWidth=function(){
return _c;
};
return _c;
}});
})();
}