https://harm-smits.github.io/42docs/libs/minilibx/prototypes.html#initialization-functions
이 분의 정리를 제 나름대로 번역...이라기보다는 독해했습니다....
# MiniLibX
X-Window, Cocoa 프로그래밍 지식없이, 그래픽 소프트웨어를 생성할 수 있는 쉬운 방법으로 간단한 윈도우 상성, 드로잉 툴, 이미지, 기본 이벤트 관리를 제공한다.
- MiniLibX의 API를 올바르게 사용하기 위해서는 mlx.h를 인클루드해야한다.
- mlx.h는 함수들의 프로토타입만을 포함하고 있다.
MiniLibX is a tiny graphics library which allows you to do the most basic things for rendering something. This can vary from making a copy of Wolfenstein, to presenting complicated data in a simple form.
It is truly recommended to catch up on bitwise operands if you have no clue what they are.
MiniLibX는 렌더링을 위한 가장 기본적인 작업을 수행할 수 있는 작은 그래픽 라이브러리입니다. 이것은 Wolfenstein의 복사본을 만드는 것부터 복잡한 데이터를 간단한 형식으로 표시하는 것까지 다양할 수 있습니다.
비트 피연산자가 무엇인지 모를 경우 비트 단위 피연산자를 따라잡는 것이 좋습니다.
# OpenGL , Open Graphics Library
실리콘 그래픽스사에서 만든 2차원 및 3차원 그래픽스 표쥰 API 규격으로, 프로그래밍 언어 간 플랫폼 간의 교차 응용 프로그래밍을 지원
- 약 250여개의 함수 호출을 이용하여 단순한 기하도형부터 복잡한 3차원 장면을 생성할 수 있다.
# mlx.h
Initialization function
MiniLibX 사용을 시작할 때 거의 항상 필요한 표준 기능
- mlx_init()
void *mlx_init();
- mlx_new_window
void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);
새 윈도우 창을 생성한다. 윈도우 창의 인스턴스 포인터를 반환하며, 나중에 참조할 수 있도록 저장해야한다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- int size_x : 윈도우 창 너비
- int size_y : 윈도우 창 높이
- char *title : 윈도우 창 이름
+ 반환
- void * : 윈도우 창의 인스턴스 포인터
- mlx_clear_window
int mlx_clear_window(void *mlx_ptr, void *win_ptr);
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *win_ptr : 윈도우 창 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
- mlx_destroy_window
int mlx_destroy_window(void *mlx_ptr, void *win_ptr);
윈도우창 인스턴스를 삭제한다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *win_ptr : 윈도우 창 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
- mlx 창을 띄우고 나서 종료를 할 때는 이 함수를 사용하고 종료를 해야 메모리 누수가 발생하지 않는다.
Util function
conversions(변환)이나 pixel writing(픽셀 쓰기)를 할 때 사용하는 함수
- mlx_get_color_value
unsigned int mlx_get_color_value(void *mlx_ptr, int color);
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- int color : 헥스코드(?)로 된 색상값
+ 반환
- uint : 변환된 색상.
- mlx_pixel_put
int mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int x : 그릴 픽셀의 좌표
- int y : 그릴 픽셀의 좌표
- int color : 픽셀에 그릴 색상
+ 반환
- int : 반환값이 없다.
- mlx_string_put
int mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, char *string);
주어진 윈도우 창 안의 위치에 문자열을 넣는다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int x : 그릴 픽셀의 좌표
- int y : 그릴 픽셀의 좌표
- int color : 글자 색상
- char *string : 쓰려는 내용(문자열)
+ 반환
- int : 반환값이 없다.
Image function
이미지 객체 관련 함수.
프레임을 하나씩 변경하는 효과적인 방법을 제공한다.
- mlx_new_image
void *mlx_new_image(void *mlx_ptr,int width,int height);
새 MLX 호환이미지를 생성한다. 렌더링 중인 이미지를 버퍼링하는데 권장하는 방법이다.
MLX 인스턴스 포인터를 허용하고, 너비와 높이를 필요로 한다.
이미지 참조 포인터를 반환한다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- int width : 그릴 픽셀의 좌표
- int height : 그릴 픽셀의 좌표
+ 반환
- int : 반환값이 없다.
- mlx_get_data_addr
char *mlx_get_data_addr(void *img_ptr, int *bits_per_pixel, int *size_line, int *endian);
Gets the memory address of the given image.
주어진 이미지의 메모리 주소를 가져온다.
Memory of images is weird.
이미지의 메모리는 이상하다.
It will set the line size in your given pointer.
주어진 포인터의 라인 사이즈를 설정한다.
To get or set the value of the pixel (5, 100) in an image size of (500, 500), we would need to locate the position as follows:
(500,500)의 이미지 사이즈에서 픽셀 (5,100) 값을 가져오거나 설정하려면 다음과 같이 위치를 찾아야한다.
int pos = (y * size_line + x * (bits_per_pixel / 8));
Here we multiply size_line by y as we need to skip y lines (and yes, line size is not equal to the amount of pixels in a line).
여기서 size_line에 y를 곱하면 y 라인들을 건너뛸 수 있다(라인의 크기는 라인의 픽셀 양과 동일하지 않다).
We then add the remaining x units multiplied by bits_per_pixel / 8 to align with the final location.
그런 다음 나머지 x 단위에 bits_per_pixel/8을 곱하여 최종 위치에 정렬한다.
To modify each pixel with the correct color, we need to do some more fancy stuff. As we need to align the bits before writing, we need to do the following for the best result:
각각의 픽셀을 정확한 색으로 수정하기 위해서, 쓰기 전에 비트를 정렬해야 하므로 최상의 결과를 위해 다음 작업을 수행힌다.
char *mlx_data_addr = mlx_get_data_addr();
*(unsigned int *)mlx_data_addr = color;
+ 파라미터
- void *img_ptr :
- int *bits_per_pixel :
- int *size_line :
- int *endian :
+ 반환
- int : 반환값이 없다.
- mlx_put_image_to_window
int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y);
Puts an image to the given window instance at location (x,y). This is the recommended way to write large amounts of graphical data in one go. Do mind that when changing the memory of the locations, it will be displayed directly on the window.
이미지 위치를 지정된 창 인스턴스(x,y)로 지정합니다. 이것은 많은 양의 그래픽 데이터를 한 번에 쓸 수 있는 권장 방법입니다. 위치 메모리를 변경할 때 창에 직접 표시됩니다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- void *img_ptr : 집어넣을 이미지 인스턴스 포인터
- int x : 이미지를 넣을 좌표
- int y : 이미지를 넣을 좌표
+ 반환
- int : 반환값이 없다.
- mlx_destroy_image
int mlx_destroy_image(void *mlx_ptr, void *img_ptr);
Destroys an image instance accordingly.
이미지 인스턴스를 삭제합니다
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- void *img_ptr : 삭제할 이미지 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
Hooks
These functions will allow you to hook into the MiniLibX functions. This is core functionality and is required to use the library effectively. Please look at the Hooks chapter if you have no clue what this means.
- mlx_mouse_hook
int mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
Hook into mouse events. This will trigger every time you click somewhere in the given screen. Do mind that currently these mouse events barely work, it is therefore suggested to not use them.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int (*funct_ptr)() : 해당 이벤트가 들어왔을 때 동작할 함수
- void *param :
+ 반환
- int : 반환값이 없다.
- mlx_key_hook
int mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
Hook into key events. This will trigger every time a key is pressed in a focused window. Unfocused windows will not register any key events.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int (*funct_ptr)() : 해당 이벤트가 들어왔을 때 동작할 함수
- void *param :
+ 반환
- int : 반환값이 없다.
- mlx_expose_hook
int mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
Has no defined behaviour.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int (*funct_ptr)() :
- void *param :
+ 반환
- int : 반환값이 없다.
- mlx_loop_hook
int mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
Hook into the loop.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- int (*funct_ptr)() :
- void *param :
+ 반환
- int : 반환값이 없다.
- mlx_loop
int mlx_loop (void *mlx_ptr);
Loop over the given MLX pointer. Each hook that was registered prior to this will be called accordingly by order of registration.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
main에 넣고 main함수가 끝나지 않도록하면서 들어오는 이벤트를 잡아 지정한 hook대로 동작하게 한다.
Image conversion
These are functions that are useful for loading sprites or even saving images.
- mlx_xpm_to_image
void *mlx_xpm_to_image(void *mlx_ptr, char **xpm_data, int *width, int *height);
Converts xpm data to a new image instance.
xpm 데이터를 새 이미지 인스턴스로 변환합니다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- char **xpm_data :
- int *width :
- int *height :
+ 반환
- void * :
- mlx_xpm_file_to_image
void *mlx_xpm_file_to_image(void *mlx_ptr, char *filename, int *width, int *height);
Converts an xpm file to a new image instance.
xpm 파일을 새 이미지 인스턴스로 변환합니다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- char *filename : 이미지로 변환할 xpm파일의 이름(경로포함)
- int *width : 이미지의 너비
- int *height : 이미지의 높이
+ 반환
- void * : 변환한 이미지 포인터
- mlx_png_file_to_image
void *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height);
Converts a png file to a new image instance.
png 파일을 새 이미지 인스턴스로 변환합니다.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- char *file : 이미지로 변환할 png파일의 이름(경로포함)
- int *width : 이미지의 너비
- int *height : 이미지의 높이
+ 반환
- void * :
Mouse function
These functions will allow you to hide, show, move or get the mouse position.
이러한 기능을 사용하여 마우스 위치를 숨기거나 표시하거나 이동할 수 있습니다.
- mlx_mouse_hide
int mlx_mouse_hide();
Hides the mouse.
+ 반환
- int : 반환값이 없다.
- mlx_mouse_show
int mlx_mouse_show();
마우스를 보여준다.
+ 반환
- int : 반환값이 없다.
- mlx_mouse_move
int mlx_mouse_move(void *win_ptr, int x, int y);
커서를 주어진 위치로 이동한다.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int x : 그릴 픽셀의 좌표
- int y : 그릴 픽셀의 좌표
+ 반환
- int : 반환값이 없다.
- mlx_mouse_get_pos
int mlx_mouse_get_pos(void *win_ptr, int *x, int *y);
현재 윈도우 위의 마우스 위치를 가져온다.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int x : 그릴 픽셀의 좌표
- int y : 그릴 픽셀의 좌표
+ 반환
- int : 반환값이 없다.
Key auto repeat
These functions will allow you to either enable or disable key autorepeat.
- mlx_do_key_autorepeatoff
int mlx_do_key_autorepeatoff(void *mlx_ptr);
Disable key auto repeat.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
- mlx_do_key_autorepeaton
int mlx_do_key_autorepeaton(void *mlx_ptr);
Enable key auto repeat.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
Un-categorized
- mlx_do_sync
int mlx_do_sync(void *mlx_ptr);
** Synchronize frames of all windows in MLX.
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
+ 반환
- int : 반환값이 없다.
- mlx_sync
int mlx_sync(int cmd, void *param);
- mlx_get_screen_size
int mlx_get_screen_size(void *mlx_ptr, int *sizex, int *sizey);
** Get the current screen size (because macOS is sheit)
+ 파라미터
- void *mlx_ptr : mlx 인스턴스 포인터
- int *sizex : 그릴 픽셀의 좌표
- int *sizey : 그릴 픽셀의 좌표
+ 반환
- int : 반환값이 없다.
- mlx_hook
int mlx_hook(void *win_ptr, int x_event, int x_mask, int (*funct)(), void *param);
특정 이벤트가 들어오면 원하는 함수대로 동작하도록 지정할 수 있다.
+ 파라미터
- void *win_ptr : 윈도우 창 인스턴스 포인터
- int x_event : 후킹할 이벤트
- int x_mask : 후킹할 이벤트 (MAC에서는 사용하지 않음)
- int (*funct)() : 이벤트 발생시 호출할 함수(를 가리키는 포인터)
- void *param : 필요한 매개변수 저장
+ 반환
- int : 반환값이 없다.
- X_EVENT
> X11 events 표현할 수 있는 이벤트들의 번호가 지정되어 있다.
[참고]
https://github.com/sejinpark12/MiniLibX_man_kor/blob/main/mlx.md
https://ko.wikipedia.org/wiki/OpenGL
https://harm-smits.github.io/42docs/libs/minilibx/prototypes.html#initialization-functions
'42seoul > circle-2' 카테고리의 다른 글
[so_long] 04. so_long 회고 (0) | 2022.04.27 |
---|---|
[so_long] 03. 창 만들어서 키보드 입력받기 (0) | 2022.04.20 |
[so_long] 02. 텍스처, 스프라이트 그리고 .ber (0) | 2022.04.11 |
[so_long] 0. 과제 이해하기 (0) | 2022.03.29 |
[push_swap] 0. 과제 이해하기 (0) | 2022.03.05 |
댓글