Files
Superalgos/Recording.js
T
2020-02-18 13:57:00 +01:00

153 lines
4.5 KiB
JavaScript

function recordCanvas () {
{
const DISTANCE_BETWEEN_ICONS = 60
const ICON_SIZES = 50
let mousePointerIcon = canvas.designSpace.iconCollection.get('mouse-pointer')
let wheelIcon = canvas.designSpace.iconCollection.get('mouse-wheel')
let draggingIcon = canvas.designSpace.iconCollection.get('support')
let keyDownIcon = canvas.designSpace.iconCollection.get('tron')
let leftClickIcon = canvas.designSpace.iconCollection.get('mouse-left-click')
let rightClickIcon = canvas.designSpace.iconCollection.get('mouse-right-click')
let wheelClickIcon = canvas.designSpace.iconCollection.get('mouse-wheel-click')
let imagePosition
let buttonPressedIcon
switch (canvas.mouse.action) {
case 'moving': {
pointerIcon = mousePointerIcon
break
}
case 'dragging': {
pointerIcon = draggingIcon
break
}
case 'wheel': {
pointerIcon = wheelIcon
break
}
case 'key down': {
pointerIcon = mousePointerIcon
break
}
case 'key up': {
pointerIcon = mousePointerIcon
break
}
}
imagePosition = {
x: canvas.mouse.position.x,
y: canvas.mouse.position.y
}
drawMousePointer(pointerIcon, imagePosition, ICON_SIZES)
switch (canvas.mouse.event.buttons) {
case 0: {
buttonPressedIcon = undefined
break
}
case 1: {
buttonPressedIcon = leftClickIcon
break
}
case 2: {
buttonPressedIcon = rightClickIcon
break
}
case 3: {
buttonPressedIcon = undefined
break
}
case 4: {
buttonPressedIcon = wheelClickIcon
break
}
}
imagePosition = {
x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y
}
drawMousePointer(buttonPressedIcon, imagePosition, ICON_SIZES)
if (canvas.mouse.event.shiftKey === true) {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y - DISTANCE_BETWEEN_ICONS
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.ctrlKey === true || canvas.mouse.event.metaKey === true) {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y + DISTANCE_BETWEEN_ICONS
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.altKey === true) {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y - 0
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.code === 'ArrowUp') {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - 0,
y: canvas.mouse.position.y + DISTANCE_BETWEEN_ICONS
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.code === 'ArrowDown') {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - 0,
y: canvas.mouse.position.y + DISTANCE_BETWEEN_ICONS * 2
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.code === 'ArrowLeft') {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y + DISTANCE_BETWEEN_ICONS * 2
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
if (canvas.mouse.event.code === 'ArrowRight') {
let icon = canvas.designSpace.iconCollection.get('mouse-wheel')
imagePosition = {
x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS,
y: canvas.mouse.position.y + DISTANCE_BETWEEN_ICONS * 2
}
drawMousePointer(icon, imagePosition, ICON_SIZES)
}
function drawMousePointer (icon, imagePosition, imageSize) {
if (icon !== undefined) {
if (icon.canDrawIcon === true) {
browserCanvasContext.drawImage(
icon, imagePosition.x,
imagePosition.y,
imageSize,
imageSize)
}
}
}
mediaRecorder.capture(browserCanvas)
}
}