Peter Keresztes Schmidt
298415fff3
Remove remaining usages of VLAs
2021-05-17 22:12:04 +02:00
Peter Keresztes Schmidt
c0017a5263
Image: Move Edge class to its own namespace
...
The Edge class is an implementation detail of the scan-line polygon filling algorithm.
Tuck it away in the newly created PolygonFill namespace.
2021-05-17 20:20:33 +02:00
Peter Keresztes Schmidt
6642ca4515
Image: Eliminate VLAs from polygon fill algorithm implementation
2021-05-17 20:16:55 +02:00
Peter Keresztes Schmidt
a335e740f3
Utils: Fix possible name clash between std::clamp and ZM::clamp
...
The naming was ambiguous when compinling in C++17 mode.
2021-05-17 10:46:50 +02:00
Isaac Connor
e18f9676cd
Bump version to new 1.37 dev version
2021-05-16 13:55:01 -04:00
Isaac Connor
23312a36b4
Merge pull request #3234 from Carbenium/poly
...
Rework API of geometry classes
2021-05-16 13:53:20 -04:00
Peter Keresztes Schmidt
b1de220958
Polygon: Perform clip operation on existing object instead of returning a new clipped one
2021-05-16 19:42:41 +02:00
Peter Keresztes Schmidt
63cea992a0
Image: Fix a dynamic-stack-buffer-overflow when filling polygons
...
Make sure we don't read past the end of global_edges when i = 0.
We are moving the elements backwards so at most n_global_edges - 1 elements can be moved.
==6818==ERROR: AddressSanitizer: dynamic-stack-buffer-overflow on address 0x7ffff888ae00 at pc 0x7fe4fd7be8ae bp 0x7ffff888ac90 sp 0x7ffff888a440
READ of size 96 at 0x7ffff888ae00 thread T0
#0 0x7fe4fd7be8ad in __interceptor_memmove (/lib/x86_64-linux-gnu/libasan.so.5+0x378ad)
#1 0x56524b2dba31 in Image::Fill(unsigned int, int, Polygon const&) /root/zoneminder/src/zm_image.cpp:2514
#2 0x56524af55530 in Monitor::DumpZoneImage(char const*) /root/zoneminder/src/zm_monitor.cpp:1510
#3 0x56524aeb38cb in main /root/zoneminder/src/zmu.cpp:574
#4 0x7fe4fb2b009a in __libc_start_main ../csu/libc-start.c:308
#5 0x56524aeb87a9 in _start (/root/zoneminder/cmake-build-relwithdebinfo-remote/src/zmu+0xf87a9)
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
09665b139f
Monitor: Clip zone polygon to image size when dumping
...
The polygon vertex coordinated of extra_zone are directly parsed from user input.
Clip the resulting polygon to the image size so we don't try to draw outside of the image.
This is already done for zone polygons stored and loaded from the DB.
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
29488900a1
Box: Make range calculations mathematically correct
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
dc79ec52c2
Polygon: Remove API to set manually extent
...
The extent has to be calculated from the vertices and shouldn't be modified manually.
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
ef7a083891
Zone: Actually clip the zone if it larger than the image
...
Until now only the boundary box was manually adjusted without actually clipping the polygon.
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
3c85d63655
Polygon: Implement clipping to a boundary box
...
Using the Sutherland-Hodgman algorithms convex and concave subject polygons can be clipped
by convex clip polygons.
For now we only need clipping to rectangles (Box), so limit our implementation to that. If needed this can be
trivially extended to convex clip polygons (a check whether the clip polygon is actually convex has to be added).
If convex clip polygons are needed we have to switch to e.g the Vatti algorithm.
2021-05-16 19:41:45 +02:00
Peter Keresztes Schmidt
5af6d6af3d
Polygon: Use std::vector to store the vertices
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
eaf91fcf1f
zm_define: Include cstddef so we have size_t
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
26bdf4ab1b
Deduplicate Edge struct
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
783dc09b4e
Box: Rename variables according to the styleguide
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
8f685b3d66
Box+Poly: Remove direct accessors to {Hi,Lo}{X,Y}
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
c2a7f7b593
tests/Box: Add unit tests
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
f85e3765db
Box: Remove unnecessary constructors
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
e6c159fb70
Vector2: Make coordinate components public
...
The components were already unconditionally/without side-effects writable. Let's make them public so we don't need the setters.
2021-05-16 16:42:58 +02:00
Peter Keresztes Schmidt
c8885fe2aa
Vector2: Use default copy/assignment ops
2021-05-14 20:14:50 +02:00
Peter Keresztes Schmidt
290b88e5ac
Vector2: Delete non-idiomatic comparison operators
...
The "greater than" and "lesser than" operator families don't make sense for coordinates.
If lexicographic comparison for ordering purposes is needed, it should be implemented separately.
2021-05-14 20:14:50 +02:00
Peter Keresztes Schmidt
707700e24e
Vector2: Add unit tests
2021-05-14 20:14:50 +02:00
Peter Keresztes Schmidt
60db1c2eaf
Coord: Rename to Vector2
...
The class is not only used to represent coordinates but also lengths in XY.
Vector2 is a more fitting/general name for this purpose.
2021-05-14 20:14:50 +02:00
Peter Keresztes Schmidt
3fc3a81286
Box+Coord: Remove empty cpp files
2021-05-14 20:14:50 +02:00
Isaac Connor
2afbbb17d2
Must upload source package. Get rid of -sd
2021-05-14 10:41:36 -04:00
Isaac Connor
b17edf3153
Bump version to 1.36.0
2021-05-13 19:28:32 -04:00
Isaac Connor
a56b4053fa
Use resize in stead of reserve so that image_buffer.size actually has a value
2021-05-13 14:24:03 -04:00
Isaac Connor
d52b53e690
Add further bounds checks when accessing image_buffer
2021-05-13 09:31:59 -04:00
Isaac Connor
70946921bc
fix code to release lock before notifying
2021-05-13 08:54:55 -04:00
Isaac Connor
5a8fa9efc9
Remove dead code and useless debug
2021-05-12 18:54:07 -04:00
Isaac Connor
6f977da94d
Fix potential outofbounds access to image_buffer in getSnapshot()
2021-05-12 14:21:54 -04:00
Isaac Connor
e246083be5
Add StartDateTime Attr in sort dropdown
2021-05-12 10:32:03 -04:00
Isaac Connor
363b017977
If error was unauthorized, do a reload.
2021-05-12 10:32:03 -04:00
Isaac Connor
bdae5dd9f8
Sort field should be StartDateTime not StartTime
2021-05-12 10:32:03 -04:00
Isaac Connor
c080dd8a12
Fixes #2992 . If no definition for a monitor is found, don't modify it.
2021-05-11 15:29:10 -04:00
Isaac Connor
76171fcc43
If not doing passthrough, don't need to find the nearest keyframe
2021-05-11 10:22:40 -04:00
Isaac Connor
510b3e606b
Continue if frame file not found. Output useful text jpeg
2021-05-11 09:33:33 -04:00
Isaac Connor
726f1f616d
Merge branch 'update_docs_1_34'
2021-05-10 14:53:14 -04:00
Isaac Connor
f0abcdf585
Merge branch 'release-1.34' into update_docs_1_34
2021-05-10 14:48:50 -04:00
Isaac Connor
b8e3cc33f0
make it so that the queue will more likely be empty on termination. Do not queue more sql if terminate flag is set.
2021-05-10 12:54:35 -04:00
Isaac Connor
f3b4ccf758
Fix scaling when scale to fit
2021-05-10 11:08:16 -04:00
Isaac Connor
b1ac0e61a9
put back upstream version 3.2.0 of Crud
2021-05-09 18:18:03 -04:00
Isaac Connor
747c714699
put back up to date RtspServer
2021-05-09 18:15:37 -04:00
Isaac Connor
3cd9bdccd5
style and performance improvements reported by cppcheck
2021-05-09 16:39:38 -04:00
Isaac Connor
01834d4ddc
finish converting Capture to std::shared_ptr
2021-05-09 07:35:47 -04:00
Isaac Connor
e970c46f7b
fix memleak. Fixes #3217
2021-05-09 07:18:36 -04:00
Isaac Connor
2cf6ad8089
Switch ZMPacket * to a shared_ptr<ZMPacket>. This is so that in LockedPacket we can unlock and then notify and be confident that packet_ won't have been deleted. Change ZMPacket->timestamp to be a timeval instead of timeval *. This might not have been necessary but I like it. No longer cuse the ZMPacket object to wrap the shared image buffers and timestamps. Use a vector for image_buffers.
2021-05-08 21:14:20 -04:00
Isaac Connor
9ee24170a9
use packetqueue.unlock instead of deleting the lock so that we wake up people waiting
2021-05-08 15:57:00 -04:00