From: Lukas Jiriste Date: Thu, 25 Apr 2024 09:48:56 +0000 (+0200) Subject: Add options for speed, detail and colorfulness X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=22da7c7520985682161de16a31626c7cf7bbc1cf;p=42%2Ffract-ol.git Add options for speed, detail and colorfulness Add color change speed, maximum iterations (detail) and color change density (colorfulness) as fractol options. Change defaults. --- diff --git a/main.c b/main.c index a3433ed..b0e25eb 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/27 14:29:26 by ljiriste #+# #+# */ -/* Updated: 2024/04/25 09:42:33 by ljiriste ### ########.fr */ +/* Updated: 2024/04/25 11:44:39 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -212,17 +212,17 @@ static void init_view(t_session *s) void set_default(t_session *s) { + s->img.width = 1920; + s->img.height = 1011; + s->img.undersample_max = 5; + s->set.detail = 1000; s->view.fractal = mandelbrot; s->view.palette = tri_color; + s->view.color_shift_speed = -0.001; + s->set.color_stability = 100; s->view.pixel_size.x = 0.01; s->view.pixel_size.y = 0.01; - s->view.color_shift = 0.7; - s->view.color_shift_speed = 0.01; - s->set.detail = 1000; - s->set.color_stability = 100; - s->img.width = 1000; - s->img.height = 1000; - s->img.undersample_max = 5; + s->view.color_shift = 0; return ; } @@ -236,6 +236,27 @@ t_fractal to_fractal(const char *name) return (NULL); } +int parse_arg(char **argv, t_session *s, int *i) +{ + if (!ft_strcmp(argv[*i], "-w") && ft_isint(argv[*i + 1]) && ft_atoi(argv[*i + 1]) > 0) + s->img.width = ft_atoi(argv[++*i]); + else if (!ft_strcmp(argv[*i], "-h") && ft_isint(argv[*i + 1]) && ft_atoi(argv[*i + 1]) > 0) + s->img.height = ft_atoi(argv[++*i]); + else if (!ft_strcmp(argv[*i], "-u") && ft_isint(argv[*i + 1]) && ft_atoi(argv[*i]) >= 0 ) + s->img.undersample_max = ft_atoi(argv[++*i]); + else if (!ft_strcmp(argv[*i], "-d") && ft_isint(argv[*i + 1])) + s->set.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 if (!ft_strcmp(argv[*i], "-s") && ft_isint(argv[*i + 1])) + s->view.color_shift_speed = ft_atoi(argv[++*i]) / 1000.; + else if (!ft_strcmp(argv[*i], "-c") && ft_isint(argv[*i + 1])) + s->set.color_stability = 10000 / ft_atoi(argv[++*i]); + else + return (1); + return (0); +} + int parse_args(int argc, char **argv, t_session *s) { int i; @@ -246,17 +267,7 @@ int parse_args(int argc, char **argv, t_session *s) i = 1; while (i + 1 < argc) { - if (!ft_strcmp(argv[i], "-w") && ft_isint(argv[i + 1])) - s->img.width = ft_atoi(argv[++i]); - else if (!ft_strcmp(argv[i], "-h") && ft_isint(argv[i + 1])) - s->img.height = ft_atoi(argv[++i]); - else if (!ft_strcmp(argv[i], "-u") && ft_isint(argv[i + 1])) - s->img.undersample_max = ft_atoi(argv[++i]); - else if (!ft_strcmp(argv[i], "-d") && ft_isint(argv[i + 1])) - s->set.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 + if (parse_arg(argv, s, &i)) return (1); ++i; }