11#pragma once
22
3+ #include " config.hpp"
34#include " graphics/aspect_ratio/aspect_ratio.hpp"
45#include " graphics/color_conversions/color_conversions.hpp"
56#include " graphics/display_event_observer.hpp"
@@ -33,6 +34,18 @@ class Window : public DisplayEventObserver {
3334 );
3435 }
3536
37+ void
38+ set_pixel_colors (std::unique_ptr<MandelbrotWindow::pixel_iteration_counts> pixels)
39+ {
40+ for (auto it = DISPLAY_DOMAIN.begin (); it != DISPLAY_DOMAIN.end (); ++it) {
41+ Percentage color (
42+ static_cast <float >((*pixels)[it.get_underlying ()])
43+ / MANDELBROT_MAX_ITERATIONS
44+ );
45+ set_pixel_color (*it, color);
46+ }
47+ }
48+
3649 Window (DisplayDomain display_domain, complex_domain complex_domain) :
3750 DISPLAY_DOMAIN{display_domain}, complex_domain_{complex_domain},
3851 mandelbrot_{display_domain, complex_domain}
@@ -42,10 +55,7 @@ class Window : public DisplayEventObserver {
4255 display_domain.get_end_coordinate ().y + 1u
4356 );
4457
45- auto res = mandelbrot_.calculate_ (DISPLAY_DOMAIN, DISPLAY_DOMAIN);
46- for (display_coordinate pos : DISPLAY_DOMAIN) {
47- set_pixel_color (pos, (*res)[pos.x ][pos.y ]);
48- }
58+ set_pixel_colors (mandelbrot_.calculate_ (DISPLAY_DOMAIN, DISPLAY_DOMAIN));
4959 }
5060
5161 void on_mouse_button_pressed (const sf::Event::MouseButtonEvent& event) override
@@ -60,10 +70,7 @@ class Window : public DisplayEventObserver {
6070 DisplayDomain ends = calculate_rectangle_end_points (
6171 {selection_start_x_, selection_start_y_}, {event.x , event.y }
6272 );
63- auto res = mandelbrot_.calculate_ (DISPLAY_DOMAIN, ends);
64- for (display_coordinate pos : DISPLAY_DOMAIN) {
65- set_pixel_color (pos, (*res)[pos.x ][pos.y ]);
66- }
73+ set_pixel_colors (mandelbrot_.calculate_ (DISPLAY_DOMAIN, ends));
6774 }
6875
6976 std::optional<std::unique_ptr<sf::Drawable>> get_drawable () override
0 commit comments