구조체 필드 설명
- Window window
- X11 윈도우 시스템의 Window 타입 변수입니다.
- 실제 화면에 표시되는 창을 나타냅니다.
- GC gc
- Graphics Context의 약자로, 그래픽 작업을 위한 설정을 포함합니다.
- 선 스타일, 색상 등 그래픽 속성을 정의합니다.
- *struct s_win_list next
- 다음 창을 가리키는 포인터입니다.
- 여러 창을 연결 리스트 형태로 관리할 수 있게 해줍니다.
- *int (mouse_hook)()
- 마우스 이벤트를 처리하는 함수 포인터입니다.
- *int (key_hook)()
- 키보드 이벤트를 처리하는 함수 포인터입니다.
- *int (expose_hook)()
- expose 이벤트(창이 다시 그려져야 할 때)를 처리하는 함수 포인터입니다.
- *void mouse_param
- 마우스 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- *void key_param
- 키보드 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- *void expose_param
- expose 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- t_event_list hooks[MLX_MAX_EVENT]
- 다양한 이벤트에 대한 처리 함수와 매개변수를 저장하는 배열입니다.
- MLX_MAX_EVENT는 처리할 수 있는 최대 이벤트 수를 나타냅니다.
- 각 이벤트 타입에 대해 별도의 처리 함수와 매개변수를 설정할 수 있습니다.
구조체의 용도
이 구조체는 MiniLibX에서 창 관리와 이벤트 처리를 위한 핵심 데이터 구조입니다:
- 창 관리: 각 창의 속성과 그래픽 컨텍스트를 저장합니다.
- 이벤트 처리: 다양한 이벤트(마우스, 키보드, expose)에 대한 콜백 함수를 저장하고 관리합니다.
- 연결 리스트: next 포인터를 통해 여러 창을 효율적으로 관리할 수 있습니다.
- 유연한 이벤트 처리: hooks 배열을 통해 다양한 이벤트 타입에 대해 세밀한 제어가 가능합니다.
이 구조체를 사용함으로써, MiniLibX는 X11 윈도우 시스템의 복잡성을 추상화하고, 사용자에게 더 간단하고 직관적인 인터페이스를 제공할 수 있습니다.
- *void mouse_param
- 마우스 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- void * 타입으로 선언되어 있어 어떤 타입의 데이터도 저장할 수 있습니다.
- 주로 프로그램의 상태 정보나 필요한 데이터 구조체의 포인터를 저장합니다.
- 마우스 이벤트 발생 시, 이 매개변수가 등록된 마우스 이벤트 처리 함수에 전달됩니다.
- *void key_param
- 키보드 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- mouse_param과 마찬가지로 void * 타입으로, 다양한 데이터를 저장할 수 있습니다.
- 키 입력 이벤트 발생 시, 이 매개변수가 등록된 키보드 이벤트 처리 함수에 전달됩니다.
- 주로 프로그램의 주요 데이터 구조체 포인터(예: t_fdf *)를 저장하여 이벤트 처리 함수에서 프로그램 상태에 접근할 수 있게 합니다.
- *void expose_param
- expose 이벤트 처리 함수에 전달될 추가 매개변수입니다.
- expose 이벤트는 창이 다시 그려져야 할 때 발생합니다.
- 이 매개변수를 통해 expose 이벤트 처리 함수에 필요한 추가 정보를 전달할 수 있습니다.
- 예를 들어, 그래픽 컨텍스트나 이미지 데이터에 대한 포인터를 저장할 수 있습니다.
이러한 매개변수들의 주요 특징과 사용 목적은 다음과 같습니다:
- 유연성: void * 타입을 사용하여 어떤 종류의 데이터도 저장할 수 있습니다.
- 상태 관리: 이벤트 처리 함수에서 프로그램의 전체 상태에 접근할 수 있게 해줍니다.
- 데이터 전달: 이벤트 처리 시 필요한 추가 정보를 효과적으로 전달할 수 있습니다.
- 모듈성: 이벤트 처리 로직을 메인 프로그램 로직과 분리하면서도 필요한 데이터에 접근할 수 있게 합니다.
이러한 매개변수들은 MiniLibX에서 이벤트 처리 시스템을 유연하고 효과적으로 구현할 수 있게 해주는 중요한 요소입니다.
'C Language' 카테고리의 다른 글
MiniLibx의 키보드 입력 처리와 렌더링 처리 (0) | 2025.01.22 |
---|---|
3d 와이어프레임 모델 구조체 설명 (0) | 2025.01.22 |
3차원 프로젝트에서 z 값에 대해서만 min_z를 두는 이유 (0) | 2025.01.21 |
부모 프로세스와 자식 프로세스의 free 알고리즘 차이 (0) | 2025.01.21 |
자식 프로세스 파이프 알고리즘 (0) | 2025.01.21 |