qcast-front/src/hooks/useTempGrid.js
minsik 9199accb24 - 그리드 padding 추가
- 그리드 이동, 복사, 삭제, 전체 삭제 기능 추가
2024-11-28 14:05:26 +09:00

73 lines
1.9 KiB
JavaScript

import { canvasState, tempGridModeState } from '@/store/canvasAtom'
import { useRecoilState, useRecoilValue } from 'recoil'
import { gridColorState } from '@/store/gridAtom'
import { gridDisplaySelector } from '@/store/settingAtom'
const GRID_PADDING = 5
export function useTempGrid() {
const canvas = useRecoilValue(canvasState)
const gridColor = useRecoilValue(gridColorState)
const [tempGridMode, setTempGridMode] = useRecoilState(tempGridModeState)
const isGridDisplay = useRecoilValue(gridDisplaySelector)
const tempGridModeStateLeftClickEvent = (e) => {
//임의 그리드 모드일 경우
let pointer = canvas.getPointer(e.e)
const tempGrid = new fabric.Line([pointer.x, 0, pointer.x, canvas.height], {
stroke: gridColor,
strokeWidth: 1,
selectable: true,
lockMovementX: true,
lockMovementY: true,
lockRotation: true,
lockScalingX: true,
lockScalingY: true,
strokeDashArray: [5, 2],
opacity: 0.3,
padding: GRID_PADDING,
direction: 'vertical',
visible: isGridDisplay,
name: 'tempGrid',
})
canvas.add(tempGrid)
canvas.renderAll()
}
const tempGridRightClickEvent = (e) => {
e.preventDefault()
e.stopPropagation()
//임의 그리드 모드일 경우
let pointer = { x: e.offsetX, y: e.offsetY }
const tempGrid = new fabric.Line([0, pointer.y, canvas.width, pointer.y], {
stroke: gridColor,
strokeWidth: 1,
selectable: true,
lockMovementX: true,
lockMovementY: true,
lockRotation: true,
lockScalingX: true,
lockScalingY: true,
strokeDashArray: [5, 2],
opacity: 0.3,
padding: GRID_PADDING,
name: 'tempGrid',
visible: isGridDisplay,
direction: 'horizontal',
})
canvas.add(tempGrid)
canvas.renderAll()
}
return {
tempGridModeStateLeftClickEvent,
tempGridRightClickEvent,
tempGridMode,
setTempGridMode,
}
}