Files
MacroLibX/includes/mlx_extended.h

172 lines
5.4 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* mlx_extended.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: maldavid <contact@kbz8.me> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/12/14 16:17:10 by maldavid #+# #+# */
/* Updated: 2025/10/22 16:59:38 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
// MacroLibX official repo https://github.com/seekrs/MacroLibX
// MacroLibX official website https://macrolibx.kbz8.me/
#ifndef MACROLIB_X_EXTENDED_H
#define MACROLIB_X_EXTENDED_H
#include "mlx.h"
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Window related functions */
/**
* @brief 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
*/
MLX_API void mlx_set_window_max_size(mlx_context mlx, mlx_window win, int x, int y);
/**
* @brief 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
*/
MLX_API void mlx_set_window_min_size(mlx_context mlx, mlx_window win, int x, int y);
/**
* @brief Maximizes a window
*
* @param mlx Internal MLX application
* @param win Internal window to move
*/
MLX_API void mlx_maximise_window(mlx_context mlx, mlx_window win);
/**
* @brief Minimizes a window
*
* @param mlx Internal MLX application
* @param win Internal window to move
*/
MLX_API void mlx_minimize_window(mlx_context mlx, mlx_window win);
/**
* @brief Restore window to formal size
*
* @param mlx Internal MLX application
* @param win Internal window to move
*/
MLX_API void mlx_restore_window(mlx_context mlx, mlx_window win);
/* Pixels drawing related functions */
/**
* @brief 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
*/
MLX_API void mlx_pixel_put_array(mlx_context mlx, mlx_window win, int x, int y, mlx_color* pixels, size_t pixels_number);
/**
* @brief 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.
*/
MLX_API void mlx_pixel_put_region(mlx_context mlx, mlx_window win, int x, int y, int w, int h, mlx_color* pixels);
/* Images related functions */
/**
* @brief 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.
*/
MLX_API void mlx_get_image_region(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color* dst);
/**
* @brief 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 y 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.
*/
MLX_API void mlx_set_image_region(mlx_context mlx, mlx_image image, int x, int y, int w, int h, mlx_color* pixels);
/**
* @brief 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)
*/
MLX_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);
/**
* @brief Get direct pointers to hidden functions
*
* @param mlx Internal MLX application
*
* @return (mlx_function) A function pointer or NULL (0x0) in case of error
*/
MLX_API mlx_function mlx_get_proc_addr(mlx_context mlx, const char* name);
#ifdef __cplusplus
}
#endif
#endif