aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event.c41
-rw-r--r--src/main.c3
-rw-r--r--src/render.c12
3 files changed, 45 insertions, 11 deletions
diff --git a/src/event.c b/src/event.c
index 6aac07b..3f878f8 100644
--- a/src/event.c
+++ b/src/event.c
@@ -6,12 +6,15 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/24 09:52:35 by cacharle #+# #+# */
-/* Updated: 2020/02/24 10:10:29 by cacharle ### ########.fr */
+/* Updated: 2020/02/24 14:08:20 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "fractol.h"
+#define MOVE_SPEED 0.2
+#define ZOOM_SPEED 1.1
+
int event_quit(t_state *state)
{
state->running = false;
@@ -20,7 +23,43 @@ int event_quit(t_state *state)
int event_keydown(int key, t_state *state)
{
+ printf("%d\n", key);
if (key == MLXK_ESC)
state->running = false;
+ else if (key == MLXK_UP)
+ state->center.i -= state->plane.i * MOVE_SPEED;
+ else if (key == MLXK_DOWN)
+ state->center.i += state->plane.i * MOVE_SPEED;
+ else if (key == MLXK_LEFT)
+ state->center.r -= state->plane.r * MOVE_SPEED;
+ else if (key == MLXK_RIGHT)
+ state->center.r += state->plane.r * MOVE_SPEED;
+ else
+ return (0);
+ render_update_window_complex(state);
+ return (0);
+}
+
+int event_mouse(int button, int x, int y, t_state *state)
+{
+ (void)x;
+ (void)y;
+
+ /* printf("%d\n", button); */
+ /* printf("%d\n", x); */
+ /* printf("%d\n", y); */
+ if (button == MLX_MOUSE_SCROLL_UP)
+ {
+ state->plane.r /= ZOOM_SPEED;
+ state->plane.i /= ZOOM_SPEED;
+ }
+ else if (button == MLX_MOUSE_SCROLL_DOWN)
+ {
+ state->plane.r *= ZOOM_SPEED;
+ state->plane.i *= ZOOM_SPEED;
+ }
+ else
+ return (0);
+ render_update_window_complex(state);
return (0);
}
diff --git a/src/main.c b/src/main.c
index cf1d3bf..944d5aa 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/24 09:27:44 by cacharle #+# #+# */
-/* Updated: 2020/02/24 12:01:02 by cacharle ### ########.fr */
+/* Updated: 2020/02/24 13:55:02 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -25,6 +25,7 @@ int main(int argc, char **argv)
return (1);
mlx_hook(state.window_ptr, 17, 0, event_quit, (void*)&state);
mlx_hook(state.window_ptr, 2, 2, event_keydown, (void*)&state);
+ mlx_mouse_hook(state.window_ptr, event_mouse, (void*)&state);
mlx_loop_hook(state.mlx_ptr, render_update, (void*)&state);
mlx_loop(state.mlx_ptr);
return (0);
diff --git a/src/render.c b/src/render.c
index b4ce29c..f4f3fed 100644
--- a/src/render.c
+++ b/src/render.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/24 09:54:59 by cacharle #+# #+# */
-/* Updated: 2020/02/24 13:46:44 by cacharle ### ########.fr */
+/* Updated: 2020/02/24 14:01:43 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -29,8 +29,6 @@ static void st_render_fractal(t_state *state)
{
((t_color*)state->window.data)[offset] =
state->palette[state->func(state->window_complex[offset])];
- /* printf("%06x\n", ((t_color*)state->window.data)[offset].hexcode); */
- /* printf("%d\n", state->func(state->window_complex[offset])); */
offset++;
}
}
@@ -62,14 +60,10 @@ void render_update_window_complex(t_state *state)
while (++j < WINDOW_WIDTH)
{
state->window_complex[offset].r =
- ((double)j / (double)WINDOW_WIDTH) * state->plane.r - (state->plane.r / 2.0);
+ ((double)j / (double)WINDOW_WIDTH) * state->plane.r - (state->plane.r / 2.0) + state->center.r;
state->window_complex[offset].i =
- ((double)i / (double)WINDOW_HEIGHT) * state->plane.i - (state->plane.i / 2.0);
+ ((double)i / (double)WINDOW_HEIGHT) * state->plane.i - (state->plane.i / 2.0) + state->center.i;
offset++;
- /* printf("%f %f\n", state->window_complex[i * WINDOW_WIDTH + j].a, state->window_complex[i * WINDOW_WIDTH + j].b); */
- /* ((double)i / (double)WINDOW_HEIGHT) * state->plane.b - (state->plane.b / 2.0); */
- /* printf("%f\n", (double)i / (double)WINDOW_HEIGHT * state->plane.b- (state->plane.b / 2.0)); */
- /* h_offset_to_complex(state, state->window_complex + i, i); // helper bloat? */
}
}
}