diff options
author | Rudy Bousset <rbousset@z2r4p3.le-101.fr> | 2020-02-09 14:31:57 +0100 |
---|---|---|
committer | Rudy Bousset <rbousset@z2r4p3.le-101.fr> | 2020-02-09 14:31:57 +0100 |
commit | 4fa8a129e6ecfa168604568673cfbdaa2c8e34b0 (patch) | |
tree | 6e97965f1a32c007533eadb15becb4b9405867ea /libmlx/mlx_new_image.m | |
parent | Reverted map to normal size (diff) | |
download | 42-cub3d-4fa8a129e6ecfa168604568673cfbdaa2c8e34b0.tar.gz 42-cub3d-4fa8a129e6ecfa168604568673cfbdaa2c8e34b0.tar.bz2 42-cub3d-4fa8a129e6ecfa168604568673cfbdaa2c8e34b0.tar.xz 42-cub3d-4fa8a129e6ecfa168604568673cfbdaa2c8e34b0.tar.zst 42-cub3d-4fa8a129e6ecfa168604568673cfbdaa2c8e34b0.zip |
Renamed minilibx
Diffstat (limited to 'libmlx/mlx_new_image.m')
-rw-r--r-- | libmlx/mlx_new_image.m | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/libmlx/mlx_new_image.m b/libmlx/mlx_new_image.m deleted file mode 100644 index 46e1df1..0000000 --- a/libmlx/mlx_new_image.m +++ /dev/null @@ -1,198 +0,0 @@ -// mlx_new_image -// -// by Ol -// - - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> - -#include "mlx_int.h" -#include "mlx_new_window.h" - - - -void *mlx_new_image(mlx_ptr_t *mlx_ptr, int width, int height) -{ - mlx_img_list_t *newimg; - - // if (mlx_ptr->win_list == NULL) - // return (NULL); // need at leat one window created to have openGL context and create texture - if ((newimg = malloc(sizeof(*newimg))) == NULL) - return ((void *)0); - newimg->next = mlx_ptr->img_list; - mlx_ptr->img_list = newimg; - newimg->width = width; - newimg->height = height; - newimg->vertexes[0] = 0.0; newimg->vertexes[1] = 0.0; - newimg->vertexes[2] = width; newimg->vertexes[3] = 0.0; - newimg->vertexes[4] = width; newimg->vertexes[5] = -height; - newimg->vertexes[6] = 0.0; newimg->vertexes[7] = -height; - newimg->buffer = malloc(UNIQ_BPP*width*height); - bzero(newimg->buffer, UNIQ_BPP*width*height); - - return (newimg); -} - -mlx_img_ctx_t *add_img_to_ctx(mlx_img_list_t *img, mlx_win_list_t *win) -{ - mlx_img_ctx_t *imgctx; - - imgctx = win->img_list; - while (imgctx) - { - if (imgctx->img == img) - return (imgctx); - imgctx = imgctx->next; - } - - imgctx = malloc(sizeof(*imgctx)); - imgctx->img = img; - imgctx->next = win->img_list; - win->img_list = imgctx; - - glGenTextures(1, &(imgctx->texture)); - glBindTexture(GL_TEXTURE_2D, imgctx->texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexImage2D( - GL_TEXTURE_2D, 0, /* target, level of detail */ - GL_RGBA8, /* internal format */ - img->width, img->height, 0, /* width, height, border */ - GL_BGRA, GL_UNSIGNED_BYTE, /* external format, type */ - img->buffer /* pixels */ - ); - - glGenBuffers(1, &(imgctx->vbuffer)); - glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer); - glBufferData(GL_ARRAY_BUFFER, sizeof(img->vertexes), img->vertexes, GL_DYNAMIC_DRAW); // 4 points buff - - return (imgctx); -} - - -void mlx_put_image_to_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, mlx_img_list_t *img_ptr, int x, int y) -{ - mlx_img_ctx_t *imgctx; - - if (!win_ptr->pixmgt) - return ; - - [(id)(win_ptr->winid) selectGLContext]; - imgctx = add_img_to_ctx(img_ptr, win_ptr); - - // update texture - glBindTexture(GL_TEXTURE_2D, imgctx->texture); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img_ptr->width, img_ptr->height, 0, - GL_BGRA, GL_UNSIGNED_BYTE, img_ptr->buffer); - - [(id)(win_ptr->winid) mlx_gl_draw_img:img_ptr andCtx:imgctx andX:x andY:y]; - - win_ptr->nb_flush ++; -} - -// assume here 32bpp little endian - -char *mlx_get_data_addr(mlx_img_list_t *img_ptr, int *bits_per_pixel, int *size_line, int *endian) -{ - *bits_per_pixel = UNIQ_BPP*8; - *size_line = img_ptr->width*UNIQ_BPP; - *endian = 0; // little endian for now on mac-intel - return (img_ptr->buffer); -} - -unsigned int mlx_get_color_value(mlx_ptr_t *mlx_ptr, int color) -{ - return (color); -} - -int mlx_string_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color, unsigned char *string) -{ - mlx_img_ctx_t *imgctx; - int gX; - int gY; - - if (!win_ptr->pixmgt) - return(0); - -#ifdef STRINGPUTX11 - y -= (FONT_HEIGHT * 2)/3; -#endif - - [(id)(win_ptr->winid) selectGLContext]; - - imgctx = add_img_to_ctx(mlx_ptr->font, win_ptr); - - while (*string) - { - if (*string >= 32 && *string <= 127) - { - gX = (FONT_WIDTH+2)*(*string-32); - gY = 0; - // printf("put char %c pos %d %d\n", *string, gX, gY); - [(id)(win_ptr->winid) mlx_gl_draw_font:mlx_ptr->font andCtx:imgctx andX:x andY:y andColor:color glyphX:gX glyphY:gY]; -#ifdef STRINGPUTX11 - x += FONT_WIDTH/1.4; -#else - x += FONT_WIDTH; -#endif - } - string ++; - } - - win_ptr->nb_flush ++; - - return (0); -} - -int mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_todel) -{ - mlx_img_ctx_t ctx_first; - mlx_img_ctx_t *ctx; - mlx_img_ctx_t *ctx_to_del; - mlx_img_list_t img_first; - mlx_img_list_t *img; - mlx_win_list_t *win; - - img_first.next = mlx_ptr->img_list; - img = &img_first; - while (img && img->next) - { - if (img->next == img_todel) - img->next = img->next->next; - img = img->next; - } - mlx_ptr->img_list = img_first.next; - - - win = mlx_ptr->win_list; - while (win) - { - ctx_first.next = win->img_list; - ctx = &ctx_first; - while (ctx && ctx->next) - { - if (ctx->next->img == img_todel) - { - [(id)(win->winid) selectGLContext]; - glDeleteBuffers(1, &(ctx->next->vbuffer)); - glDeleteTextures(1, &(ctx->next->texture)); - ctx_to_del = ctx->next; - ctx->next = ctx->next->next; - free(ctx_to_del); - } - ctx = ctx->next; - } - win->img_list = ctx_first.next; - win = win->next; - } - - - free(img_todel->buffer); - free(img_todel); - - // printf("destroy image done.\n"); - return (0); -} |