blob: 7178bb4304c94be4ee7bcf954485821d6a2b208d [file] [log] [blame]
/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
const WbShapeBase = require('./wb-tool-shape-base');
module.exports = class WbShape extends WbShapeBase {
constructor(wb, sBtn) {
super();
Object.assign(this, {
obj: null
, isDown: false
, orig: {x: 0, y: 0}
});
const self = this;
function _mouseDown(o) {
const canvas = this
, pointer = canvas.getPointer(o.e);
self.isDown = true;
self.orig = {x: pointer.x, y: pointer.y};
self.createShape.call(self, canvas);
self.add2Canvas.call(self, canvas);
};
function _mouseMove(o) {
const canvas = this;
if (!self.isDown) {
return;
}
const pointer = canvas.getPointer(o.e);
self.updateShape.call(self, pointer);
canvas.requestRenderAll();
};
function _mouseUp() {
const canvas = this;
self.isDown = false;
self.obj.setCoords();
self.obj.selectable = false;
canvas.requestRenderAll();
self.objectCreated(self.obj, canvas);
};
this.activate = () => {
wb.eachCanvas(function(canvas) {
canvas.on({
'mouse:down': _mouseDown
, 'mouse:move': _mouseMove
, 'mouse:up': _mouseUp
});
});
this.internalActivate();
VideoUtil.highlight(sBtn.removeClass('disabled'), 'bg-warning', 5);
};
this.deactivate = () => {
wb.eachCanvas(function(canvas) {
canvas.off({
'mouse:down': _mouseDown
, 'mouse:move': _mouseMove
, 'mouse:up': _mouseUp
});
});
};
}
add2Canvas(canvas) {
canvas.add(this.obj);
}
createShape() {}
updateShape() {}
internalActivate() {}
};