From 3c881f02ed892360bf7f0308f2c2000e2462f7e6 Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Fri, 19 Jan 2024 14:58:48 +0100 Subject: [PATCH] Refactor pixel handling functions from main.c --- Makefile | 2 +- main.c | 56 +++-------------------------------------------- pixel.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pixel.h | 23 ++++++++++++++++++++ 4 files changed, 93 insertions(+), 54 deletions(-) create mode 100644 pixel.c create mode 100644 pixel.h diff --git a/Makefile b/Makefile index ebb90c0..e37b346 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ MLX := $(MLXDIR)libmlx_Linux.a LFTDIR := Libft/ LFT := $(LFTDIR)libft.a -SRCS := main.c complex.c color.c event_handling.c fractals.c +SRCS := main.c complex.c color.c event_handling.c fractals.c pixel.c OBJS := $(SRCS:%.c=%.o) all : $(NAME) diff --git a/main.c b/main.c index aca56f0..82a4fae 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/27 14:29:26 by ljiriste #+# #+# */ -/* Updated: 2024/01/19 13:44:02 by ljiriste ### ########.fr */ +/* Updated: 2024/01/19 13:58:45 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,12 @@ #include "color.h" #include "vect2.h" #include "fractals.h" +#include "pixel.h" #include "fractol.h" #include "libft.h" #include #include #include -#include #include #include #include @@ -31,33 +31,6 @@ int close_win(t_session *s) return (0); } -void *get_pixel(t_img *img, int x, int y) -{ - return (img->addr + y * img->bpl + x * img->bpp / CHAR_BIT); -} - -void ft_putpx_img(t_img *img, int x, int y, t_color c) -{ - char *px_addr; - - px_addr = get_pixel(img, x, y); - if (img->endian) - { - px_addr[0] = c.a; - px_addr[1] = c.r; - px_addr[2] = c.g; - px_addr[3] = c.b; - } - else - { - px_addr[3] = c.a; - px_addr[2] = c.r; - px_addr[1] = c.g; - px_addr[0] = c.b; - } - return ; -} - void free_session(t_session *s) { mlx_destroy_display(s->mlx); @@ -65,29 +38,6 @@ void free_session(t_session *s) return ; } -t_color get_img_pixel_color(t_img *img, int x, int y) -{ - char *px_addr; - t_color c; - - px_addr = get_pixel(img, x, y); - if (img->endian) - { - c.a = px_addr[0]; - c.r = px_addr[1]; - c.g = px_addr[2]; - c.b = px_addr[3]; - } - else - { - c.a = px_addr[3]; - c.r = px_addr[2]; - c.g = px_addr[1]; - c.b = px_addr[0]; - } - return (c); -} - t_color get_color(t_session *s, int x, int y) { double palette_param; @@ -276,7 +226,7 @@ void parse_args(int argc, char **argv, t_session *s) if (argc == 0) free(argv); s->set.man.detail = 1000; - s->set.man.color_stability = 1000; + s->set.man.color_stability = 100; s->img.width = 1000; s->img.height = 1000; s->img.undersample_max = 5; diff --git a/pixel.c b/pixel.c new file mode 100644 index 0000000..34e1796 --- /dev/null +++ b/pixel.c @@ -0,0 +1,66 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pixel.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ljiriste +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/19 13:50:28 by ljiriste #+# #+# */ +/* Updated: 2024/01/19 13:58:30 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pixel.h" +#include "color.h" +#include "fractol.h" +#include + +void *get_pixel(t_img *img, int x, int y) +{ + return (img->addr + y * img->bpl + x * img->bpp / CHAR_BIT); +} + +void ft_putpx_img(t_img *img, int x, int y, t_color c) +{ + char *px_addr; + + px_addr = get_pixel(img, x, y); + if (img->endian) + { + px_addr[0] = c.a; + px_addr[1] = c.r; + px_addr[2] = c.g; + px_addr[3] = c.b; + } + else + { + px_addr[3] = c.a; + px_addr[2] = c.r; + px_addr[1] = c.g; + px_addr[0] = c.b; + } + return ; +} + +t_color get_img_pixel_color(t_img *img, int x, int y) +{ + char *px_addr; + t_color c; + + px_addr = get_pixel(img, x, y); + if (img->endian) + { + c.a = px_addr[0]; + c.r = px_addr[1]; + c.g = px_addr[2]; + c.b = px_addr[3]; + } + else + { + c.a = px_addr[3]; + c.r = px_addr[2]; + c.g = px_addr[1]; + c.b = px_addr[0]; + } + return (c); +} diff --git a/pixel.h b/pixel.h new file mode 100644 index 0000000..58c6da9 --- /dev/null +++ b/pixel.h @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pixel.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ljiriste +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/19 13:52:11 by ljiriste #+# #+# */ +/* Updated: 2024/01/19 13:58:03 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PIXEL_H +# define PIXEL_H + +# include "color.h" +# include "fractol.h" + +void *get_pixel(t_img *img, int x, int y); +void ft_putpx_img(t_img *img, int x, int y, t_color c); +t_color get_img_pixel_color(t_img *img, int x, int y); + +#endif //PIXEL_H -- 2.30.2