-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmandelbrot_window.hpp
40 lines (30 loc) · 1.09 KB
/
mandelbrot_window.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once
#include "config.hpp"
#include "coordinates.hpp"
#include "graphics/display_event_observer.hpp"
#include "units.hpp"
#include <SFML/Graphics/Drawable.hpp>
#include <SFML/Graphics/Image.hpp>
#include <SFML/Graphics/Sprite.hpp>
#include <SFML/Graphics/Texture.hpp>
#include <memory>
#include <optional>
namespace fractal {
class MandelbrotWindow : public DisplayEventObserver {
complex_domain domain_ = START_COMPLEX_DOMAIN;
sf::Image image_;
sf::Texture texture_;
int selection_start_x_{};
int selection_start_y_{};
void on_resize_(display_domain new_domain_selection);
void draw_coordinate_(
display_coordinate display_coord, const avx512_complex& complex_coords
);
public:
MandelbrotWindow();
void on_mouse_button_pressed(const sf::Event::MouseButtonEvent& event) override;
void on_mouse_button_released(const sf::Event::MouseButtonEvent& event) override;
void set_pixel_color(display_coordinate coordinate, float iteration_ratio);
std::optional<std::unique_ptr<sf::Drawable>> get_drawable() override;
};
} // namespace fractal