int main(int argc, char **argv) { t_win *window; t_cam *cam; t_map *map; /* Check argv */ if (argc > 2 || argc == 1) ft_error("Too or not enough parameters in command line"); /* Init Map */ map = ft_init_map(argv[1]); /* Init Env */ window = init_env(); /* Init Camera */ cam = ft_new_camera(map->start, M_PI / 2); /* Init img */ window->img = init_img(); mlx_do_key_autorepeaton(window->mlx); mlx_hook(window->win, 2, (1L << 0), ft_key_hook, window); mlx_expose_hook(window->win, ft_expose_hook, window); ft_draw_img(); mlx_put_image_to_window(window->mlx, window->win, window->img->img, 0, 0); mlx_loop(window->mlx); /* Display view */ /* Fini ! */ return (0); }
static int fdf(t_env *e, char *win_name) { if (init_env(e, win_name) != 0) return (1); mlx_expose_hook(e->win, expose_hook, e); mlx_hook(e->win, 2, 0, key_hook, e); mlx_do_key_autorepeaton(e->mlx); mlx_loop_hook(e->mlx, loop_hook, e); mlx_loop(e->mlx); return (0); }
int MlxLib::init(void) { std::stringstream _val; /* ************** Check height and width max values ************** */ if ((_h * _sqsize) > HEIGHT_MAX) { _val << "height must be < " << (HEIGHT_MAX / _sqsize); _lerr = _val.str(); return (LIB_FAILURE); } if ((_w * _sqsize) > WIDTH_MAX) { _val << "width must be < " << (WIDTH_MAX / _sqsize); _lerr = _val.str(); return (LIB_FAILURE); } /* **************************************************************** */ if (0 == (_mlx = mlx_init())) { _lerr = "mlx_init() failed!"; return (LIB_FAILURE); } if (0 == (_win = mlx_new_window(_mlx, (_w * _sqsize), (_h * _sqsize), _wname.c_str()))) { _lerr = "window creation failed!"; return (LIB_FAILURE); } if (0 == (_img = mlx_new_image(_mlx, (_w * _sqsize), (_h * _sqsize)))) { _lerr = "image creation failed!"; return (LIB_FAILURE); } if (0 == (_data = mlx_get_data_addr(_img, &_bpp, &_szline, &_endian))) { _lerr = "unable to fetch basic data (mlx_get_data_addr() returned 0)"; return (LIB_FAILURE); } draw_walls(); mlx_do_key_autorepeaton(_mlx); return (LIB_SUCCESS); }
void *ft_mlx(void *p_data) { t_env *e; e = (t_env *)p_data; e->graph.mlx = mlx_init(); if (e->graph.mlx != NULL) e->graph.win = mlx_new_window(e->graph.mlx, WIN_SIZE_X, WIN_SIZE_Y, TITLE); if (e->graph.mlx && e->graph.win) { ft_init_img(e); e->graph.status = 1; mlx_expose_hook(e->graph.win, &expose, e); mlx_loop_hook(e->graph.mlx, &expose_loop, e); mlx_do_key_autorepeaton(e->graph.mlx); mlx_hook(e->graph.win, 2, (1L << 0), ft_button, e); mlx_loop(e->graph.mlx); } return (NULL); }
int main(void) { t_env e; int fd; t_ray ray; e = init_mlx(1000, 1022); init_env(&e); ray.origin = e.cam; fd = ft_open(); e.list = recur_list_build(fd, NULL); close(fd); fd = ft_open(); e.lights = recur_lights_build(fd, NULL); close(fd); e.ray = ray; mlx_do_key_autorepeaton(e.mlx); mlx_hook(e.win, 2, 1L << 0, key_hook, &e); mlx_expose_hook(e.win, expose_hook, &e); mlx_loop(e.mlx); return (0); }
t_display *new_display(void) { t_display *ret; ret = malloc(sizeof(*ret)); ret->conn = mlx_init(); ret->dim.w = 420; ret->dim.h = 420; ret->win = mlx_new_window(ret->conn, ret->dim.w, ret->dim.h, "fractol"); ret->g = new_graphics(ret); ret->n = 30; ret->offset[0] = -0.5f; ret->offset[1] = -0.5f; ret->zoom = 2; ret->sel = 1; ret->can_move = 1; set_key_handlers(ret); mlx_loop_hook(ret->conn, &event_loop, ret); mlx_expose_hook(ret->win, &disp_expose, ret); mlx_do_key_autorepeaton(ret->conn); return (ret); }
int wolf3d(char **argv) { t_w3d elem; elem.tab = tab; elem.x_window = 1080; elem.y_window = 768; elem.charx = 1.5; elem.chary = 1.5; if ((elem.mlx_ptr = mlx_init()) == NULL) return (0); if ((elem.win_ptr = mlx_new_window(elem.mlx_ptr, elem.x_window, elem.y_window, "Wolf 3D")) == 0) return (0); if ((elem.img_ptr = mlx_new_image(elem.mlx_ptr, elem.x_window, elem.y_window)) == 0) return (0); mlx_expose_hook(elem.win_ptr, expose_wolf3d, &elem); mlx_do_key_autorepeaton(elem.mlx_ptr); mlx_hook(elem.win_ptr, 2, (1L<<0), keyhookwolf3d, &elem); elem.x_size = elem.x_window; elem.y_size = elem.y_window/2; w3sidelines(elem); mlx_loop(elem.mlx_ptr); }
int main(void) { t_env e; t_cam cam; t_control control; cam.hauteur = 0; cam.orientation = 0; cam.direction = 0; cam.fov = 0; cam.pos_cam_x = 11; cam.pos_cam_y = 12; cam.dirX = -1; cam.dirY = 0; cam.planeX = 0; cam.planeY = 0.66; cam.test= 0; control.up = 0; control.down = 0; control.right = 0; control.left = 0; e.mlx = mlx_init(); e.win = mlx_new_window(e.mlx, WIDTH, HEIGHT, "wolf3d"); e.control = 0; int map[24][24] = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,2,2,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,3,0,0,0,3,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,0,0,0,2,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }; /* ne pas oublier de secure les malloc * ET LES FUITES MEMOIRES * */ int nrows = 24; int ncolumns = 24; int **array; array = (int**)malloc(sizeof(int*) * (nrows * ncolumns)); int i, j; i = 0; j = 0; int k; k = 0; while (i < nrows) { j = 0; array[i] = (int*)malloc(sizeof(int) * (nrows)); while (j < ncolumns) { /* ft_putnbr(i); ft_putstr(" - "); ft_putnbr(j); ft_putstr(" : "); */ array[i][j] = map[i][j]; /* ft_putnbr(map[i][j]); ft_putchar(' '); */ j++; k++; } i++; } e.map = array; i = 0; j = 0; while (i < nrows) { j = 0; while (j < ncolumns) { ft_putnbr(array[i][j]); ft_putstr(" - "); j++; } ft_putchar('\n'); i++; } int sizeline; int bbp; int endian; e.img = mlx_new_image(e.mlx, WIDTH, HEIGHT); e.data = mlx_get_data_addr(e.img, &bbp, &sizeline, &endian); e.sizeline = sizeline; e.bpp = bbp; e.color = 0xffffff; e.cam = &cam; e.control = &control; mlx_do_key_autorepeaton(e.mlx); mlx_loop_hook(e.mlx, &loop_hook, &e); mlx_key_hook(e.win, &key_release_hook, &e); mlx_hook(e.win, KEYPRESS, KEYPRESSMASK, &key_press_hook, &e); //mlx_mouse_hook(e.win, mouse_hook, &e); // fonction draw la dedans pour eviter l'expose //mlx_expose_hook(e.win, expose_hook, &e); //while (42) //cast_rays(&e); mlx_mouse_hook(e.win, mouse_hook, &e); mlx_put_image_to_window(e.mlx, e.win, e.img, 0, 0); mlx_loop(e.mlx); return (0); }
int main(int argc, char **argv) { int retour; t_data data; if ( !(argc == 2 || argc == 3)) return (-1); if (argc == 3) { retour = read_pal(&data, argv[2]); } else { data.palette = (t_palette *) malloc(sizeof(t_palette)); data.palette[0].start_color = int_to_color4(0x00FFFFFF); data.palette[0].end_color = int_to_color4(0x00FFFFFF); data.palette[0].start_range = 0; data.palette[0].end_range = 1; } if ((data.mlx_ptr = mlx_init()) == NULL) { printf("I can't open the display\n"); return (EXIT_FAILURE); } data.screen_width = 1024; data.screen_height = 768; data.canvas_width = data.screen_width - 100 - 1; data.canvas_height = data.screen_height - 2; data.back_buffer = 1; data.front_buffer = 0; data.anime = 1; if ((data.mlx_win = mlx_new_window(data.mlx_ptr, data.screen_width, data.screen_height, "MonCube")) == NULL) return (EXIT_FAILURE); retour = mlx_key_hook(data.mlx_win, my_key_on_release_funct, &data); retour = mlx_loop_hook(data.mlx_ptr, my_loop_funct, &data); retour = mlx_mouse_hook(data.mlx_win,my_mouse_on_click_funct, &data); retour = mlx_expose_hook(data.mlx_win, my_expose_funct, &data); retour = mlx_hook(data.mlx_win, KeyPress, KeyPressMask, my_key_on_maintain_funct, &data); retour = mlx_hook(data.mlx_win, MotionNotify, PointerMotionMask, my_mouse_on_move_funct, &data); retour = mlx_hook(data.mlx_win, ButtonRelease, ButtonReleaseMask, my_mouse_on_release_funct, &data); print_menu(&data); data.put_in_canvas = false; fdf_bline(&data, data.canvas_width + 1, 0, data.canvas_width + 1, data.screen_height - 1, 0x00CFCFCF); fdf_bline(&data,data.screen_width - 1, 0, data.screen_width - 1, data.screen_height - 1, 0x00CFCFCF); fdf_bline(&data, 0, 0, 0, data.screen_height - 1, 0x00CFCFCF); fdf_bline(&data, 0, data.screen_height - 1, data.screen_width - 1, data.screen_height - 1, 0x00CFCFCF); // draw_square(&data, data.canvas_width + 2, 0, data.screen_width - 2, // data.screen_height - 2, 0x00CFCFCF); data.put_in_canvas = true; data.img[data.back_buffer] = mlx_new_image(data.mlx_ptr, data.canvas_width , data.canvas_height); data.canvas[data.back_buffer] = (int *) mlx_get_data_addr( data.img[data.back_buffer], &data.bpp, &data.sizeline, &data.endian); data.img[data.front_buffer] = mlx_new_image(data.mlx_ptr, data.canvas_width , data.canvas_height); data.canvas[data.front_buffer] = (int *) mlx_get_data_addr( data.img[data.front_buffer], &data.bpp, &data.sizeline, &data.endian); start_fdf(&data, read_file(argv[1])); // print_my_cube(&data); switch_buffer(&data); mlx_put_image_to_window(data.mlx_ptr, data.mlx_win, data.img[data.front_buffer], 1, 1); if (retour == 1) return 0; retour = mlx_do_key_autorepeaton(data.mlx_ptr); mlx_loop(data.mlx_ptr); return (EXIT_SUCCESS); }