From 167997c9f257e008f96760d603a36a5ab867946a Mon Sep 17 00:00:00 2001
From: namark <namark@disroot.org>
Date: Tue, 20 Jul 2021 01:40:56 +0400
Subject: [PATCH] Aftermath of latest geom::vector changes,

is it better? is it worse? dunno...
feel like vector should be more permissive with conversion now, for
consistency, but too afraid to tackle that now.
---
 examples/12_floating_pixel.cpp           | 4 +++-
 examples/13_draw_line.cpp                | 4 +++-
 examples/bonus_02_floating_trixels.cpp   | 5 ++++-
 source/simple/graphical/color_vector.hpp | 2 +-
 source/simple/graphical/window.h         | 4 ++--
 5 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/examples/12_floating_pixel.cpp b/examples/12_floating_pixel.cpp
index 6f44a78..2832295 100644
--- a/examples/12_floating_pixel.cpp
+++ b/examples/12_floating_pixel.cpp
@@ -19,7 +19,9 @@ int main(int argc, char const* argv[]) try
 
 	software_window win("Floating pixel", int2::one(400), window::flags::borderless);
 
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 16;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 16;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
 	const unsigned waypoint_count = argc > 2 ? simple::support::ston<unsigned>(argv[2]) : 5;
 	const float fastity = argc > 3 ? simple::support::ston<float>(argv[3]) : 0.1;
 
diff --git a/examples/13_draw_line.cpp b/examples/13_draw_line.cpp
index e63fe9e..b6f26d0 100644
--- a/examples/13_draw_line.cpp
+++ b/examples/13_draw_line.cpp
@@ -38,7 +38,9 @@ int main(int argc, char const* argv[]) try
 
 	software_window win("Line drawing", int2::one(400), window::flags::borderless);
 
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 1;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 1;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
 
 	const auto logical_size = win.surface().size() / zoom;
 	surface canvas (logical_size, pixel_format(pixel_format::type::rgb24));
diff --git a/examples/bonus_02_floating_trixels.cpp b/examples/bonus_02_floating_trixels.cpp
index 39002d2..b044fc5 100644
--- a/examples/bonus_02_floating_trixels.cpp
+++ b/examples/bonus_02_floating_trixels.cpp
@@ -34,7 +34,10 @@ struct floating_pixel
 
 int main(int argc, char const* argv[]) try
 {
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 16;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 16;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
+
 	const unsigned waypoint_count = argc > 2 ? simple::support::ston<unsigned>(argv[2]) : 5;
 	const float fastity = argc > 3 ? simple::support::ston<float>(argv[3]) : 0.1;
 	const unsigned pixel_count = argc > 4 ? simple::support::ston<unsigned>(argv[4]) : 10000;
diff --git a/source/simple/graphical/color_vector.hpp b/source/simple/graphical/color_vector.hpp
index 50c0260..08081cc 100644
--- a/source/simple/graphical/color_vector.hpp
+++ b/source/simple/graphical/color_vector.hpp
@@ -215,7 +215,7 @@ namespace simple
 	public support::define_array_operators<geom::vector<C,D,O>>
 	{
 		// revert these to default beahvior, in this context means no type promotion
-		template <typename, support::array_operator, typename>
+		template <typename, support::array_operator, typename, bool>
 		using result = graphical::color_vector<C,D,O>;
 		using compatibility_tag = graphical::color_vector<C,D,O>;
 	};
diff --git a/source/simple/graphical/window.h b/source/simple/graphical/window.h
index f74c78d..5e1492e 100644
--- a/source/simple/graphical/window.h
+++ b/source/simple/graphical/window.h
@@ -56,8 +56,8 @@ namespace simple::graphical
 
 		};
 
-		constexpr static const int2 undefined_position = int2::one() * SDL_WINDOWPOS_UNDEFINED;
-		constexpr static const int2 center_position = int2::one() * SDL_WINDOWPOS_CENTERED;
+		constexpr static const int2 undefined_position = int2::one() * int(SDL_WINDOWPOS_UNDEFINED);
+		constexpr static const int2 center_position = int2::one() * int(SDL_WINDOWPOS_CENTERED);
 
 		int2 size() const noexcept;
 		void size(int2 value) const noexcept;
-- 
GitLab