64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
import { __extends } from "tslib";
|
|
import Displayable from './Displayable.js';
|
|
import { getBoundingRect } from '../contain/text.js';
|
|
import { DEFAULT_PATH_STYLE } from './Path.js';
|
|
import { createObject, defaults } from '../core/util.js';
|
|
import { DEFAULT_FONT } from '../core/platform.js';
|
|
export var DEFAULT_TSPAN_STYLE = defaults({
|
|
strokeFirst: true,
|
|
font: DEFAULT_FONT,
|
|
x: 0,
|
|
y: 0,
|
|
textAlign: 'left',
|
|
textBaseline: 'top',
|
|
miterLimit: 2
|
|
}, DEFAULT_PATH_STYLE);
|
|
var TSpan = (function (_super) {
|
|
__extends(TSpan, _super);
|
|
function TSpan() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
TSpan.prototype.hasStroke = function () {
|
|
var style = this.style;
|
|
var stroke = style.stroke;
|
|
return stroke != null && stroke !== 'none' && style.lineWidth > 0;
|
|
};
|
|
TSpan.prototype.hasFill = function () {
|
|
var style = this.style;
|
|
var fill = style.fill;
|
|
return fill != null && fill !== 'none';
|
|
};
|
|
TSpan.prototype.createStyle = function (obj) {
|
|
return createObject(DEFAULT_TSPAN_STYLE, obj);
|
|
};
|
|
TSpan.prototype.setBoundingRect = function (rect) {
|
|
this._rect = rect;
|
|
};
|
|
TSpan.prototype.getBoundingRect = function () {
|
|
var style = this.style;
|
|
if (!this._rect) {
|
|
var text = style.text;
|
|
text != null ? (text += '') : (text = '');
|
|
var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);
|
|
rect.x += style.x || 0;
|
|
rect.y += style.y || 0;
|
|
if (this.hasStroke()) {
|
|
var w = style.lineWidth;
|
|
rect.x -= w / 2;
|
|
rect.y -= w / 2;
|
|
rect.width += w;
|
|
rect.height += w;
|
|
}
|
|
this._rect = rect;
|
|
}
|
|
return this._rect;
|
|
};
|
|
TSpan.initDefaultProps = (function () {
|
|
var tspanProto = TSpan.prototype;
|
|
tspanProto.dirtyRectTolerance = 10;
|
|
})();
|
|
return TSpan;
|
|
}(Displayable));
|
|
TSpan.prototype.type = 'tspan';
|
|
export default TSpan;
|