From 29ea8338efb0b5450611b73463c9d7d469db2d75 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 14 May 2020 15:01:31 +0200 Subject: Changed window manager to SDL2, refactoring everything --- src/texture.c | 161 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 90 insertions(+), 71 deletions(-) (limited to 'src/texture.c') diff --git a/src/texture.c b/src/texture.c index 75f4797..e74f6be 100644 --- a/src/texture.c +++ b/src/texture.c @@ -6,79 +6,98 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/05/11 14:27:34 by charles #+# #+# */ -/* Updated: 2020/05/13 17:11:06 by charles ### ########.fr */ +/* Updated: 2020/05/14 14:01:38 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "scop.h" -typedef struct __attribute__((__packed__)) -{ - uint8_t signature[2]; - uint32_t file_size; - uint32_t reserved; - uint32_t img_data_offset; -} t_bmp_file_header; - -typedef struct __attribute__((__packed__)) -{ - uint32_t header_size; - uint32_t width; - uint32_t height; - uint16_t color_planes; - uint16_t depth; - uint32_t compression; - uint32_t image_size; - uint32_t horizontal_res; - uint32_t vertical_res; - uint32_t color_table_len; - uint32_t color_count; -} t_bmp_info_header; - -uint8_t *st_read_bmp(char *filepath, size_t *width, size_t *height) -{ - uint8_t *data; - t_bmp_file_header file_header; - t_bmp_info_header info_header; - int fd; - - fd = open(filepath, O_RDONLY); - read(fd, &file_header, sizeof(t_bmp_file_header)); - if (file_header.signature[0] != 'B' || file_header.signature[1] != 'M') - { - close(fd); - return (NULL); - } - read(fd, &info_header, sizeof(t_bmp_info_header)); - if ((data = malloc(info_header.image_size)) == NULL) - { - close(fd); - return (NULL); - } - *width = info_header.width; - *height = info_header.height; - read(fd, data, info_header.image_size); // padding - close(fd); - return (data); -} - -unsigned int texture_new(char *filepath) -{ - uint8_t *data; - unsigned int texture; - size_t width; - size_t height; - - if ((data = st_read_bmp(filepath, &width, &height)) == NULL) - return (0); - GL_CALL(glGenTextures(1, &texture)); - GL_CALL(glBindTexture(GL_TEXTURE_2D, texture)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data)); - /* glBindTexture(GL_TEXTURE_2D, 0); */ - free(data); - return (texture); -} +/* typedef struct __attribute__((__packed__)) */ +/* { */ +/* uint8_t signature[2]; */ +/* uint32_t file_size; */ +/* uint32_t reserved; */ +/* uint32_t img_data_offset; */ +/* } t_bmp_file_header; */ +/* */ +/* typedef struct __attribute__((__packed__)) */ +/* { */ +/* uint32_t header_size; */ +/* uint32_t width; */ +/* uint32_t height; */ +/* uint16_t color_planes; */ +/* uint16_t depth; */ +/* uint32_t compression; */ +/* uint32_t image_size; */ +/* uint32_t horizontal_res; */ +/* uint32_t vertical_res; */ +/* uint32_t color_table_len; */ +/* uint32_t color_count; */ +/* } t_bmp_info_header; */ +/* */ +/* uint8_t *st_read_bmp(char *filepath, size_t *width, size_t *height) */ +/* { */ +/* uint8_t *data; */ +/* t_bmp_file_header file_header; */ +/* t_bmp_info_header info_header; */ +/* int fd; */ +/* */ +/* fd = open(filepath, O_RDONLY); */ +/* read(fd, &file_header, sizeof(t_bmp_file_header)); */ +/* if (file_header.signature[0] != 'B' || file_header.signature[1] != 'M') */ +/* { */ +/* close(fd); */ +/* return (NULL); */ +/* } */ +/* read(fd, &info_header, sizeof(t_bmp_info_header)); */ +/* if ((data = malloc(info_header.image_size)) == NULL) */ +/* { */ +/* close(fd); */ +/* return (NULL); */ +/* } */ +/* *width = info_header.width; */ +/* *height = info_header.height; */ +/* read(fd, data, info_header.image_size); // padding */ +/* close(fd); */ +/* return (data); */ +/* } */ +/* */ +/* unsigned int texture_new(char *filepath) */ +/* { */ +/* uint8_t *data; */ +/* unsigned int texture; */ +/* size_t width; */ +/* size_t height; */ +/* */ +/* if ((data = st_read_bmp(filepath, &width, &height)) == NULL) */ +/* return (0); */ +/* GL_CALL(glGenTextures(1, &texture)); */ +/* GL_CALL(glBindTexture(GL_TEXTURE_2D, texture)); */ +/* GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); */ +/* GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); */ +/* GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); */ +/* GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); */ +/* GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data)); */ +/* free(data); */ +/* return (texture); */ +/* } */ +/* */ +/* float *texture_coord_create(float *vertices, size_t vertices_len) */ +/* { */ +/* t_ftmvec3 min; */ +/* t_ftmvec3 max; */ +/* float *coords; */ +/* size_t i; */ +/* */ +/* if ((coords = malloc(sizeof(float) * (vertices_len * 2))) == NULL) */ +/* return (NULL); */ +/* st_find_boundary(vertices, vertices_len, &min, &max); */ +/* i = 0; */ +/* while (i < vertices_len) */ +/* { */ +/* coords[i * 2 + 0] = (vertices[i * 4 + 0] - min.x) * (1.0 / (max.x - min.x)); */ +/* coords[i * 2 + 1] = (vertices[i * 4 + 1] - min.y) * (1.0 / (max.y - min.y)); */ +/* i++; */ +/* } */ +/* return (coords); */ +/* } */ -- cgit