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;
 |