You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
import { __extends } from "tslib"; |
|
import Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js'; |
|
import BoundingRect from '../core/BoundingRect.js'; |
|
import { defaults, createObject } from '../core/util.js'; |
|
export var DEFAULT_IMAGE_STYLE = defaults({ |
|
x: 0, |
|
y: 0 |
|
}, DEFAULT_COMMON_STYLE); |
|
export var DEFAULT_IMAGE_ANIMATION_PROPS = { |
|
style: defaults({ |
|
x: true, |
|
y: true, |
|
width: true, |
|
height: true, |
|
sx: true, |
|
sy: true, |
|
sWidth: true, |
|
sHeight: true |
|
}, DEFAULT_COMMON_ANIMATION_PROPS.style) |
|
}; |
|
function isImageLike(source) { |
|
return !!(source |
|
&& typeof source !== 'string' |
|
&& source.width && source.height); |
|
} |
|
var ZRImage = (function (_super) { |
|
__extends(ZRImage, _super); |
|
function ZRImage() { |
|
return _super !== null && _super.apply(this, arguments) || this; |
|
} |
|
ZRImage.prototype.createStyle = function (obj) { |
|
return createObject(DEFAULT_IMAGE_STYLE, obj); |
|
}; |
|
ZRImage.prototype._getSize = function (dim) { |
|
var style = this.style; |
|
var size = style[dim]; |
|
if (size != null) { |
|
return size; |
|
} |
|
var imageSource = isImageLike(style.image) |
|
? style.image : this.__image; |
|
if (!imageSource) { |
|
return 0; |
|
} |
|
var otherDim = dim === 'width' ? 'height' : 'width'; |
|
var otherDimSize = style[otherDim]; |
|
if (otherDimSize == null) { |
|
return imageSource[dim]; |
|
} |
|
else { |
|
return imageSource[dim] / imageSource[otherDim] * otherDimSize; |
|
} |
|
}; |
|
ZRImage.prototype.getWidth = function () { |
|
return this._getSize('width'); |
|
}; |
|
ZRImage.prototype.getHeight = function () { |
|
return this._getSize('height'); |
|
}; |
|
ZRImage.prototype.getAnimationStyleProps = function () { |
|
return DEFAULT_IMAGE_ANIMATION_PROPS; |
|
}; |
|
ZRImage.prototype.getBoundingRect = function () { |
|
var style = this.style; |
|
if (!this._rect) { |
|
this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); |
|
} |
|
return this._rect; |
|
}; |
|
return ZRImage; |
|
}(Displayable)); |
|
ZRImage.prototype.type = 'image'; |
|
export default ZRImage;
|
|
|