FABRICJS TEXT (Изменить размер ограничительной рамки) - PullRequest
0 голосов
/ 21 мая 2019

Мне нужно настраиваемое текстовое поле, чтобы вы могли изменить размер ограничивающего прямоугольника, БЕЗ растягивания шрифта.

Создан пользовательский класс ткани на основе класса 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 })
      },
    })

Мне нужно уметь

  1. Растянуть ограничивающий прямоугольник TextBox без масштаба изменения шрифта.
  2. Уметь перетаскивать и вставлять текст в текстовое поле с указателем конкретного символа.
...