idraw/examples/board/features/lib/action.js
2022-04-28 23:46:07 +08:00

60 lines
No EOL
1.5 KiB
JavaScript

import { getData } from "./data.js";
import { drawData } from './draw.js';
import { getScale } from './scale.js';
import opts from './opts.js'
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();
if (ctx.isPointInPath(p.x, p.y)) {
idx = i;
break;
}
}
return idx;
}
function moveElement(board, idx, moveX, moveY) {
const data = getData();
const scale = getScale() || 1;
if (data.elements[idx]) {
// 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);
}
drawData(board, idx)
}
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;
}
export {
isPointInElement,
moveElement,
doCursor
}