54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
/**
|
|
* mlx_window.c
|
|
* for the project "MinilibX for 3DS"
|
|
* by Zy
|
|
* at https://github.com/frzysk/mlx3ds
|
|
*/
|
|
|
|
#include "mlx_window.h"
|
|
|
|
#include "3ds.h"
|
|
#include "mlx_internal.h"
|
|
#include <stdlib.h>
|
|
#include <strings.h>
|
|
|
|
t_win mlx_new_window(t_mlx mlx_ptr, int size_x, int size_y, const char *title)
|
|
{
|
|
t_internal_win *r;
|
|
|
|
(void)title;
|
|
if (size_x > GSP_SCREEN_HEIGHT_TOP || size_y > GSP_SCREEN_WIDTH)
|
|
mlx3ds_internal_fatalerror("Window too big for the screen");
|
|
r = malloc(sizeof(t_internal_win));
|
|
if (!r)
|
|
return (NULL);
|
|
bzero(r, sizeof(t_internal_win));
|
|
r->mlx = mlx_ptr;
|
|
r->mlx->top_window = r;
|
|
r->width = size_x;
|
|
r->height = size_y;
|
|
return (r);
|
|
}
|
|
|
|
int mlx_clear_window(t_mlx mlx_ptr, t_win win_ptr)
|
|
{
|
|
u8 *frame_i;
|
|
u8 *frame;
|
|
|
|
mlx3ds_internal_drawstart(mlx_ptr, win_ptr);
|
|
frame = ((t_internal_win *)win_ptr)->framebuffer;
|
|
frame_i = frame
|
|
+ 3 * ((t_internal_win *)win_ptr)->framebuffer_width
|
|
* ((t_internal_win *)win_ptr)->framebuffer_height;
|
|
while (--frame_i >= frame)
|
|
*frame_i = 0x00;
|
|
mlx3ds_internal_drawend(mlx_ptr, win_ptr);
|
|
return (0);
|
|
}
|
|
|
|
int mlx_destroy_window(t_mlx mlx_ptr, t_win win_ptr)
|
|
{
|
|
((t_internal_mlx *)mlx_ptr)->top_window = NULL;
|
|
free(win_ptr);
|
|
return (0);
|
|
}
|