mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-03-24 16:51:47 -04:00
Convert zone coordinates from absolute pixel values to percentages (0.00-100.00) so zones automatically adapt when monitor resolution changes. This eliminates the need to manually reconfigure zones after resolution adjustments. Changes: - Add DB migration (zm_update-1.37.81.sql) to convert existing pixel coords to percentages, recalculate area, and update Units default - Add Zone::ParsePercentagePolygon() in C++ to parse percentage coords and convert to pixels at runtime using monitor dimensions - Backwards compat: C++ Zone::Load() checks Units column and uses old pixel parser for legacy 'Pixels' zones - Update PHP coordsToPoints/mapCoords/getPolyArea for float coords, replace scanline area algorithm with shoelace formula - Update JS zone editor to work in percentage coordinate space with SVG viewBox "0 0 100 100" and non-scaling-stroke for consistent line thickness - Position zone SVG overlay inside imageFeed container via JS to align with image only (not status bar) - Support array of zone IDs in Monitor::getStreamHTML zones option - Update monitor resize handler: percentage coords don't need rescaling, only threshold pixel counts are adjusted - Add 8 Catch2 unit tests for ParsePercentagePolygon Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>