diff --git a/builds/fdf.o b/builds/fdf.o index 731ae54..efdc23a 100644 Binary files a/builds/fdf.o and b/builds/fdf.o differ diff --git a/fdf b/fdf index e696268..87f14ef 100755 Binary files a/fdf and b/fdf differ diff --git a/includes/fdf.h b/includes/fdf.h index 03101b1..94f8e8a 100644 --- a/includes/fdf.h +++ b/includes/fdf.h @@ -15,12 +15,14 @@ typedef struct s_map { void *mlx_ptr; void *win_ptr; + void *img_ptr; + char *img_addr; int win_size_x; int win_size_y; int img_size_x; int img_size_y; - void *img_ptr; - char *img_addr; + int map_size_x; + int map_size_y; int img_bpp; int img_sizel; int img_endian; diff --git a/srcs/fdf.c b/srcs/fdf.c index 91993bb..8d8b1af 100644 --- a/srcs/fdf.c +++ b/srcs/fdf.c @@ -4,23 +4,8 @@ t_map *init_map(void); int print_keycode(int keycode); int shut_down(t_map *map); void draw_pixel(t_map *map, int x, int y, int color); - -int keypress(int keycode, t_map *map) -{ - if (keycode == ESCAPE) - shut_down(map); - else if (keycode == LEFT) - (map->rot_x) -= 1; - else if (keycode == RIGHT) - (map->rot_x) += 1; - else if (keycode == UP) - (map->rot_y) -= 1; - else if (keycode == DOWN) - (map->rot_y) += 1; - else - print_keycode(keycode); - return (0); -} +int keypress(int keycode, t_map *map); +void rotation_state(t_map *map); void draw_image(t_map *map) { @@ -33,11 +18,15 @@ void draw_image(t_map *map) x = 0; while ((x * map->img_bpp / 8) < map->img_sizel) { - draw_pixel(map, x, y, 0x94dd24); + draw_pixel(map, x, y, 0xffffff); x += 4; } y += 4; } + // put image on screen + mlx_put_image_to_window(map->mlx_ptr, map->win_ptr, map->img_ptr, 0, 0); + // put rotation on screen + rotation_state(map); } int main(int ac, char **av) @@ -57,6 +46,25 @@ int main(int ac, char **av) return (0); } +int keypress(int keycode, t_map *map) +{ + if (keycode == ESCAPE) + shut_down(map); + else if (keycode == LEFT) + (map->rot_x) -= 1; + else if (keycode == RIGHT) + (map->rot_x) += 1; + else if (keycode == UP) + (map->rot_y) += 1; + else if (keycode == DOWN) + (map->rot_y) -= 1; + else + print_keycode(keycode); + // draw image + draw_image(map); + return (0); +} + int print_keycode(int keycode) { ft_putnbr(keycode); @@ -72,6 +80,20 @@ void draw_pixel(t_map *map, int x, int y, int color) *(unsigned int*)(map->img_addr + position) = color; } +void rotation_state(t_map *map) +{ + char *position; + int x; + int y; + + x = map->img_size_x - 10; + y = map->img_size_y - 10; + position = ft_strjoin(ft_itoa(map->rot_x), " | "); + position = ft_strjoin(position, ft_itoa(map->rot_y)); + x -= ft_strlen(position) * 6; + mlx_string_put(map->mlx_ptr, map->win_ptr, x, y, 0xffffff, position); +} + t_map *init_map(void) { t_map *map; @@ -81,8 +103,8 @@ t_map *init_map(void) map->win_size_x = 500; map->win_size_y = 500; // size image - map->img_size_x = 400; - map->img_size_y = 400; + map->img_size_x = map->win_size_x; + map->img_size_y = map->win_size_y; // view rotation map->rot_x = 0; map->rot_y = 0; @@ -95,9 +117,6 @@ t_map *init_map(void) map->img_addr = mlx_get_data_addr(map->img_ptr, &(map->img_bpp), &(map->img_sizel), &(map->img_endian)); // draw image draw_image(map); - // put image on screen - mlx_put_image_to_window(map->mlx_ptr, map->win_ptr, map->img_ptr, 50, 50); - return (map); }