File size: 934 Bytes
c6535db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { useElementBounding } from '@vueuse/core'

/**
 * Convert between canvas and client positions
 * @param canvasElement - The canvas element
 * @param lgCanvas - The litegraph canvas
 * @returns The canvas position conversion functions
 */
export const useCanvasPositionConversion = (
    canvasElement,
    lgCanvas
) => {
    const { left, top } = useElementBounding(canvasElement)

    const clientPosToCanvasPos = (pos) => {
        const { offset, scale } = lgCanvas.ds
        return [
            (pos[0] - left.value) / scale - offset[0],
            (pos[1] - top.value) / scale - offset[1]
        ]
    }

    const canvasPosToClientPos = (pos) => {
        const { offset, scale } = lgCanvas.ds
        return [
            (pos[0] + offset[0]) * scale + left.value,
            (pos[1] + offset[1]) * scale + top.value
        ]
    }

    return {
        clientPosToCanvasPos,
        canvasPosToClientPos
    }
}