new file lone.c

This commit is contained in:
Gregory 2017-02-19 01:26:21 +02:00
parent 983a4f232c
commit 50d70eb260
4 changed files with 73 additions and 73 deletions

View file

@ -7,7 +7,7 @@ include_directories(inc libft/includes minilibx) # headers
link_directories(libft minilibx) # libraries link_directories(libft minilibx) # libraries
set(SOURCE_FILES set(SOURCE_FILES
src/main.c) # sources src/main.c src/line.c) # sources
add_executable(fdf ${SOURCE_FILES}) # compilation add_executable(fdf ${SOURCE_FILES}) # compilation

View file

@ -18,7 +18,8 @@ SRCDIR = ./src/
OBJDIR = ./obj/ OBJDIR = ./obj/
SRC_FILES = main.c SRC_FILES = main.c \
line.c
OBJ_FILES = $(SRC_FILES:.c=.o) OBJ_FILES = $(SRC_FILES:.c=.o)

68
src/line.c Normal file
View file

@ -0,0 +1,68 @@
#include "fdf.h"
static void swap_x_y(t_point *p1, t_point *p2)
{
int temp;
temp = p1->x;
p1->x = p1->y;
p1->y = temp;
temp = p2->x;
p2->x = p2->y;
p2->y = temp;
}
static void swap_points(t_point *p1, t_point *p2)
{
t_point temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
static void draw_line(t_point *p1, t_point *p2, t_mlx *m, t_swap *s)
{
int dx = abs(p2->x - p1->x);
int dy = abs(p2->y - p1->y);
int derr = 2 * dy - dx;
while (p1->x < p2->x)
{
if (s->swap_coord)
mlx_pixel_put(m->mlx, m->win, p1->y, p1->x, p1->color);
else
mlx_pixel_put(m->mlx, m->win, p1->x, p1->y, p1->color);
if (derr > 0)
{
p1->y += s->swap_x;
derr -= dx;
}
(p1->x)++;
derr += dy;
}
}
void line(t_point *p1, t_point *p2, t_mlx *m)
{
int dx;
int dy;
t_swap swap;
dx = abs(p2->x - p1->x);
dy = abs(p2->y - p1->y);
swap.swap_coord = 0;
swap.swap_x = 1;
if (dy > dx)
{
swap_x_y(p1, p2);
swap.swap_coord= 1;
}
if (p1->x > p2->x)
swap_points(p1, p2);
if (p1->y > p2->y)
swap.swap_x = -1;
draw_line(p1, p2, m, &swap);
}

View file

@ -7,75 +7,6 @@
#include "fdf.h" #include "fdf.h"
void swap_x_y(t_point *p1, t_point *p2)
{
int temp;
temp = p1->x;
p1->x = p1->y;
p1->y = temp;
temp = p2->x;
p2->x = p2->y;
p2->y = temp;
}
void swap_points(t_point *p1, t_point *p2)
{
t_point temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void draw_line(t_point *p1, t_point *p2, t_mlx *m, t_swap *s)
{
int dx = abs(p2->x - p1->x);
int dy = abs(p2->y - p1->y);
int derr = 2 * dy - dx;
while (p1->x < p2->x)
{
if (s->swap_coord)
mlx_pixel_put(m->mlx, m->win, p1->y, p1->x, p1->color);
else
mlx_pixel_put(m->mlx, m->win, p1->x, p1->y, p1->color);
if (derr > 0)
{
p1->y += s->swap_x;
derr -= dx;
}
(p1->x)++;
derr += dy;
}
}
void line(t_point *p1, t_point *p2, t_mlx *m)
{
int dx;
int dy;
t_swap swap;
dx = abs(p2->x - p1->x);
dy = abs(p2->y - p1->y);
swap.swap_coord = 0;
swap.swap_x = 1;
if (dy > dx)
{
swap_x_y(p1, p2);
swap.swap_coord= 1;
}
if (p1->x > p2->x)
{
swap_points(p1, p2);
}
if (p1->y > p2->y)
{
swap.swap_x = -1;
}
draw_line(p1, p2, m, &swap);
}
void test_line(t_mlx mlx) void test_line(t_mlx mlx)
{ {
t_point p1; t_point p1;
@ -142,7 +73,6 @@ void circle(t_mlx m)
} }
} }
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
t_mlx m; t_mlx m;
@ -158,9 +88,10 @@ int main(int argc, char **argv)
ft_putstr(line); ft_putstr(line);
ft_putstr("\n"); ft_putstr("\n");
} }
m.mlx = mlx_init(); m.mlx = mlx_init();
m.win = mlx_new_window(m.mlx, 500, 500, "fdf"); m.win = mlx_new_window(m.mlx, 500, 500, "fdf");
//line(&p1, &p2, &m);
test_line(m); test_line(m);
circle(m); circle(m);
mlx_loop(m.mlx); mlx_loop(m.mlx);