Spaces:
Running
Running
| import { fabric } from 'fabric'; | |
| import Component from '@/interface/component'; | |
| import { componentNames } from '@/consts'; | |
| /** | |
| * FreeDrawing | |
| * @class FreeDrawing | |
| * @param {Graphics} graphics - Graphics instance | |
| * @extends {Component} | |
| * @ignore | |
| */ | |
| class FreeDrawing extends Component { | |
| constructor(graphics) { | |
| super(componentNames.FREE_DRAWING, graphics); | |
| /** | |
| * Brush width | |
| * @type {number} | |
| */ | |
| this.width = 12; | |
| /** | |
| * fabric.Color instance for brush color | |
| * @type {fabric.Color} | |
| */ | |
| this.oColor = new fabric.Color('rgba(0, 0, 0, 0.5)'); | |
| } | |
| /** | |
| * Start free drawing mode | |
| * @param {{width: ?number, color: ?string}} [setting] - Brush width & color | |
| */ | |
| start(setting) { | |
| const canvas = this.getCanvas(); | |
| canvas.isDrawingMode = true; | |
| this.setBrush(setting); | |
| } | |
| /** | |
| * Set brush | |
| * @param {{width: ?number, color: ?string}} [setting] - Brush width & color | |
| */ | |
| setBrush(setting) { | |
| const brush = this.getCanvas().freeDrawingBrush; | |
| setting = setting || {}; | |
| this.width = setting.width || this.width; | |
| if (setting.color) { | |
| this.oColor = new fabric.Color(setting.color); | |
| } | |
| brush.width = this.width; | |
| brush.color = this.oColor.toRgba(); | |
| } | |
| /** | |
| * End free drawing mode | |
| */ | |
| end() { | |
| const canvas = this.getCanvas(); | |
| canvas.isDrawingMode = false; | |
| } | |
| } | |
| export default FreeDrawing; | |