10 Commits

Author SHA1 Message Date
Isaac Connor
17450d122d feat: store zone coordinates as percentages for resolution independence
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>
2026-02-10 17:18:00 -05:00
Isaac Connor
c84e7d4563 Include Monitor.php 2024-01-28 16:52:16 -05:00
adhamiamirhossein
27977acdd4 fix: php 8.3 deprecated get_class method call without argument 2023-11-22 10:48:04 +03:30
Isaac Connor
394cd6e0f8 AlarmRGB should be an actual hex value not a string 2023-04-05 17:46:29 -04:00
Isaac Connor
231b0ab631 Sync up default values with what gets added in actions/monitor 2023-04-05 14:42:44 -04:00
Isaac Connor
4c90bd0ac6 Add a title to the zone polygon 2022-09-01 07:08:39 -04:00
Isaac Connor
07e6ae931f Add mid and zid to zone polygon so that we can use them in atached onclicks 2022-04-22 15:50:00 -04:00
Isaac Connor
45559123af Add numCoords, Coords, Area, AlarmRGB to Zone object. Also add Points(), AreaCoords, svg_polygon utility functions to it. 2021-12-05 17:45:26 -05:00
Isaac Connor
1701089211 Add MonitorId to Zone fields and add Monitor() method 2020-09-17 20:56:21 -04:00
Isaac Connor
ad373a5549 add Zone.php from master 2020-05-01 13:20:42 -04:00