Мне нужно настраиваемое текстовое поле, чтобы вы могли изменить размер ограничивающего прямоугольника, БЕЗ растягивания шрифта.
Создан пользовательский класс ткани на основе класса fabric.Textbox. Имею некоторый опыт вызова методов родительского класса в пользовательском классе и их переопределения.
fabric['CustomText'] = fabric.util.createClass(fabric.Textbox, {
type: 'custom-text',
initialize: function(element, options) {
this.callSuper('initialize', element, options)
options && this.set('id', options.id) && this.set('clipTo', options.clipTo)
},
insertChars: function(chars) {
if (this.maxWidth) {
const textWidthUnderCursor = this._getLineWidth(this.ctx, this.get2DCursorLocation().lineIndex)
if (textWidthUnderCursor + this.ctx.measureText(chars).width > this.maxWidth) {
chars = '\n' + chars
}
}
if (this.maxLines) {
const newLinesLength = this._wrapText(this.ctx, this.text + chars).length
if (newLinesLength > this.maxLines) {
return
}
}
// Call parent class method
this.callSuper('insertChars', chars)
},
toObject: function() {
return fabric.util.object.extend(this.callSuper('toObject'), { id: this.id, clipTo: this.clipTo })
},
})
Мне нужно уметь
- Растянуть ограничивающий прямоугольник TextBox без масштаба изменения шрифта.
- Уметь перетаскивать и вставлять текст в текстовое поле с указателем конкретного символа.