mirror of https://github.com/aiden09/mirotalksfu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.6 KiB
JavaScript
93 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
let customRatio = true;
|
|
|
|
// aspect 0 1 2 3 4
|
|
let ratios = ['0:0', '4:3', '16:9', '1:1', '1:2'];
|
|
let aspect = 2;
|
|
|
|
let ratio = getAspectRatio();
|
|
|
|
function getAspectRatio() {
|
|
customRatio = aspect == 0 ? true : false;
|
|
var ratio = ratios[aspect].split(':');
|
|
return ratio[1] / ratio[0];
|
|
}
|
|
|
|
function setAspectRatio(i) {
|
|
aspect = i;
|
|
ratio = getAspectRatio();
|
|
resizeVideoMedia();
|
|
}
|
|
|
|
function Area(Increment, Count, Width, Height, Margin = 10) {
|
|
ratio = customRatio ? 0.75 : ratio;
|
|
let i = 0;
|
|
let w = 0;
|
|
let h = Increment * ratio + Margin * 2;
|
|
while (i < Count) {
|
|
if (w + Increment > Width) {
|
|
w = 0;
|
|
h = h + Increment * ratio + Margin * 2;
|
|
}
|
|
w = w + Increment + Margin * 2;
|
|
i++;
|
|
}
|
|
if (h > Height) return false;
|
|
else return Increment;
|
|
}
|
|
|
|
function resizeVideoMedia() {
|
|
let Margin = 3;
|
|
let videoMediaContainer = document.getElementById('videoMediaContainer');
|
|
let Cameras = document.getElementsByClassName('Camera');
|
|
let Width = videoMediaContainer.offsetWidth - Margin * 2;
|
|
let Height = videoMediaContainer.offsetHeight - Margin * 2;
|
|
let max = 0;
|
|
|
|
// full screen mode
|
|
let bigWidth = Width * 4;
|
|
if (videoMediaContainer.childElementCount == 1) {
|
|
Width = Width - bigWidth;
|
|
}
|
|
|
|
// loop (i recommend you optimize this)
|
|
let i = 1;
|
|
while (i < 5000) {
|
|
let w = Area(i, Cameras.length, Width, Height, Margin);
|
|
if (w === false) {
|
|
max = i - 1;
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
|
|
max = max - Margin * 2;
|
|
setWidth(videoMediaContainer, Cameras, max, bigWidth, Margin, Height);
|
|
}
|
|
|
|
function setWidth(videoMediaContainer, Cameras, width, bigWidth, margin, maxHeight) {
|
|
ratio = customRatio ? 0.68 : ratio;
|
|
let isOneVideoElement = videoMediaContainer.childElementCount == 1 ? true : false;
|
|
for (let s = 0; s < Cameras.length; s++) {
|
|
Cameras[s].style.width = width + 'px';
|
|
Cameras[s].style.margin = margin + 'px';
|
|
Cameras[s].style.height = width * ratio + 'px';
|
|
if (isOneVideoElement) {
|
|
Cameras[s].style.width = bigWidth + 'px';
|
|
Cameras[s].style.height = bigWidth * ratio + 'px';
|
|
let camHeigh = Cameras[s].style.height.substring(0, Cameras[s].style.height.length - 2);
|
|
if (camHeigh >= maxHeight) Cameras[s].style.height = maxHeight - 2 + 'px';
|
|
}
|
|
}
|
|
}
|
|
|
|
window.addEventListener(
|
|
'load',
|
|
function (event) {
|
|
resizeVideoMedia();
|
|
window.onresize = resizeVideoMedia;
|
|
},
|
|
false,
|
|
);
|