File: src/main/resources/js/DumbLayer.js
/**
* dynamic html for TiledImage
* $Id: DumbLayer.js 8 2013-03-25 03:01:54Z nazotoko $
* Copyright 2013 Shun N. Watanabe <nazotoko (a+) users.sourceforge.net>
* @module TiledImage
*/
/**
* Dump Layers Object. This creates the moving layers and manages it, though,
* no contents on it. This is a kind of template class.
* @class DumbLayer
* @constructor
* @parm name {String} name of the layer. Every layer must have an unique name.
* @parm w {Number} width of the original image
* @parm h {Number} height of the original image
**/
function DumbLayer(name,w,h){
/**
* name of the layer
* @private
* @property name_
* @type String
*/
var name_=name,
/**
* parent (TiledImage) pointer
* @property parent
* @type Object
* @private
*/
parent,
/**
* DOM Element of the layer
* @property layer
* @type DOMElement
* @private
*/
layer,
/**
* max size
* @private
* @property maxSize
* @type Array[Number,Number]
*/
maxSize=[w,h],
/**
* current zoom level
* @private
* @property z_
* @type Number
*/
z_,
/**
* maximum zoom level
* @private
* @property maxZ
* @type Number
*/
maxZ;
d.mod(this,{
/**
* setParent are usually called form TiledImage object.
* The moving layers are created under moving layer.
* <ul>
* <li>div (relative): TiledImage<ul>
* <li>div (absolute): moving<ul>
* <li>div (relative): layer 1<ul>
* <li>img (absolute): tile</li>
* <li>img (absolute): tile</li>
* </ul></li>
* <li>div (relative): layer 2</li>
* </ul></li>
* <li>div (absolute): added by some Control object</li>
* <li>div (absolute): added by some Control object</li>
* <li>input (absolute): added by some Control object</li>
* <li>input (absolute): added by some Control object</li>
* <li>img (absolute): added by some Control object</li>
* </ul></li>
* </ul>
* The moving layers are created by TiledImage object created. The layer
* 1 should be created by Layers object when <strong>setParent</strong> are
* called by TiledImage object. This method is called when the Layer object
* is added by
* <a href="TiledImage.html#method_addLayer">TiledImage.addLayer</a>.
* @public
* @method setParent
* @required
* @param p {Object} object of TiledImage. It's called as parent.
*/
setParent:function (p){
parent=p;
maxZ=p.getMaxZooms()[1];
layer=d.app(p.map,'div',{id:p.target.id+'-dumbL-'+name_,classname:'map'});
},
/**
* @public
* @method detach
* @required
*/
detach:function(){
parent.map.removeChild(layer);
layer=null;
},
/**
* @public
* @method getName
* @required
* @return {String} name of the layer.
*/
getName:function(){
return name;
},
/**
* @public
* @method getWrap
* @required
* @return {Array[Boolean,Boolean]} wrap flags
*/
getWrap:function(){
return [false,false];
},
/**
* @public
* @method getMaxSize
* @required
* @return {Array[Number,Number]} original image size
*/
getMaxSize:function(){
return maxSize;
},
/**
* append DOM Elements in the range.
* When the view is moved, the append methods of all layers are called from
* TiledImage object.
* @public
* @method append
* @required
* @param l {Number} left edge by absolute position
* @param t {Number} top edge by absolute position
* @param r {Number} right edge by absolute position
* @param b {Number} bottom edge by absolute position
*/
append:function(l,t,r,b){
if(maxZ<z_)return;
//showSomething
// var ele=d.app(this.layer,o.ele,{style:{position:'absolute',left:x+'px',top:y+'px',width:w+'px',height:h+'px'}});
},
/**
* @public
* @method getMaxZ
* @required
* @return {Number} maximum zoom level
*/
getMaxZ:function(){
return maxZ;
},
/**
* set zoom level. This should be called though TiledImage object.
* @public
* @method setZoom
* @required
*/
setZoom:function(z){
z_=z;
},
/**
* @public
* @method removeAll
* @required
*/
removeAll:function(){
d.removeAll(layer);
}
});
}