simple Graphical Interface Library for students.
gcc -lmlx -framwork OpenGL -framework Appkit [file]
Minilibx는 X-Window / Cocoa 프로그래밍 지식 없이 그래픽 소프트웨어를 만들기 쉬운 방법중 하나이고, 간단한 창 만들기, 그리기 툴, 이미지 그리고 기본적인 이벤트 관리를 제공한다.
#include <mlx.h>
void *mlx_init();
#include <mlx.h>
void *
mlx_new_window (void *mlx_ptr, int size_x, int size_y, char *title);
int
mlx_clear_window (void *mlx_ptr, void *win_ptr);
int
mlx_destroy_window (void *mlx_ptr, void *win_ptr);
mlx_new_window
mlx_clear_window, mlx_destroy_window
#include <mlx.h>
int
mlx_loop (void *mlx_ptr);
int
mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
int
mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
int
mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
X-window 와 MacOSX 그래픽 시스템은 양방향이다. 한쪽으로는 pixels, images 와 같은 것들을 보여주기 위한 명령을 screen에 보내지만, 다른 한편으로는 화면에 관련된 키보드나 마우스 정보들을 가져온다. 그렇게 하기 위해서 program은 events를 키보드와 마우스에서 받아온다.
mlx_loop
mlx_key_hook, mlx_mouse_hook, mlx_loop_hook
#include <mlx.h>
void *
mlx_new_image (void *mlx_ptr, int width, int height)
char *
mlx_get_data_addr (void *img_ptr, int *bits_per_pixel, int *size_line, int *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)
void *
mlx_xpm_to_image (void *mlx_ptr, char **xpm_data, int *width, int *height)
int
mlx_destroy_image(void *mlx_ptr, void *img_ptr)
mlx_new_image
mlx_put_image_to_window
mlx_get_data_addr
mlx_destroy_image
mlx_get_color
int
mlx_pixel_put (void *mlx_ptr, void *win_ptr, int x, int y, int color);
int
mlx_string_put (void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string);
mlx_pixel_put
mlx_string_put
위의 매개변수와 동일하다.
간단한 픽셀 대신에, 지정된 string이 (x, y)에 표시된다.
두개의 함수 모두, 지정된 window 밖에 어떤것도 표시할 수 없고, 선택된 window 이외에 다른 window에 나타낼 수 없다.
color매개변수는 정수 타입이다. 모든 표시 가능한 색은 red, green, blue로 이루어져있다. 0 ~ 255 까지의 범위를 가지며, 색을 나타내기 위해서 각각의 요소가 얼마나 섞였는지를 나타낸다.
endian 문제를 고려할 것. blue bytes가 항상 LSB여야 한다.
| 0 | R | G | B | color integer
+---+---+---+---+