orton_runner/lib/my_csfml/my_line.c

64 lines
1.3 KiB
C

/*
** EPITECH PROJECT, 2018
** task01
** File description:
** I do task
*/
#include "../../include/lib/s_sfml.h"
#include "../../include/lib/my_graphics.h"
static void my_line_dx(sfml_t *sfml, int var[7], uint32_t color)
{
int cumul;
int i;
i = 0;
cumul = var[2] / 2;
while (++i < var[2]){
var[0] += var[4];
cumul += var[3];
if (cumul > var[2]){
cumul -= var[2];
var[1] += var[5];
}
my_pixel(sfml, var[0], var[1], color);
}
}
static void my_line_dy(sfml_t *sfml, int var[7], uint32_t color)
{
int cumul;
int i;
i = 0;
cumul = var[3] / 2;
while (++i < var[3]){
var[1] += var[5];
cumul += var[2];
if (cumul > var[3]){
cumul -= var[3];
var[0] += var[4];
}
my_pixel(sfml, var[0], var[1], color);
}
}
void my_line(sfml_t *sfml, int line[4], uint32_t color)
{
int var[6];
var[0] = line[0];
var[1] = line[1];
var[2] = line[2] - line[0];
var[3] = line[3] - line[1];
var[4] = (var[2] > 0) ? 1 : -1;
var[5] = (var[3] > 0) ? 1 : -1;
var[2] = (var[2] > 0) ? var[2] : -var[2];
var[3] = (var[3] > 0) ? var[3] : -var[3];
my_pixel(sfml, var[0], var[1], color);
if (var[2] > var[3])
my_line_dx(sfml, var, color);
else
my_line_dy(sfml, var, color);
}