87 lines
2.3 KiB
C
87 lines
2.3 KiB
C
//
|
|
// Created by william on 1/12/24.
|
|
//
|
|
|
|
#ifndef NESEMULATOR_WINDOW_H
|
|
#define NESEMULATOR_WINDOW_H
|
|
|
|
#include <panel.h>
|
|
#include "cursor.h"
|
|
|
|
typedef struct window {
|
|
PANEL *panel;
|
|
int width;
|
|
int height;
|
|
} Window;
|
|
|
|
typedef struct interact_window {
|
|
Window window;
|
|
Cursor cursor;
|
|
void *view;
|
|
|
|
void (*handle_cursor_move)(struct interact_window *window, int horizontal, int vertical);
|
|
|
|
void (*handle_key_down)(struct interact_window *window, int keycode);
|
|
|
|
void (*deinit)(struct interact_window *window);
|
|
} InteractWindow;
|
|
|
|
/**
|
|
* Initializes a window with a position, size and title.
|
|
*
|
|
* @param window The window to initialize
|
|
* @param x The horizontal position (left to right)
|
|
* @param y The vertical position (top to bottom)
|
|
* @param width The window width
|
|
* @param height The window height
|
|
* @param title The window title
|
|
*/
|
|
void window_init(Window *window, int x, int y, int width, int height, char *title);
|
|
|
|
/**
|
|
* Initializes an interactable window with a position, size and title.
|
|
*
|
|
* @param window The window to initialize
|
|
* @param x The horizontal position (left to right)
|
|
* @param y The vertical position (top to bottom)
|
|
* @param width The window width
|
|
* @param height The window height
|
|
* @param title The window title
|
|
*/
|
|
void window_inter_init(InteractWindow *window, int x, int y, int width, int height, char *title);
|
|
|
|
/**
|
|
* Initializes the cursor of an interactable window.
|
|
*
|
|
* @param window The window
|
|
* @param max_x The cursor's maximum horizontal position
|
|
* @param max_y The cursor's maximum vertical position
|
|
*/
|
|
void window_inter_cursor_init(InteractWindow *window, int max_x, int max_y);
|
|
|
|
/**
|
|
* Prints text on a window.
|
|
*
|
|
* @param window The window
|
|
* @param x The horizontal position (left to right)
|
|
* @param y The vertical position (top to bottom)
|
|
* @param fmt A format string
|
|
* @param ... The format string arguments
|
|
*/
|
|
void window_print(Window *window, int x, int y, const char *fmt, ...);
|
|
|
|
/**
|
|
* Prints text on an interactable window.
|
|
*
|
|
* @param window The window
|
|
* @param x The horizontal position (left to right)
|
|
* @param y The vertical position (top to bottom)
|
|
* @param fmt A format string
|
|
* @param ... The format string arguments
|
|
*/
|
|
void window_inter_print(InteractWindow *window, int x, int y, const char *fmt, ...);
|
|
|
|
void window_inter_deinit(InteractWindow *window);
|
|
|
|
#endif //NESEMULATOR_WINDOW_H
|