42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
|
var Class = require('../../core/class');
|
||
|
var Transform = require('../../core/transform');
|
||
|
var Container = require('../../dom/container');
|
||
|
var Node = require('./node');
|
||
|
|
||
|
module.exports = Class(Node, Container, {
|
||
|
|
||
|
element_initialize: Node.prototype.initialize,
|
||
|
|
||
|
initialize: function(width, height){
|
||
|
this.element_initialize('clippingrectangle');
|
||
|
this.width = width;
|
||
|
this.height = height;
|
||
|
},
|
||
|
|
||
|
_transform: function(){
|
||
|
var element = this.element;
|
||
|
element.clip = true;
|
||
|
element.coordorigin = -this.x + ',' + (-1 * this.y);
|
||
|
element.coordsize = this.width + ',' + this.height;
|
||
|
// IE8 doesn't like clipBottom. Don't ask me why.
|
||
|
// element.style.clipBottom = this.height + this.y;
|
||
|
element.style.clipLeft = this.x;
|
||
|
element.style.clipRight = this.width + this.x;
|
||
|
element.style.clipTop = this.y;
|
||
|
element.style.left = -this.x;
|
||
|
element.style.top = -this.y;
|
||
|
element.style.width = this.width + this.x;
|
||
|
element.style.height = this.height + this.y;
|
||
|
element.style.rotation = 0;
|
||
|
|
||
|
var container = this.parentNode;
|
||
|
this._activeTransform = container ? new Transform(container._activeTransform).transform(this) : this;
|
||
|
var node = this.firstChild;
|
||
|
while (node){
|
||
|
node._transform();
|
||
|
node = node.nextSibling;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
});
|