Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <mlx.h>
- typedef struct s_data
- {
- void *mlx_ptr;
- void *mlx_win;
- } t_data;
- typedef struct s_point
- {
- int x;
- int y;
- } t_point;
- void swap(t_point *p1, t_point *p2)
- {
- t_point temp;
- temp = *p1;
- *p1 = *p2;
- *p2 = temp;
- }
- int ft_abs(int num)
- {
- return (num < 0 ? -num : num);
- }
- void draw_line(t_data *data, t_point p0, t_point p1)
- {
- int dx;
- int dy;
- int err[2];
- int sx;
- int sy;
- dx = ft_abs(p1.x - p0.x);
- dy = -ft_abs(p1.y - p0.y);
- err[0] = dx + dy;
- sx = p0.x < p1.x ? 1 : -1;
- sy = p0.y < p1.y ? 1 : -1;
- while(1)
- {
- mlx_pixel_put(data->mlx_ptr, data->mlx_win, p0.x, p0.y, 0xffffff);
- if (p0.x == p1.x && p0.y == p1.y)
- break;
- err[1] = 2 * err[0];
- if (err[1] >= dy && (err[0] += dy))
- p0.x += sx;
- if (err[1] <= dx && (err[0] += dx))
- p0.y += sy;
- }
- }
- int main(void)
- {
- t_data data;
- t_point p1;
- t_point p2;
- p1.x = 100;
- p1.y = 100;
- p2.x = 500;
- p2.y = 200;
- if ((data.mlx_ptr = mlx_init()) == NULL)
- return (EXIT_FAILURE);
- if ((data.mlx_win = mlx_new_window(data.mlx_ptr, 640, 480, "Hello world")) == NULL)
- return (EXIT_FAILURE);
- draw_line(&data, p2, p1);
- mlx_loop(data.mlx_ptr);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement