File size: 2,514 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
import * as util from '../../util';
let fn, elesfn;
fn = elesfn = {};
let defineDimFns = function( opts ){
opts.uppercaseName = util.capitalize( opts.name );
opts.autoName = 'auto' + opts.uppercaseName;
opts.labelName = 'label' + opts.uppercaseName;
opts.outerName = 'outer' + opts.uppercaseName;
opts.uppercaseOuterName = util.capitalize( opts.outerName );
fn[ opts.name ] = function dimImpl(){
let ele = this[0];
let _p = ele._private;
let cy = _p.cy;
let styleEnabled = cy._private.styleEnabled;
if( ele ){
if( styleEnabled ){
if( ele.isParent() ){
ele.updateCompoundBounds();
return _p[ opts.autoName ] || 0;
}
let d = ele.pstyle( opts.name );
switch( d.strValue ){
case 'label':
ele.recalculateRenderedStyle();
return _p.rstyle[ opts.labelName ] || 0;
default:
return d.pfValue;
}
} else {
return 1;
}
}
};
fn[ 'outer' + opts.uppercaseName ] = function outerDimImpl(){
let ele = this[0];
let _p = ele._private;
let cy = _p.cy;
let styleEnabled = cy._private.styleEnabled;
if( ele ){
if( styleEnabled ){
let dim = ele[ opts.name ]();
let border = ele.pstyle( 'border-width' ).pfValue; // n.b. 1/2 each side
let padding = 2 * ele.padding();
return dim + border + padding;
} else {
return 1;
}
}
};
fn[ 'rendered' + opts.uppercaseName ] = function renderedDimImpl(){
let ele = this[0];
if( ele ){
let d = ele[ opts.name ]();
return d * this.cy().zoom();
}
};
fn[ 'rendered' + opts.uppercaseOuterName ] = function renderedOuterDimImpl(){
let ele = this[0];
if( ele ){
let od = ele[ opts.outerName ]();
return od * this.cy().zoom();
}
};
};
defineDimFns( {
name: 'width'
} );
defineDimFns( {
name: 'height'
} );
elesfn.padding = function(){
let ele = this[0];
let _p = ele._private;
if( ele.isParent() ){
ele.updateCompoundBounds();
if( _p.autoPadding !== undefined ){
return _p.autoPadding;
} else {
return ele.pstyle('padding').pfValue;
}
} else {
return ele.pstyle('padding').pfValue;
}
};
elesfn.paddedHeight = function(){
let ele = this[0];
return ele.height() + (2 * ele.padding());
};
elesfn.paddedWidth = function(){
let ele = this[0];
return ele.width() + (2 * ele.padding());
};
export default elesfn;
|