From 44a04370a918e878c4650dd3387580b2a4f108b0 Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 29 Apr 2024 15:02:42 +0100 Subject: [PATCH] Parallelogram: Fix implementations of isEmpty and operator-= Previously, isEmpty sometimes incorrectly returned true for non-empty parallelograms. operator-= called itself, leading to infinite recursion. --- .../Builds/Android/app/CMakeLists.txt | 2 + .../VisualStudio2017/DemoRunner_App.vcxproj | 3 + .../DemoRunner_App.vcxproj.filters | 3 + .../VisualStudio2019/DemoRunner_App.vcxproj | 3 + .../DemoRunner_App.vcxproj.filters | 3 + .../VisualStudio2022/DemoRunner_App.vcxproj | 3 + .../DemoRunner_App.vcxproj.filters | 3 + .../Builds/Android/app/CMakeLists.txt | 2 + .../AudioPerformanceTest_App.vcxproj | 3 + .../AudioPerformanceTest_App.vcxproj.filters | 3 + .../Builds/Android/app/CMakeLists.txt | 2 + .../AudioPluginHost_App.vcxproj | 3 + .../AudioPluginHost_App.vcxproj.filters | 3 + .../AudioPluginHost_App.vcxproj | 3 + .../AudioPluginHost_App.vcxproj.filters | 3 + .../AudioPluginHost_App.vcxproj | 3 + .../AudioPluginHost_App.vcxproj.filters | 3 + .../Builds/Android/app/CMakeLists.txt | 2 + .../NetworkGraphicsDemo_App.vcxproj | 3 + .../NetworkGraphicsDemo_App.vcxproj.filters | 3 + .../VisualStudio2017/Projucer_App.vcxproj | 3 + .../Projucer_App.vcxproj.filters | 3 + .../VisualStudio2019/Projucer_App.vcxproj | 3 + .../Projucer_App.vcxproj.filters | 3 + .../VisualStudio2022/Projucer_App.vcxproj | 3 + .../Projucer_App.vcxproj.filters | 3 + .../UnitTestRunner_ConsoleApp.vcxproj | 3 + .../UnitTestRunner_ConsoleApp.vcxproj.filters | 3 + .../UnitTestRunner_ConsoleApp.vcxproj | 3 + .../UnitTestRunner_ConsoleApp.vcxproj.filters | 3 + .../UnitTestRunner_ConsoleApp.vcxproj | 3 + .../UnitTestRunner_ConsoleApp.vcxproj.filters | 3 + .../WindowsDLL_StaticLibrary.vcxproj | 3 + .../WindowsDLL_StaticLibrary.vcxproj.filters | 3 + .../geometry/juce_Parallelogram.h | 6 +- .../geometry/juce_Parallelogram_test.cpp | 75 +++++++++++++++++++ modules/juce_graphics/juce_graphics.cpp | 1 + 37 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 modules/juce_graphics/geometry/juce_Parallelogram_test.cpp diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt index 48d60a1cf5..4c393c9152 100644 --- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -1840,6 +1840,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" @@ -4336,6 +4337,7 @@ set_source_files_properties( "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index 470450b0ce..9f04bfd065 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -2132,6 +2132,9 @@ true + + true + true diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters index 5ec3094dc5..016f39545f 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters @@ -2881,6 +2881,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index 73f73f0de7..a99b40d601 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -2132,6 +2132,9 @@ true + + true + true diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters index a406b70e15..5869ebb31e 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters @@ -2881,6 +2881,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index bb22be11a5..7c2866a07c 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -2132,6 +2132,9 @@ true + + true + true diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters index 3dacfcc93f..4a8b95ff58 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters @@ -2881,6 +2881,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt index dfab116b91..60cac35a1a 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt @@ -1602,6 +1602,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" @@ -3780,6 +3781,7 @@ set_source_files_properties( "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index 13eaac485d..21e38471dd 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -1825,6 +1825,9 @@ true + + true + true diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters index c21a5fb549..308c120ec4 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters @@ -2425,6 +2425,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt index 3480c79f14..08696309f0 100644 --- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -1732,6 +1732,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" @@ -4063,6 +4064,7 @@ set_source_files_properties( "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index b671307ed1..2853c7fb37 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -1959,6 +1959,9 @@ true + + true + true diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index 8c6f069a3a..be308e9786 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -2632,6 +2632,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index 81ca1234d4..1f9eb56139 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -1959,6 +1959,9 @@ true + + true + true diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters index a292c2ed5e..45760539fb 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters @@ -2632,6 +2632,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index 6ba5be41be..ef9100de71 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -1959,6 +1959,9 @@ true + + true + true diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters index 164d80dfdf..ac20556c15 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters @@ -2632,6 +2632,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt index e06bb633a4..c20ebfa6c5 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt @@ -1621,6 +1621,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" @@ -3879,6 +3880,7 @@ set_source_files_properties( "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" "../../../../../modules/juce_graphics/geometry/juce_Line.h" "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram_test.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" "../../../../../modules/juce_graphics/geometry/juce_Path.h" "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index 782e2ff0bd..50ace81780 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -1846,6 +1846,9 @@ true + + true + true diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters index 8c75d8c006..64d712a014 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters @@ -2479,6 +2479,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index 8a0dcd6fd3..9c58274290 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -1028,6 +1028,9 @@ true + + true + true diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 4afdbb74b7..057a7c1d17 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -1423,6 +1423,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index 5a95bf893b..a4b6f2b89b 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -1028,6 +1028,9 @@ true + + true + true diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index 6b17fd3496..456c389778 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -1423,6 +1423,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index 79dcdea15c..7ef37203b1 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -1028,6 +1028,9 @@ true + + true + true diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index 31635c9d15..9b659e8580 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -1423,6 +1423,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index 9d30fa240e..99243189d0 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -1967,6 +1967,9 @@ true + + true + true diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters index d7f24e70d1..0491187ce6 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -2653,6 +2653,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index 7d083e9e14..07b149efcf 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -1967,6 +1967,9 @@ true + + true + true diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters index e30b11dead..abc9640153 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -2653,6 +2653,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index 9440bacc4d..44949d1f77 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -1967,6 +1967,9 @@ true + + true + true diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters index b0818c6f51..89a70a0f51 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -2653,6 +2653,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 31f1069025..de89bb8e70 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -1845,6 +1845,9 @@ true + + true + true diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters index 0b69cd7a7b..70954c5b39 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters @@ -2476,6 +2476,9 @@ JUCE Modules\juce_graphics\geometry + + JUCE Modules\juce_graphics\geometry + JUCE Modules\juce_graphics\geometry diff --git a/modules/juce_graphics/geometry/juce_Parallelogram.h b/modules/juce_graphics/geometry/juce_Parallelogram.h index 82123c8f99..8d0266b8cf 100644 --- a/modules/juce_graphics/geometry/juce_Parallelogram.h +++ b/modules/juce_graphics/geometry/juce_Parallelogram.h @@ -76,8 +76,8 @@ public: ~Parallelogram() = default; //============================================================================== - /** Returns true if the parallelogram has a width or height of more than zero. */ - bool isEmpty() const noexcept { return topLeft != topRight || topLeft != bottomLeft; } + /** Returns true if the parallelogram has an area of zero. */ + bool isEmpty() const noexcept { return topLeft == topRight || topLeft == bottomLeft || topRight == bottomLeft; } /** Returns true if the parallelogram's coordinates are all finite numbers, i.e. not NaN or infinity. */ inline bool isFinite() const noexcept { return topLeft.isFinite() && topRight.isFinite() && bottomLeft.isFinite(); } @@ -135,7 +135,7 @@ public: /** Moves this parallelogram by a given amount. */ Parallelogram& operator-= (Point deltaPosition) noexcept { - return operator-= (-deltaPosition); + return operator+= (-deltaPosition); } /** Returns a parallelogram that has been scaled by the given amount, centred around the origin. */ diff --git a/modules/juce_graphics/geometry/juce_Parallelogram_test.cpp b/modules/juce_graphics/geometry/juce_Parallelogram_test.cpp new file mode 100644 index 0000000000..ae4888ca9c --- /dev/null +++ b/modules/juce_graphics/geometry/juce_Parallelogram_test.cpp @@ -0,0 +1,75 @@ +/* + ============================================================================== + + This file is part of the JUCE framework. + Copyright (c) Raw Material Software Limited + + JUCE is an open source framework subject to commercial or open source + licensing. + + By downloading, installing, or using the JUCE framework, or combining the + JUCE framework with any other source code, object code, content or any other + copyrightable work, you agree to the terms of the JUCE End User Licence + Agreement, and all incorporated terms including the JUCE Privacy Policy and + the JUCE Website Terms of Service, as applicable, which will bind you. If you + do not agree to the terms of these agreements, we will not license the JUCE + framework to you, and you must discontinue the installation or download + process and cease use of the JUCE framework. + + JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ + JUCE Privacy Policy: https://juce.com/juce-privacy-policy + JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ + + Or: + + You may also use this code under the terms of the AGPLv3: + https://www.gnu.org/licenses/agpl-3.0.en.html + + THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL + WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +class ParallelogramTest : public UnitTest +{ +public: + ParallelogramTest() : UnitTest ("Parallelogram", UnitTestCategories::graphics) {} + + void runTest() override + { + beginTest ("isEmpty"); + { + expect (! Parallelogram (Rectangle (10, 10, 20, 20)).isEmpty()); + expect (Parallelogram (Rectangle (10, 10, 0, 20)).isEmpty()); + expect (Parallelogram (Rectangle (10, 10, 20, 0)).isEmpty()); + + expect (! Parallelogram (Point (0, 0), Point (10, 10), Point (20, 0)).isEmpty()); + expect (Parallelogram (Point (0, 0), Point (0, 0), Point (20, 0)).isEmpty()); + expect (Parallelogram (Point (0, 0), Point (10, 10), Point (10, 10)).isEmpty()); + expect (Parallelogram (Point (20, 0), Point (10, 10), Point (20, 0)).isEmpty()); + } + + beginTest ("operators"); + { + Parallelogram p (Rectangle (10, 10, 20, 20)); + p += Point (5, 10); + expect (p.topLeft == Point (15, 20)); + expect (p.topRight == Point (35, 20)); + expect (p.bottomLeft == Point (15, 40)); + + p -= Point (10, 5); + expect (p.topLeft == Point (5, 15)); + expect (p.topRight == Point (25, 15)); + expect (p.bottomLeft == Point (5, 35)); + } + } +}; + +static ParallelogramTest parallelogramTest; + +} // namespace juce diff --git a/modules/juce_graphics/juce_graphics.cpp b/modules/juce_graphics/juce_graphics.cpp index 3c30c91eeb..d1a0a85d6b 100644 --- a/modules/juce_graphics/juce_graphics.cpp +++ b/modules/juce_graphics/juce_graphics.cpp @@ -191,6 +191,7 @@ #include "effects/juce_GlowEffect.cpp" #if JUCE_UNIT_TESTS + #include "geometry/juce_Parallelogram_test.cpp" #include "geometry/juce_Rectangle_test.cpp" #endif