Overnap

유틸 콜백 추가

...@@ -4,6 +4,35 @@ import { Vector } from './types'; ...@@ -4,6 +4,35 @@ import { Vector } from './types';
4 export const Canvas: React.FC = () => { 4 export const Canvas: React.FC = () => {
5 const canvasRef = useRef<HTMLCanvasElement>(null); 5 const canvasRef = useRef<HTMLCanvasElement>(null);
6 6
7 + const getCoordinates = useCallback((event: MouseEvent): Vector | undefined => {
8 + if (!canvasRef.current) {
9 + return;
10 + } else {
11 + return {
12 + x: event.pageX - canvasRef.current.offsetLeft,
13 + y: event.pageY - canvasRef.current.offsetTop
14 + };
15 + }
16 + }, []);
17 +
18 + const drawLine = useCallback((prev: Vector, current: Vector) => {
19 + if (canvasRef.current) {
20 + const context = canvasRef.current!.getContext('2d');
21 + if (context) {
22 + context.strokeStyle = 'black';
23 + context.lineJoin = 'round';
24 + context.lineWidth = 5;
25 +
26 + context.beginPath();
27 + context.moveTo(prev.x, prev.y);
28 + context.lineTo(current.x, current.y);
29 + context.closePath();
30 +
31 + context.stroke();
32 + }
33 + }
34 + }, []);
35 +
7 return ( 36 return (
8 <div className='mx-3 px-2 py-1 rounded shadow'> 37 <div className='mx-3 px-2 py-1 rounded shadow'>
9 <canvas ref={canvasRef} width='512' height='384' /> 38 <canvas ref={canvasRef} width='512' height='384' />
......