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>
- #define X 0
- #define Y 1
- 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);
- }
- int draw_line(t_data *data, int p0[2], int p1[2])
- {
- 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;
- }
- return (0);
- }
- void draw_field(t_data *data, int size_x, int size_y, int zoom)
- {
- int current_x;
- int current_y;
- current_y = 0;
- size_x *= zoom;
- size_y *= zoom;
- while (current_y < size_y)
- {
- current_x = 0;
- while (current_x < size_x)
- {
- (current_x + zoom != size_x) &&
- draw_line(data, (int[2]){current_x, current_y}, (int[2]){current_x + zoom, current_y});
- (current_y + zoom != size_y) &&
- draw_line(data, (int[2]){current_x, current_y}, (int[2]){current_x, current_y + zoom});
- current_x += zoom;
- }
- current_y += zoom;
- }
- }
- int main(void)
- {
- t_data data;
- 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_field(&data, 10, 10, 30);
- mlx_loop(data.mlx_ptr);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement