diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-05-13 13:05:33 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-05-13 13:05:33 +0200 |
| commit | 0267b512527b85af6cd815bb9215bd659b75931e (patch) | |
| tree | 3f798f9e4b89f84d5e11ae820329e15f3c1e351d /src/color.c | |
| parent | 5635d61927b2fc864d92f9f7b40cdb164eeab275 (diff) | |
| download | scop-0267b512527b85af6cd815bb9215bd659b75931e.tar.gz scop-0267b512527b85af6cd815bb9215bd659b75931e.tar.bz2 scop-0267b512527b85af6cd815bb9215bd659b75931e.zip | |
Added basic color
Diffstat (limited to 'src/color.c')
| -rw-r--r-- | src/color.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/color.c b/src/color.c new file mode 100644 index 0000000..45a00fa --- /dev/null +++ b/src/color.c @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* color.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/13 11:53:53 by charles #+# #+# */ +/* Updated: 2020/05/13 13:00:48 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "scop.h" + +#include <string.h> +float *color_new(size_t n) +{ + size_t i; + float step; + float *colors; + union u_color c; + + if ((colors = malloc(sizeof(float) * (n * 4))) == NULL) + return (NULL); + step = 1.0 / (float)n; + i = 0; + c.r = 0.0; + c.g = 0.0; + c.b = 0.0; + c.a = 1.0; + while (i < n) + { + c.r += step; + c.g += step; + c.b += step; + ft_memcpy(&colors[i * 4], c.data, 4 * sizeof(float)); + i++; + } + return (colors); +} + +bool color_merge_vertices(t_object *object) +{ + size_t i; + float *colors; + float *new_vertices; + + if ((colors = color_new(object->vertices_len)) == NULL) + return (false); + if ((new_vertices = malloc(sizeof(float) * (object->vertices_len * 8))) == NULL) + { + free(colors); + return (false); + } + i = 0; + while (i < object->vertices_len) + { + ft_memcpy(&new_vertices[i * 8], &object->vertices[i * 4], 4 * sizeof(float)); + ft_memcpy(&new_vertices[i * 8 + 4], &colors[i * 4], 4 * sizeof(float)); + i++; + } + free(object->vertices); + object->vertices = new_vertices; + return (true); +} |
