From 3aa8a4af8b666c128e099fd4d6157cccf1ec3997 Mon Sep 17 00:00:00 2001 From: That_One_Nerd Date: Fri, 26 Jul 2024 09:36:07 -0400 Subject: [PATCH] Some stuff from the cookout during school. Old, I know. --- include/sharpsoft/windowing.hpp | 2 ++ src/sharpsoft/other_window_things.cpp | 31 +++++++++++++++++++++++++++ src/sharpsoft/window_base.cpp | 6 ------ 3 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 src/sharpsoft/other_window_things.cpp diff --git a/include/sharpsoft/windowing.hpp b/include/sharpsoft/windowing.hpp index e294e95..0b6a5a4 100644 --- a/include/sharpsoft/windowing.hpp +++ b/include/sharpsoft/windowing.hpp @@ -77,4 +77,6 @@ namespace sharp void show(); void hide(); }; + + bool windows_intersect(const window_base& winA, const window_base& winB); } diff --git a/src/sharpsoft/other_window_things.cpp b/src/sharpsoft/other_window_things.cpp new file mode 100644 index 0000000..e72fa47 --- /dev/null +++ b/src/sharpsoft/other_window_things.cpp @@ -0,0 +1,31 @@ +#define SHARPSOFT_INTERNAL + +#include "sharpsoft/internal.hpp" +#include "sharpsoft/windowing.hpp" + +using namespace sharp; + +const sharp::window_styles sharp::window_styles::defaults = +{ + color(0, 0, 0), + color(255, 255, 255) +}; + +bool sharp::windows_intersect(const window_base& winA, const window_base& winB) +{ + // TODO: When I finish the header this'll change. + int winAMinX = winA.posX - 1, winAMaxX = winA.posX + winA.width + 2, + winAMinY = winA.posY - 1, winAMaxY = winA.posY + winA.height + 2, + winBMinX = winB.posX - 1, winBMaxX = winB.posX + winB.width + 2, + winBMinY = winB.posY - 1, winBMaxY = winB.posY + winB.height + 2; + + // Killer IF statement but it works. + return (winAMinX >= winBMinX && winAMinX <= winBMaxX) || // winAMinX within winB + (winAMinY >= winBMinY && winAMinY <= winBMaxY) || // winAMinY within winB + (winAMaxX >= winBMinX && winAMaxX <= winBMaxX) || // winAMaxX within winB + (winAMaxY >= winBMinY && winAMaxY <= winBMaxY) || // winAMaxY within winB + (winBMinX >= winAMinX && winBMinX <= winAMaxX) || // winBMinX within winA + (winBMinY >= winAMinY && winBMinY <= winAMaxY) || // winBMinY within winA + (winBMaxX >= winAMinX && winBMaxX <= winAMaxX) || // winBMaxX within winA + (winBMaxY >= winAMinY && winBMaxY <= winAMaxY); +} diff --git a/src/sharpsoft/window_base.cpp b/src/sharpsoft/window_base.cpp index 21810ae..e084a7a 100644 --- a/src/sharpsoft/window_base.cpp +++ b/src/sharpsoft/window_base.cpp @@ -6,12 +6,6 @@ using std::string; using namespace sharp; -const sharp::window_styles sharp::window_styles::defaults = -{ - color(0, 0, 0), - color(255, 255, 255) -}; - sharp::window_base::window_base(const string& title, const int2& pos, const int2& size) { this->title = title;