aboutsummaryrefslogtreecommitdiffstats
path: root/minilibx_beta/mlx.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--minilibx_beta/mlx.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/minilibx_beta/mlx.h b/minilibx_beta/mlx.h
new file mode 100644
index 0000000..f24a7f7
--- /dev/null
+++ b/minilibx_beta/mlx.h
@@ -0,0 +1,157 @@
+/*
+** mlx.h for MinilibX in
+**
+** Made by Charlie Root
+** Login <ol@42.fr>
+**
+** Started on Mon Jul 31 16:37:50 2000 Charlie Root
+** Last update Tue Oct 14 16:23:28 2019 Olivier Crouzet
+*/
+
+/*
+** MinilibX - Please report bugs
+*/
+
+
+/*
+**
+** This library is a simple framework to help 42 students
+** create simple graphical apps.
+** It only provides the minimum functions, it's students' job
+** to create the missing pieces for their own project :)
+**
+** The MinilibX can load XPM and PNG images.
+** Please note that both image loaders are incomplete, some
+** image may not load.
+**
+** For historical reasons, the alpha byte represent transparency
+** instead of opacity.
+** Also, for compatibility reasons, prototypes may show inconsistant
+** types.
+**
+** Only the dynamic library is available. It must be placed in an appropriate path.
+** ./ is one of them. You can also use DYLD_LIBRARY_PATH
+**
+*/
+
+
+#ifndef MLX_H
+
+#define MLX_H
+
+
+void *mlx_init();
+/*
+** needed before everything else.
+** return (void *)0 if failed
+*/
+
+
+/*
+** Basic actions
+*/
+
+void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);
+/*
+** return void *0 if failed
+*/
+int mlx_clear_window(void *mlx_ptr, void *win_ptr);
+int mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
+/*
+** origin for x & y is top left corner of the window
+** y down is positive
+** color is 0xAARRGGBB format
+** x and y must fit into the size of the window, no control is done on the values
+*/
+
+
+/*
+** Image stuff
+*/
+
+void *mlx_new_image(void *mlx_ptr,int width,int height);
+/*
+** return void *0 if failed
+*/
+char *mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
+ int *size_line, int *endian);
+/*
+** endian : 0 = graphical sever is little endian, 1 = big endian
+** usefull in a network environment where graphical app show on a remote monitor that can have a different endian
+*/
+int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
+ int x, int y);
+unsigned int mlx_get_color_value(void *mlx_ptr, int color);
+
+
+/*
+** dealing with Events
+*/
+
+int mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+
+int mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
+int mlx_loop (void *mlx_ptr);
+
+
+/*
+** hook funct are called as follow :
+**
+** expose_hook(void *param);
+** key_hook(int keycode, void *param);
+** mouse_hook(int button, int x,int y, void *param);
+** loop_hook(void *param);
+**
+*/
+
+
+/*
+** Usually asked...
+** mlx_string_put display may vary in size between OS and between mlx implementations
+*/
+
+int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color,
+ char *string);
+void *mlx_xpm_to_image(void *mlx_ptr, char **xpm_data,
+ int *width, int *height);
+void *mlx_xpm_file_to_image(void *mlx_ptr, char *filename,
+ int *width, int *height);
+void *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height);
+
+int mlx_destroy_window(void *mlx_ptr, void *win_ptr);
+
+int mlx_destroy_image(void *mlx_ptr, void *img_ptr);
+
+/*
+** generic hook system for all events, and minilibX functions that
+** can be hooked. Some macro and defines from X11/X.h are needed here.
+*/
+
+int mlx_hook(void *win_ptr, int x_event, int x_mask,
+ int (*funct)(), void *param);
+
+int mlx_mouse_hide();
+int mlx_mouse_show();
+int mlx_mouse_move(void *win_ptr, int x, int y);
+int mlx_mouse_get_pos(void *win_ptr, int *x, int *y);
+
+int mlx_do_key_autorepeatoff(void *mlx_ptr);
+int mlx_do_key_autorepeaton(void *mlx_ptr);
+int mlx_do_sync(void *mlx_ptr);
+
+#define MLX_SYNC_IMAGE_WRITABLE 1
+#define MLX_SYNC_WIN_FLUSH_CMD 2
+#define MLX_SYNC_WIN_CMD_COMPLETED 3
+int mlx_sync(int cmd, void *param);
+/*
+** image_writable can loop forever if no flush occurred. Flush is always done by mlx_loop.
+** cmd_completed first flush then wait for completion.
+** mlx_do_sync equals cmd_completed for all windows.
+** cmd is one of the define, param will be img_ptr or win_ptr accordingly
+*/
+
+int mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey);
+
+#endif /* MLX_H */