diff --git a/include/boost/gil/extension/rasterization/ellipse.hpp b/include/boost/gil/extension/rasterization/ellipse.hpp index 091189c78..27ca5de74 100644 --- a/include/boost/gil/extension/rasterization/ellipse.hpp +++ b/include/boost/gil/extension/rasterization/ellipse.hpp @@ -183,7 +183,7 @@ struct midpoint_ellipse_rasterizer template void operator()(View& view, Pixel const& pixel) const { - draw_curve(view, obtain_trajectory()); + draw_curve(view, pixel, obtain_trajectory()); } point center; diff --git a/test/core/point/test_fixture.hpp b/test/core/point/test_fixture.hpp new file mode 100644 index 000000000..97b910e3a --- /dev/null +++ b/test/core/point/test_fixture.hpp @@ -0,0 +1,22 @@ +// +// Copyright 2022 Marco Langer +// +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// + +#include + +#include + +namespace boost { namespace gil { + +// necessary to use point directly with boost test macros +template +auto operator<<(std::ostream& os, point const& p) -> std::ostream& +{ + return os << "{x=" << p.x << ", y=" << p.y << "}"; +} + +}} // namespace boost::gil diff --git a/test/extension/rasterization/Jamfile b/test/extension/rasterization/Jamfile index 6be4cd970..71f8855d0 100644 --- a/test/extension/rasterization/Jamfile +++ b/test/extension/rasterization/Jamfile @@ -8,6 +8,7 @@ # import testing ; +run apply_rasterizer.cpp ; run line.cpp ; run circle.cpp ; run ellipse.cpp ; diff --git a/test/extension/rasterization/apply_rasterizer.cpp b/test/extension/rasterization/apply_rasterizer.cpp new file mode 100644 index 000000000..589ec1c71 --- /dev/null +++ b/test/extension/rasterization/apply_rasterizer.cpp @@ -0,0 +1,35 @@ +// +// Copyright 2022 Marco Langer +// +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// + +#include +#include +#include +#include + +#include + +namespace gil = boost::gil; + +template +void test_apply_rasterizers(Rasterizer const& rasterizer) +{ + gil::rgb8_image_t image(200, 200); + gil::rgb8_pixel_t pixel{255, 0, 0}; + + apply_rasterizer(view(image), rasterizer, pixel); +} + +int main() +{ + test_apply_rasterizers(gil::midpoint_circle_rasterizer{{50, 50}, 30}); + test_apply_rasterizers(gil::trigonometric_circle_rasterizer{{50, 50}, 30}); + test_apply_rasterizers(gil::midpoint_ellipse_rasterizer{{50, 50}, {30, 20}}); + test_apply_rasterizers(gil::bresenham_line_rasterizer{{50, 50}, {30, 20}}); + + return boost::report_errors(); +} diff --git a/test/extension/rasterization/circle.cpp b/test/extension/rasterization/circle.cpp index 4df90adf4..99b313365 100644 --- a/test/extension/rasterization/circle.cpp +++ b/test/extension/rasterization/circle.cpp @@ -1,4 +1,3 @@ -// Boost.GIL (Generic Image Library) - tests // // Copyright 2020 Olzhas Zhumabek // @@ -7,9 +6,13 @@ // http://www.boost.org/LICENSE_1_0.txt) // +#include +#include + #include -#include "boost/gil/extension/rasterization/circle.hpp" -#include + +#include +#include #include namespace gil = boost::gil; @@ -17,7 +20,7 @@ namespace gil = boost::gil; template void test_rasterizer_follows_equation(Rasterizer rasterizer) { - const std::ptrdiff_t radius = rasterizer.radius; + std::ptrdiff_t const radius = rasterizer.radius; std::vector circle_points(rasterizer.point_count()); std::ptrdiff_t const r_squared = radius * radius; rasterizer(circle_points.begin()); @@ -28,9 +31,9 @@ void test_rasterizer_follows_equation(Rasterizer rasterizer) first_octant[octant_index] = circle_points[i]; } - for (const auto& point : first_octant) + for (auto const& point : first_octant) { - double y_exact = std::sqrt(r_squared - point.x * point.x); + double const y_exact = std::sqrt(r_squared - point.x * point.x); std::ptrdiff_t lower_result = static_cast(std::floor(y_exact)); std::ptrdiff_t upper_result = static_cast(std::ceil(y_exact)); BOOST_TEST(point.y >= lower_result && point.y <= upper_result); diff --git a/test/extension/rasterization/ellipse.cpp b/test/extension/rasterization/ellipse.cpp index 974ca7f87..837301733 100644 --- a/test/extension/rasterization/ellipse.cpp +++ b/test/extension/rasterization/ellipse.cpp @@ -5,10 +5,14 @@ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // + +#include +#include + #include -#include #include +#include #include namespace gil = boost::gil; diff --git a/test/extension/rasterization/line.cpp b/test/extension/rasterization/line.cpp index f68f904f9..dd48393ec 100644 --- a/test/extension/rasterization/line.cpp +++ b/test/extension/rasterization/line.cpp @@ -1,4 +1,3 @@ -// Boost.GIL (Generic Image Library) - tests // // Copyright 2020 Olzhas Zhumabek // @@ -7,30 +6,22 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#include -#include -#include "boost/gil/point.hpp" -#include "boost/gil/extension/rasterization/line.hpp" +#include "core/point/test_fixture.hpp" +#include +#include + +#include + +#include #include -#include +#include #include #include #include namespace gil = boost::gil; -namespace boost -{ -namespace gil -{ -std::ostream& operator<<(std::ostream& os, const point_t p) -{ - os << "{x=" << p.x << ", y=" << p.y << "}"; - return os; -} -}} // namespace boost::gil - using line_type = std::vector; struct endpoints @@ -55,7 +46,7 @@ line_type create_line(endpoints points) return forward_line; } -void test_start_end(const line_type& line_points, endpoints points) +void test_start_end(line_type const& line_points, endpoints points) { BOOST_TEST_EQ(line_points.front(), points.start); BOOST_TEST_EQ(line_points.back(), points.end);