References
Base header types
mlx_context
Opaque handle that represents the MLX context.
MLX_DEFINE_HANDLE(mlx_context);mlx_window
Opaque handle that represents a MLX window.
MLX_DEFINE_HANDLE(mlx_window);mlx_image
Opaque handle that represents a MLX image.
MLX_DEFINE_HANDLE(mlx_image);mlx_color
Union representing RGBA color with access to each part as bytes.
typedef union mlx_color{ struct { #if MLX_BYTEORDER == MLX_LITTLE_ENDIAN uint8_t a; uint8_t b; uint8_t g; uint8_t r; #else uint8_t r; uint8_t g; uint8_t b; uint8_t a; #endif }; uint32_t rgba;} mlx_color;mlx_window_create_info
Descriptor structure for window creation
Note: if a valid mlx_image is passed as render_target, this window will not be a real system window
and will rather act as a gate to use any draw function to draw directly on an image.
Ex: you could use mlx_string_put or mlx_pixel_put to draw on a given image and then use this image
with mlx_put_image_to_window to render it on a real window.
typedef struct mlx_window_create_info{ mlx_image render_target; const char* title; int width; int height; bool is_fullscreen; bool is_resizable;} mlx_window_create_info;mlx_event_type
Type of event.
typedef enum mlx_event_type{ MLX_KEYDOWN = 0, MLX_KEYUP = 1, MLX_MOUSEDOWN = 2, MLX_MOUSEUP = 3, MLX_MOUSEWHEEL = 4, MLX_WINDOW_EVENT = 5} mlx_event_type;Base header prototypes
mlx_init()
Initializes the MLX internal application
Returns an opaque handler to the internal MLX application or MLX_NULL_HANDLE (0x0) in case of error
// PrototypeMLX_API mlx_context mlx_init();mlx_set_fps_goal()
Set a maximum number of FPS that MacroLibX cannot exceed
- param
mlx: Internal MLX application - param
fps: The FPS cap
// PrototypeMLX_API void mlx_set_fps_goal(mlx_context mlx, int fps);mlx_destroy_context()
Destroys internal MLX application
- param
mlx: Internal MLX application
// PrototypeMLX_API void mlx_destroy_context(mlx_context mlx);mlx_new_window()
Creates a new window
- param
mlx: Internal MLX application - param
info: Pointer to a descriptor structure
Returns an opaque handler to the internal MLX window or MLX_NULL_HANDLE (0x0) in case of error
// PrototypeMLX_API mlx_window mlx_new_window(mlx_context mlx, const mlx_window_create_info* info);mlx_destroy_window()
Destroys internal window
- param
mlx: Internal MLX application - param
win: Internal window
// PrototypeMLX_API void mlx_destroy_window(mlx_context mlx, mlx_window win);mlx_set_window_position()
Sets window position
- param
mlx: Internal MLX application - param
win: Internal window to move - param
x: New x position - param
y: New y position
// PrototypeMLX_API void mlx_set_window_position(mlx_context mlx, mlx_window win, int x, int y);mlx_set_window_size()
Sets window size
- param
mlx: Internal MLX application - param
win: Internal window to move - param
width: New width - param
height: New height
// PrototypeMLX_API void mlx_set_window_size(mlx_context mlx, mlx_window win, int width, int height);mlx_set_window_title()
Sets window title
- param
mlx: Internal MLX application - param
win: Internal window to move - param
title: New title
// PrototypeMLX_API void mlx_set_window_title(mlx_context mlx, mlx_window win, const char* title);mlx_set_window_fullscreen()
Enables/Disables window fullscreen mode
- param
mlx: Internal MLX application - param
win: Internal window to move - param
enable: Switch or not to fullscreen
// PrototypeMLX_API void mlx_set_window_fullscreen(mlx_context mlx, mlx_window win, bool enable);mlx_get_window_position()
Gets window position
- param
mlx: Internal MLX application - param
win: Internal window to move - param
x: Pointers to get position of the window - param
y: Pointers to get position of the window
// PrototypeMLX_API void mlx_get_window_position(mlx_context mlx, mlx_window win, int* x, int* y);mlx_get_window_size()
Gets window size
- param
mlx: Internal MLX application - param
win: Internal window to move - param
x: Pointers to get size of the window - param
y: Pointers to get size of the window
// PrototypeMLX_API void mlx_get_window_size(mlx_context mlx, mlx_window win, int* x, int* y);mlx_clear_window()
Clears the given window (resets all rendered data)
- param
mlx: Internal MLX application - param
win: Internal window
// PrototypeMLX_API void mlx_clear_window(mlx_context mlx, mlx_window win, mlx_color color);mlx_get_screen_size()
Get the size of the screen the given window is on
- param
mlx: Internal MLX application - param
win: Internal window to choose screen the window is on - param
w: Get width size - param
h: Get height size
// PrototypeMLX_API void mlx_get_screen_size(mlx_context mlx, mlx_window win, int* w, int* h);mlx_add_loop_hook()
Gives another function to be executed at each loop turn
- param
mlx: Internal MLX application - param
f: The function - param
param: Param to give to the function passed
// PrototypeMLX_API void mlx_add_loop_hook(mlx_context mlx, void(*f)(void*), void* param);mlx_loop()
Starts the internal main loop
- param
mlx: Internal MLX application
// PrototypeMLX_API void mlx_loop(mlx_context mlx);mlx_loop_end()
Ends the internal run loop
- param
mlx: Internal MLX application
// PrototypeMLX_API void mlx_loop_end(mlx_context mlx);mlx_mouse_show()
Shows mouse cursor
- param
mlx: Internal MLX application
// PrototypeMLX_API void mlx_mouse_show(mlx_context mlx);mlx_mouse_hide()
Hides mouse cursor
- param
mlx: Internal MLX application
// PrototypeMLX_API void mlx_mouse_hide(mlx_context mlx);mlx_mouse_move()
Moves cursor to givent position
- param
mlx: Internal MLX application - param
win: Internal window from which cursor moves - param
x: X coordinate - param
y: Y coordinate
// PrototypeMLX_API void mlx_mouse_move(mlx_context mlx, mlx_window win, int x, int y);mlx_mouse_get_pos()
Get cursor’s position
- param
mlx: Internal MLX application - param
x: Get x coordinate - param
y: Get y coordinate
// PrototypeMLX_API void mlx_mouse_get_pos(mlx_context mlx, int* x, int* y);mlx_on_event()
Gives a function to be executed on event type, does not override previous functions
- param
mlx: Internal MLX application - param
win: Internal window - param
event: Event type (see union on top of this file) - param
f: Function to be executed - param
param: Parameter given to the function
// PrototypeMLX_API void mlx_on_event(mlx_context mlx, mlx_window win, mlx_event_type event, void(*f)(int, void*), void* param);mlx_pixel_put()
Put a pixel in the window
- param
mlx: Internal MLX application - param
win: Internal window - param
x: X coordinate - param
y: Y coordinate - param
color: Color of the pixel
// PrototypeMLX_API void mlx_pixel_put(mlx_context mlx, mlx_window win, int x, int y, mlx_color color);mlx_new_image()
Create a new empty image
- param
mlx: Internal MLX application - param
width: Width of the image - param
height: Height of the image
Returns an opaque handler to the internal image or MLX_NULL_HANDLE (0x0) in case of error
// PrototypeMLX_API mlx_image mlx_new_image(mlx_context mlx, int width, int height);mlx_new_image_from_file()
Create a new image from a png/jpg/bmp file
- param
mlx: Internal MLX application - param
filename: Path to the png file - param
width: Get the width of the image - param
heigth: Get the height of the image
Returns an opaque handler to the internal image or MLX_NULL_HANDLE (0x0) in case of error
// PrototypeMLX_API mlx_image mlx_new_image_from_file(mlx_context mlx, char* filename, int* width, int* height);mlx_destroy_image()
Destroys internal image
- param
mlx: Internal MLX application - param
img: Internal image
// PrototypeMLX_API void mlx_destroy_image(mlx_context mlx, mlx_image image);mlx_get_image_pixel()
Get image pixel data
- param
mlx: Internal MLX application - param
img: Internal image - param
x: X coordinate in the image - param
y: Y coordinate in the image
Returns the pixel data
// PrototypeMLX_API mlx_color mlx_get_image_pixel(mlx_context mlx, mlx_image image, int x, int y);mlx_set_image_pixel()
Set image pixel data
- param
mlx: Internal MLX application - param
img: Internal image - param
x: X coordinate in the image - param
y: Y coordinate in the image - param
color: Color of the pixel to set
// PrototypeMLX_API void mlx_set_image_pixel(mlx_context mlx, mlx_image image, int x, int y, mlx_color color);mlx_put_image_to_window()
Put image to the given window
- param
mlx: Internal MLX application - param
win: Internal window - param
img: Internal image - param
x: X coordinate - param
y: Y coordinate
// PrototypeMLX_API void mlx_put_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y);mlx_string_put()
Put text in given window
- param
mlx: Internal MLX application - param
win: Internal window - param
x: X coordinate - param
y: Y coordinate - param
color: Color of the pixel - param
str: Text to put
// PrototypeMLX_API void mlx_string_put(mlx_context mlx, mlx_window win, int x, int y, mlx_color color, char* str);mlx_set_font()
Loads a font to be used by mlx_string_put
- param
mlx: Internal MLX application - param
win: Internal window - param
filepath: Filepath to the font or “default” to reset to the embedded font
// PrototypeMLX_API void mlx_set_font(mlx_context mlx, char* filepath);mlx_set_font_scale()
Loads a font to be used by mlx_string_put and scales it
- param
mlx: Internal MLX application - param
win: Internal window - param
filepath: Filepath to the font or “default” to reset to the embedded font - param
scale: Scale to apply to the font
// PrototypeMLX_API void mlx_set_font_scale(mlx_context mlx, char* filepath, float scale);Extended header prototypes
mlx_set_window_max_size()
Sets maximum window size
- param
mlx: Internal MLX application - param
win: Internal window to move - param
x: New x maximum size - param
y: New y maximum size
// PrototypeMLX_API void mlx_set_window_max_size(mlx_context mlx, mlx_window win, int x, int y);mlx_set_window_min_size()
Sets minimum window size
- param
mlx: Internal MLX application - param
win: Internal window to move - param
x: New x minimum size - param
y: New y minimum size
// PrototypeMLX_API void mlx_set_window_min_size(mlx_context mlx, mlx_window win, int x, int y);mlx_maximise_window()
Maximizes a window
- param
mlx: Internal MLX application - param
win: Internal window to move
// PrototypeMLX_API void mlx_maximise_window(mlx_context mlx, mlx_window win);mlx_minimize_window()
Minimizes a window
- param
mlx: Internal MLX application - param
win: Internal window to move
// PrototypeMLX_API void mlx_minimize_window(mlx_context mlx, mlx_window win);mlx_restore_window()
Restore window to formal size
- param
mlx: Internal MLX application - param
win: Internal window to move
// PrototypeMLX_API void mlx_restore_window(mlx_context mlx, mlx_window win);mlx_pixel_put_array()
Put an array of pixels in the window
- param
mlx: Internal MLX application - param
win: Internal window - param
x: X coordinate - param
y: Y coordinate - param
pixels: Array of pixels - param
pixels_number: Number of pixels
// PrototypeMLX_API void mlx_pixel_put_array(mlx_context mlx, mlx_window win, int x, int y, mlx_color* pixels, size_t pixels_number);mlx_pixel_put_region()
Put a region of pixels in the window
- param
mlx: Internal MLX application - param
win: Internal window - param
x: X coordinate - param
y: Y coordinate - param
w: Width - param
h: Height - param
pixels: Array of pixels
Note: it is responsability of the user to make sure the size of pixels is
big enough for the given region.
// PrototypeMLX_API void mlx_pixel_put_region(mlx_context mlx, mlx_window win, int x, int y, int w, int h, mlx_color* pixels);mlx_get_image_region()
Get image region
- param
mlx: Internal MLX application - param
img: Internal image - param
x: X coordinate in the image - param
y: Y coordinate in the image - param
w: Width of the region - param
y: Height of the region - param
dst: Array of pixels to copy to
Note: it is responsability of the user to make sure the size of dst is
big enough for the given region.
// PrototypeMLX_API void mlx_get_image_region(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color* dst);mlx_set_image_region()
Set image region
- param
mlx: Internal MLX application - param
img: Internal image - param
x: X coordinate in the image - param
y: Y coordinate in the image - param
w: Width of the region - param
h: Height of the region - param
pixels: Array of pixels to copy from
Note: it is responsability of the user to make sure the size of pixels is
big enough for the given region.
// PrototypeMLX_API void mlx_set_image_region(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color* pixels);mlx_put_transformed_image_to_window()
Transform and put image to the given window
- param
mlx: Internal MLX application - param
win: Internal window - param
img: Internal image - param
x: X coordinate - param
y: Y coordinate - param
scale_x: Scale x of the image - param
scale_y: Scale y of the image - param
angle: Rotation angle of the image (clockwise)
// PrototypeMLX_API void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y, float scale_x, float scale_y, float angle);mlx_get_proc_addr()
Get direct pointers to hidden functions
- param
mlx: Internal MLX application
Returns a function pointer or NULL (0x0) in case of error
// PrototypeMLX_API mlx_function mlx_get_proc_addr(mlx_context mlx, const char* name);