idraw/examples/board/features/lib/action.js

60 lines
1.5 KiB
JavaScript
Raw Permalink Normal View History

2021-05-25 04:58:29 +00:00
import { getData } from "./data.js";
import { drawData } from './draw.js';
2021-05-25 10:16:28 +00:00
import { getScale } from './scale.js';
import opts from './opts.js'
2021-05-25 04:58:29 +00:00
function isPointInElement(board, p = {x, y}) {
const ctx = board.getContext();
const data = getData();
let idx = -1;
for (let i = data.elements.length - 1; i >= 0; i--) {
const ele = data.elements[i];
ctx.beginPath();
ctx.lineTo(ele.x, ele.y);
ctx.lineTo(ele.x + ele.w, ele.y);
ctx.lineTo(ele.x + ele.w, ele.y + ele.h);
ctx.lineTo(ele.x, ele.y + ele.h);
ctx.closePath();
2021-05-25 10:16:28 +00:00
2021-05-25 04:58:29 +00:00
if (ctx.isPointInPath(p.x, p.y)) {
idx = i;
break;
}
}
return idx;
}
function moveElement(board, idx, moveX, moveY) {
const data = getData();
2021-06-04 06:43:42 +00:00
const scale = getScale() || 1;
2021-05-25 04:58:29 +00:00
if (data.elements[idx]) {
2021-05-25 10:16:28 +00:00
// data.elements[idx].x += (moveX * scale * opts.devicePixelRatio);
// data.elements[idx].y += (moveY * scale * opts.devicePixelRatio);
data.elements[idx].x += (moveX / scale);
data.elements[idx].y += (moveY / scale);
2021-05-25 04:58:29 +00:00
}
drawData(board, idx)
2021-05-25 04:58:29 +00:00
}
2021-06-13 14:41:40 +00:00
const cursor = document.querySelector('#cursor');
const resetCursor = document.querySelector('#reset-cursor');
let hasInitedCursor = false;
function doCursor(board) {
if (hasInitedCursor === true) {
return;
}
cursor.addEventListener('change', () => {
// console.log('cursor.value = ', cursor.value);
board.setCursor(cursor.value);
});
resetCursor.addEventListener('click', () => {
board.resetCursor();
});
hasInitedCursor = true;
}
2021-05-25 04:58:29 +00:00
export {
isPointInElement,
moveElement,
2021-06-13 14:41:40 +00:00
doCursor
2021-05-25 04:58:29 +00:00
}