63 lines
2.1 KiB
63 lines
2.1 KiB
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;
|
|
|