[mirotalksfu] - extend whiteboard functions

هذا الالتزام موجود في:
Miroslav Pejic
2021-09-26 18:40:45 +02:00
الأصل c505ef2c73
التزام 6362f37ac4
3 ملفات معدلة مع 114 إضافات و7 حذوفات

عرض الملف

@@ -46,8 +46,8 @@ const wbHeight = 600;
let wbCanvas = null;
let wbIsDrawing = false;
let wbIsOpen = false;
var wbIsRedoing = false;
var wbPop = [];
let wbIsRedoing = false;
let wbPop = [];
const socket = io();
@@ -64,8 +64,14 @@ function getRandomNumber(length) {
function initClient() {
if (!DetectRTC.isMobileDevice) {
setTippy('closeNavButton', 'Close', 'right');
setTippy('whiteboardPencilBtn', 'Drawing mode', 'top');
setTippy('whiteboardObjectBtn', 'Object mode', 'top');
setTippy('whiteboardUndoBtn', 'Undo', 'top');
setTippy('whiteboardRedoBtn', 'Redo', 'top');
setTippy('whiteboardTextBtn', 'Add Text', 'top');
setTippy('whiteboardLineBtn', 'Add Line', 'top');
setTippy('whiteboardRectBtn', 'Add Rectangle', 'top');
setTippy('whiteboardCircleBtn', 'Add Circle', 'top');
setTippy('whiteboardSaveBtn', 'Save', 'top');
setTippy('whiteboardCleanBtn', 'Clear', 'top');
setTippy('whiteboardCloseBtn', 'Close', 'top');
@@ -598,6 +604,12 @@ function handleButtons() {
whiteboardButton.onclick = () => {
toggleWhiteboard();
};
whiteboardPencilBtn.onclick = () => {
whiteboardIsDrawingMode(true);
};
whiteboardObjectBtn.onclick = () => {
whiteboardIsDrawingMode(false);
};
whiteboardUndoBtn.onclick = () => {
whiteboardAction(getWhiteboardAction('undo'));
};
@@ -607,6 +619,18 @@ function handleButtons() {
whiteboardSaveBtn.onclick = () => {
wbCanvasSaveImg();
};
whiteboardTextBtn.onclick = () => {
whiteboardAddObj('text');
};
whiteboardLineBtn.onclick = () => {
whiteboardAddObj('line');
};
whiteboardRectBtn.onclick = () => {
whiteboardAddObj('rect');
};
whiteboardCircleBtn.onclick = () => {
whiteboardAddObj('circle');
};
whiteboardCleanBtn.onclick = () => {
whiteboardAction(getWhiteboardAction('clear'));
};
@@ -869,7 +893,7 @@ function setupWhiteboardCanvas() {
wbCanvas = new fabric.Canvas('wbCanvas');
wbCanvas.freeDrawingBrush.color = '#FFFFFF';
wbCanvas.freeDrawingBrush.width = 3;
wbCanvas.isDrawingMode = true;
whiteboardIsDrawingMode(true);
}
function setupWhiteboardCanvasSize() {
@@ -899,6 +923,83 @@ function setupWhiteboardCanvasSize() {
wbCanvas.renderAll();
}
function whiteboardIsDrawingMode(b) {
wbCanvas.isDrawingMode = b;
if (b) {
whiteboardPencilBtn.style.color = 'green';
whiteboardObjectBtn.style.color = 'white';
} else {
whiteboardPencilBtn.style.color = 'white';
whiteboardObjectBtn.style.color = 'green';
}
}
function whiteboardAddObj(type) {
let obj = null;
switch (type) {
case 'text':
Swal.fire({
background: swalBackground,
title: 'Enter the text',
input: 'text',
showCancelButton: true,
confirmButtonText: 'OK',
}).then((result) => {
if (result.isConfirmed) {
let wbCanvasText = result.value;
const text = new fabric.Text(wbCanvasText, {
top: 0,
left: 0,
fontFamily: 'Comfortaa',
fill: wbCanvas.freeDrawingBrush.color,
strokeWidth: wbCanvas.freeDrawingBrush.width,
stroke: wbCanvas.freeDrawingBrush.color,
});
wbCanvas.add(text);
whiteboardIsDrawingMode(false);
wbCanvasToJson();
}
});
break;
case 'line':
const line = new fabric.Line([50, 100, 200, 200], {
top: 0,
left: 0,
fill: wbCanvas.freeDrawingBrush.color,
strokeWidth: wbCanvas.freeDrawingBrush.width,
stroke: wbCanvas.freeDrawingBrush.color,
});
obj = line;
break;
case 'circle':
const circle = new fabric.Circle({
radius: 50,
fill: 'transparent',
stroke: wbCanvas.freeDrawingBrush.color,
strokeWidth: wbCanvas.freeDrawingBrush.width,
});
obj = circle;
break;
case 'rect':
const rect = new fabric.Rect({
top: 0,
left: 0,
width: 150,
height: 100,
fill: 'transparent',
stroke: wbCanvas.freeDrawingBrush.color,
strokeWidth: wbCanvas.freeDrawingBrush.width,
});
obj = rect;
break;
}
if (obj) {
wbCanvas.add(obj);
whiteboardIsDrawingMode(false);
wbCanvasToJson();
}
}
function setupWhiteboardLocalListners() {
wbCanvas.on('mouse:down', function () {
mouseDown();