void ft_draw_circle(SDL_Surface *s, t_pt c, int r, int cl) { int x; int y; int radius_error; x = r; y = 0; radius_error = 1 - x; while (x >= y) { ft_put_pixel(s, x + c.x, y + c.y, cl); ft_put_pixel(s, y + c.x, x + c.y, cl); ft_put_pixel(s, -x + c.x, y + c.y, cl); ft_put_pixel(s, -y + c.x, x + c.y, cl); ft_put_pixel(s, -x + c.x, -y + c.y, cl); ft_put_pixel(s, -y + c.x, -x + c.y, cl); ft_put_pixel(s, x + c.x, -y + c.y, cl); ft_put_pixel(s, y + c.x, -x + c.y, cl); y++; if (radius_error < 0) radius_error += 2 * y + 1; else { x--; radius_error += 2 * (y - x + 1); } } }
static void ft_draw_floor(t_mlx *mx, int x, int y, int pixel) { if (mx->b & 4) ft_set_floor(mx, &mx->map.floor, x, y); else ft_put_pixel(&mx->v, mx->data, pixel, CEILING); }
static void ft_draw_sky(t_mlx *mx, int x, int y, int pixel) { if (mx->b & 1) ft_set_sky(mx, &mx->map.sky, x, y); else ft_put_pixel(&mx->v, mx->data, pixel, SKY); }
void draw(t_env *e) { int i; int j; i = 0; j = 0; if ((e->inc = malloc(sizeof(t_inc))) == NULL) exit(0); if ((e->box = malloc(sizeof(t_box))) == NULL) exit(0); while (i < e->coord[0][0]->size_y) { j = 0; while (j < e->coord[i][0]->size_x) { ft_put_pixel(e, i, j); j++; } i++; } mlx_put_image_to_window(e->mlx, e->win, e->img, 0, 0); free(e->inc); free(e->box); }
void ft_draw(int x2, int y2, t_env *e) { e->tmpx = e->x_prim; e->tmpy = e->y_prim; e->dx = abs(x2 - e->x_prim); e->dy = abs(y2 - e->y_prim); e->sx = e->x_prim < x2 ? 1 : -1; e->sy = e->y_prim < y2 ? 1 : -1; e->error = (e->dx > e->dy ? e->dx : -(e->dy)) / 2; while (!(e->tmpy == y2 && e->tmpx == x2)) { ft_put_pixel(e, e->tmpx, e->tmpy, e->color); e->tmp_error = e->error; if (e->tmp_error > -(e->dx)) { e->error -= (e->dy); e->tmpx += e->sx; } if (e->tmp_error < (e->dy)) { e->error += (e->dx); e->tmpy += e->sy; } } }
static void ft_draw_wall(t_mlx *mx, int y, int pixel) { if (mx->map.data[mx->v.map.x][mx->v.map.y] > 2 && mx->b & 2) ft_apply_texture(&mx->map, &mx->v, mx->height, y); else ft_set_color(&mx->v); ft_put_pixel(&mx->v, mx->data, pixel, WALL); }
void ft_wolf_5(t_env *e) { e->y = 0; while (e->y < WIN_Y) { if (e->y < e->draw_start) e->color = 0xE077B5FE; else if (e->y > e->draw_end) e->color = 0xABD473; else if (e->ray_dir_x >= 0 && e->side == 0) e->color = 0xC41F3B; else if (e->ray_dir_x <= 0 && e->side == 0) e->color = 0xFFF569; else if (e->ray_dir_y <= 0 && e->side == 1) e->color = 0xFF7D0A; else e->color = 0x0070DE; ft_put_pixel(e, e->x, e->y, e->color); e->y++; } }
int ft_print(t_env *e) { size_t x; size_t y; y = 0; mlx_destroy_image(e->mlx, e->im); mlx_clear_window(e->mlx, e->win); e->im = mlx_new_image(e->mlx, WIN_X, WIN_Y); while (y < e->cnt_line) { x = 0; while (x < e->cnt_col) { ft_iso(x, y, e); ++x; } ++y; } ft_put_pixel(e, e->tmpx, e->tmpy, e->color); mlx_put_image_to_window(e->mlx, e->win, e->im, 0, 0); return (0); }