From 8dd20e409c915b60746cd6220845fe2866b0b61d Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Mon, 24 Nov 2025 13:29:00 +0000 Subject: [PATCH] - minor improvements to painter --- .../cameras/components/CameraGrid.tsx | 14 ++++-- .../CameraSettings/CameraSettings.tsx | 18 ++++---- .../CameraSettings/RegionSelector.tsx | 46 +++++++++++++------ .../components/Video/VideoFeedGridPainter.tsx | 6 +-- 4 files changed, 55 insertions(+), 29 deletions(-) diff --git a/src/features/cameras/components/CameraGrid.tsx b/src/features/cameras/components/CameraGrid.tsx index 6482fa9..27a5b0c 100644 --- a/src/features/cameras/components/CameraGrid.tsx +++ b/src/features/cameras/components/CameraGrid.tsx @@ -12,21 +12,25 @@ const CameraGrid = () => { { name: "Region 3", brushColour: "#0400ff" }, ]); const [selectedRegionIndex, setSelectedRegionIndex] = useState(0); - const [isErasing, setErasing] = useState(false); - + const [mode, setMode] = useState(""); + const [tabIndex, setTabIndex] = useState(0); + console.log(tabIndex); const updateRegionColour = (index: number, newColour: string) => { setRegions((prev) => prev.map((r, i) => (i === index ? { ...r, brushColour: newColour } : r))); }; + console.log(mode); return (
- +
diff --git a/src/features/cameras/components/CameraSettings/CameraSettings.tsx b/src/features/cameras/components/CameraSettings/CameraSettings.tsx index 88f383b..b0ad443 100644 --- a/src/features/cameras/components/CameraSettings/CameraSettings.tsx +++ b/src/features/cameras/components/CameraSettings/CameraSettings.tsx @@ -3,15 +3,16 @@ import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; import "react-tabs/style/react-tabs.css"; import RegionSelector from "./RegionSelector"; import type { Region } from "../../../../types/types"; -import { useState } from "react"; type CameraSettingsProps = { regions: Region[]; selectedRegionIndex: number; onSelectRegion: (index: number) => void; onChangeRegionColour: (index: number, colour: string) => void; - isErasing: boolean; - onSelectErasing: (isErasing: boolean) => void; + mode: string; + onSelectMode: (mode: string) => void; + setTabIndex: (tabIndex: number) => void; + tabIndex: number; }; const CameraSettings = ({ @@ -19,10 +20,11 @@ const CameraSettings = ({ selectedRegionIndex, onSelectRegion, onChangeRegionColour, - isErasing, - onSelectErasing, + mode, + onSelectMode, + tabIndex, + setTabIndex, }: CameraSettingsProps) => { - const [tabIndex, setTabIndex] = useState(0); return ( diff --git a/src/features/cameras/components/CameraSettings/RegionSelector.tsx b/src/features/cameras/components/CameraSettings/RegionSelector.tsx index b8a1688..f03d132 100644 --- a/src/features/cameras/components/CameraSettings/RegionSelector.tsx +++ b/src/features/cameras/components/CameraSettings/RegionSelector.tsx @@ -6,8 +6,8 @@ type RegionSelectorProps = { selectedRegionIndex: number; onSelectRegion: (index: number) => void; onChangeRegionColour: (index: number, colour: string) => void; - isErasing: boolean; - onSelectErasing: (isErasing: boolean) => void; + mode: string; + onSelectMode: (mode: string) => void; }; const RegionSelector = ({ @@ -15,32 +15,52 @@ const RegionSelector = ({ selectedRegionIndex, onSelectRegion, onChangeRegionColour, - isErasing, - onSelectErasing, + mode, + onSelectMode, }: RegionSelectorProps) => { - const handleChange = () => { - onSelectErasing(!isErasing); + const handleChange = (e: { target: { value: string } }) => { + onSelectMode(e.target.value); }; return (
-

Region Select

+

Region Select

{regions.map((region, idx) => ( -
+
onChangeRegionColour(idx, c)} />
))} - +
+

Tools

+
+
+ + + +
); diff --git a/src/features/cameras/components/Video/VideoFeedGridPainter.tsx b/src/features/cameras/components/Video/VideoFeedGridPainter.tsx index ce706e1..4ddebdb 100644 --- a/src/features/cameras/components/Video/VideoFeedGridPainter.tsx +++ b/src/features/cameras/components/Video/VideoFeedGridPainter.tsx @@ -13,14 +13,14 @@ const gap = 0; type VideoFeedGridPainterProps = { regions: Region[]; selectedRegionIndex: number; - isErasing: boolean; + mode: string; }; type PaintedCell = { colour: string; }; -const VideoFeedGridPainter = ({ regions, selectedRegionIndex, isErasing }: VideoFeedGridPainterProps) => { +const VideoFeedGridPainter = ({ regions, selectedRegionIndex, mode }: VideoFeedGridPainterProps) => { const { latestBitmapRef, isloading } = useCreateVideoSnapshot(); const [stageSize, setStageSize] = useState({ width: 740, height: 460 }); const isDrawingRef = useRef(false); @@ -53,7 +53,7 @@ const VideoFeedGridPainter = ({ regions, selectedRegionIndex, isErasing }: Video const map = paintedCellsRef.current; const existing = map.get(key); - if (isErasing) { + if (mode === "eraser") { if (map.has(key)) { map.delete(key); paintLayerRef.current?.batchDraw();