From cebfe7579819d9dbcd1e65e9640b5d9a0a734750 Mon Sep 17 00:00:00 2001 From: asus Date: Sat, 13 Jan 2024 15:43:42 +0100 Subject: [PATCH] check limit a little earlier but nothing great --- builds/draw_bonus.o | Bin 155752 -> 156152 bytes builds/fdf.o | Bin 150808 -> 150808 bytes builds/keypress_bonus.o | Bin 147432 -> 147432 bytes builds/modifs.o | Bin 149448 -> 149448 bytes builds/parse.o | Bin 148952 -> 148952 bytes fdf | Bin 168104 -> 168240 bytes includes/fdf.h | 3 ++ srcs/draw_bonus.c | 97 ++++++++++++++++++++++------------------ 8 files changed, 57 insertions(+), 43 deletions(-) diff --git a/builds/draw_bonus.o b/builds/draw_bonus.o index 69c22e319239d139047c53da4bd65f153370cd09..96e4317ec2663c47eedd0f59979056a77b863ff9 100644 GIT binary patch delta 25093 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 Sp~${eQ!lL+%XcPJ82>-MN7}6b delta 24572 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 delta 113 zcmbO+i*v>-&JAz48Eq!N<&I?Z*zC^p(p=t`0SH(Fz+?!R3omCeodEX<9QO;eLnl8sW$EYr*qO)OF@4U$vL(o762%uWZWL($dtnd03PBP9smFU delta 100 zcmX@n&v~Msb3=i%ye|U~um*t15HJ}ICL_UQ)Z}_o$I1Jg3pYEu{P?46ZmwrxZk%kI pnv{}klxk*~W|nATkz#3(oMM({VqjsGVr14Hw|Z~y}kum*$4a4;D)xy^CSWHA$=%|=dnf0Zo^^h`}GQw+__j8hDg k&5cuxOidG0Eltx>Q!J8=4a`!FOxq9JGj2a@&m_tQ00I^l+yDRo delta 100 zcmcc7&3U7nb3>w|ye|U~um*t15HJ}ICL_UQ)Z_wV$I0s*3pX1%<^5GQH`lW;H%>N9 pO-e~NN;R`gGfOnFNU=0XPBBX}F|aU8F*0jEY|ps;usxF~8vvfW8Gir( diff --git a/fdf b/fdf index e24d73d681913415ec739d64864a03971978b926..bebbe7403527432ba000802b3bce529d1614b0e3 100755 GIT binary patch delta 11681 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 delta 11316 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 RI?8eyRr=#9i)%fN`ENOMgSh|z diff --git a/includes/fdf.h b/includes/fdf.h index 3310eb7..b0219b0 100644 --- a/includes/fdf.h +++ b/includes/fdf.h @@ -54,6 +54,9 @@ void draw_grid(t_fdf *fdf, int i, int j); void draw_lines(t_fdf *fdf, int *start, int *end); void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int z); void draw_pixel(t_fdf *fdf, int x, int y, int color); +int is_outise_screen(t_fdf *fdf, int x, int y); +int get_primary_color(char primar, int percent); +int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator); // keypress.c void keypress_more(int keycode, t_fdf *fdf); diff --git a/srcs/draw_bonus.c b/srcs/draw_bonus.c index 58e3f82..1fecf27 100644 --- a/srcs/draw_bonus.c +++ b/srcs/draw_bonus.c @@ -32,16 +32,44 @@ void draw_grid(t_fdf *fdf, int i, int j) if (i + 1 < fdf->map_width) point_end = new_coordinates(fdf, i + 1, j); draw_lines(fdf, point_start, point_end); + free(point_end); + point_end = NULL; if (j + 1 < fdf->map_height) - { - free(point_end); point_end = new_coordinates(fdf, i, j + 1); - } draw_lines(fdf, point_start, point_end); free(point_start); free(point_end); } +void draw_lines(t_fdf *fdf, int *start, int *end) +{ + int dx; + int dy; + int i; + int j; + int percent; + + if (end) + { + dx = end[0] - start[0]; + dy = end[1] - start[1]; + i = 0; + j = 0; + while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy)) + { + if (!is_outise_screen(fdf, start[0] + i, start[1] + j)) + { + percent = color_percent(fdf, start, end, ft_abs(i) + ft_abs(j), ft_abs(dx) + ft_abs(dy)); + draw_color_pixel(fdf, start[0] + i, start[1] + j, percent); + } + if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx)) + j += ft_sign(dy); + else + i += ft_sign(dx); + } + } +} + // return the position of the point p // in percentage of the total height of the map : // z_min---start---point---end----z_max @@ -59,7 +87,8 @@ void draw_grid(t_fdf *fdf, int i, int j) // - line : end - start // - p_numerator : px + py // - p_denominator : ex + ey -int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator) { +int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_denominator) +{ int z_total; int start; int line; @@ -88,30 +117,18 @@ int color_percent(t_fdf *fdf, int *p_start, int *p_end, int p_numerator, int p_d return (percent); } -void draw_lines(t_fdf *fdf, int *start, int *end) +void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int percent) { - int dx; - int dy; - int i; - int j; - int percent; + int color_r; + int color_g; + int color_b; + int color; - if (end) - { - dx = end[0] - start[0]; - dy = end[1] - start[1]; - i = 0; - j = 0; - while (ft_abs(i) <= ft_abs(dx) && ft_abs(j) <= ft_abs(dy)) - { - percent = color_percent(fdf, start, end, ft_abs(i) + ft_abs(j), ft_abs(dx) + ft_abs(dy)); - draw_color_pixel(fdf, start[0] + i, start[1] + j, percent); - if (!ft_abs(dx) || ft_abs(j) < ft_abs(i * dy / dx)) - j += ft_sign(dy); - else - i += ft_sign(dx); - } - } + color_r = get_primary_color('r', percent); + color_g = get_primary_color('g', percent); + color_b = get_primary_color('b', percent); + color = (color_r << 16) + (color_g << 8) + color_b; + draw_pixel(fdf, new_x, new_y, color); } int get_primary_color(char primar, int percent) @@ -136,30 +153,24 @@ int get_primary_color(char primar, int percent) return (new_primary_color); } -void draw_color_pixel(t_fdf *fdf, int new_x, int new_y, int percent) -{ - int color_r; - int color_g; - int color_b; - int color; - - color_r = get_primary_color('r', percent); - color_g = get_primary_color('g', percent); - color_b = get_primary_color('b', percent); - color = (color_r << 16) + (color_g << 8) + color_b; - draw_pixel(fdf, new_x, new_y, color); -} - void draw_pixel(t_fdf *fdf, int x, int y, int color) { int position; + + if (is_outise_screen(fdf, x, y)) + return ; + position = y * fdf->img_sizel + x * fdf->img_bpp / 8; + *(unsigned int *)(fdf->img_addr + position) = color; +} + +int is_outise_screen(t_fdf *fdf, int x, int y) +{ int xmax; int ymax; xmax = fdf->img_sizel / (fdf->img_bpp / 8); ymax = fdf->img_size_y; if (x < 0 || y < 0 || x > xmax || y > ymax) - return ; - position = y * fdf->img_sizel + x * fdf->img_bpp / 8; - *(unsigned int *)(fdf->img_addr + position) = color; + return (1); + return (0); }