/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/11/11 18:51:29 by ljiriste #+# #+# */
-/* Updated: 2024/01/19 13:43:18 by ljiriste ### ########.fr */
+/* Updated: 2024/04/10 14:03:00 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
};
typedef struct s_img t_img;
+typedef double (*t_fractal)();
+
struct s_view
{
- double (*fractal)();
- t_color (*palette)(double);
- t_vect2 window_coord;
- t_vect2 pixel_size;
+ t_fractal fractal;
+ t_color (*palette)(double);
+ t_vect2 window_coord;
+ t_vect2 pixel_size;
};
typedef struct s_view t_view;
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/10/27 14:29:26 by ljiriste #+# #+# */
-/* Updated: 2024/04/10 13:39:05 by ljiriste ### ########.fr */
+/* Updated: 2024/04/10 14:03:23 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
return (res);
}
-static void init_view(t_session *s)
-{
- s->view.fractal = mandelbrot;
- s->view.palette = tri_color;
- s->view.pixel_size.x = 0.01;
- s->view.pixel_size.y = 0.01;
- s->view.window_coord.x = -s->img.width / 2 * s->view.pixel_size.x;
- s->view.window_coord.y = s->img.height / 2 * s->view.pixel_size.y;
- return ;
-}
-
void init_session(t_session *s)
{
s->mlx = mlx_init();
s->img.addr = mlx_get_data_addr(s->img.img, &s->img.bpp, &s->img.bpl, &s->img.endian);
ft_mat_init(&s->img.calced, sizeof(bool));
construct_mat(&s->img.calced, s->img.height, s->img.width);
- init_view(s);
s->img.undersample = s->img.undersample_max;
}
+static void init_view(t_session *s)
+{
+ s->view.fractal = mandelbrot;
+ s->view.palette = tri_color;
+ s->view.pixel_size.x = 0.01;
+ s->view.pixel_size.y = 0.01;
+ s->view.window_coord.x = -s->img.width / 2 * s->view.pixel_size.x;
+ s->view.window_coord.y = s->img.height / 2 * s->view.pixel_size.y;
+ return ;
+}
+
void set_default(t_session *s)
{
s->set.man.detail = 1000;
s->img.width = 1000;
s->img.height = 1000;
s->img.undersample_max = 5;
+ init_view(s);
return ;
}
+t_fractal to_fractal(const char *name)
+{
+ if (!ft_strcmp(name, "man") || !ft_strcmp(name, "mandelbrot"))
+ return (mandelbrot);
+ else if (!ft_strcmp(name, "tri") || !ft_strcmp(name, "tricorn"))
+ return (tricorn);
+ else
+ return (NULL);
+}
+
int parse_args(int argc, char **argv, t_session *s)
{
int i;
s->img.undersample_max = ft_atoi(argv[++i]);
else if (!ft_strcmp(argv[i], "-d") && ft_isint(argv[i + 1]))
s->set.man.detail = ft_atoi(argv[++i]);
+ else if (!ft_strcmp(argv[i], "-f") && to_fractal(argv[i + 1]) != NULL)
+ s->view.fractal = to_fractal(argv[i + 1]);
else
return (1);
++i;