Banjo API 0.0.1
Multi-purpose C99 API
|
Typedefs | |
typedef struct bj_window_t | bj_window |
Opaque typedef for the window type. | |
typedef enum bj_window_flag_t | bj_window_flag |
A set of flags describing some properties of a bj_window. | |
typedef void(* | bj_window_enter_event_t) (bj_window *p_window, bj_bool enter, int x, int y) |
Callback type for functions called when the mouse cursor enters a window. | |
typedef void(* | bj_window_cursor_event_t) (bj_window *p_window, int x, int y) |
Callback type for functions called when the mouse cursor position changes. | |
typedef void(* | bj_window_button_event_t) (bj_window *p_window, int, bj_event_action action, int x, int y) |
Callback type for functions called when a mouse button is pressed or released. | |
typedef void(* | bj_window_key_event_t) (bj_window *p_window, bj_event_action action, bj_key key, int scancode) |
Callback type for functions called when a keyboard key is pressed or released. | |
Enumerations | |
enum | bj_window_flag_t { BJ_WINDOW_FLAG_NONE = 0x00 , BJ_WINDOW_FLAG_CLOSE = 0x01 , BJ_WINDOW_FLAG_KEY_REPEAT = 0x02 , BJ_WINDOW_FLAG_ALL = 0xFF } |
A set of flags describing some properties of a bj_window. More... | |
Functions | |
bj_window * | bj_window_new (const char *p_title, uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t flags) |
Create a new bj_window with the specified attributes. | |
void | bj_window_del (bj_window *p_window) |
Deletes a bj_window object and releases associated memory. | |
void | bj_window_set_should_close (bj_window *p_window) |
Flag a given window to be closed. | |
bj_bool | bj_window_should_close (bj_window *p_window) |
Get the close flag state of a window. | |
bj_window_cursor_event_t | bj_window_set_cursor_event (bj_window *p_window, bj_window_cursor_event_t p_callback) |
Set the callback for cursor events. | |
bj_window_button_event_t | bj_window_set_button_event (bj_window *p_window, bj_window_button_event_t p_callback) |
Set the callback for button events. | |
bj_window_key_event_t | bj_window_set_key_event (bj_window *p_window, bj_window_key_event_t p_callback) |
Set the callback for key events. | |
void | bj_close_on_escape (bj_window *, bj_event_action, bj_key, int) |
An event call back for closing the window when escape key is pressed. | |
bj_window_enter_event_t | bj_window_set_enter_event (bj_window *p_window, bj_window_enter_event_t p_callback) |
Set the callback for enter events. | |
uint8_t | bj_window_get_flags (bj_window *p_window, uint8_t flags) |
Get window flags. | |
void | bj_poll_events (void) |
Polls all pending events and dispatch them to callbacks. | |
bj_bitmap * | bj_window_get_framebuffer (bj_window *p_window, bj_error **p_error) |
Return the framebuffer attached to the window. | |
int | bj_window_get_size (const bj_window *p_window, int *width, int *height) |
Retrieve the size of the window. | |
void | bj_window_update_framebuffer (bj_window *p_window) |
Copy window's framebuffer onto screen. | |
typedef void(* bj_window_button_event_t) (bj_window *p_window, int, bj_event_action action, int x, int y) |
p_window | Window handle |
action | Sets if the button is pressed or released |
x | The horizontal position of the cursor |
y | The vertical position of the cursor |
typedef void(* bj_window_cursor_event_t) (bj_window *p_window, int x, int y) |
p_window | Window handle |
x | The horizontal position of the cursor |
y | The vertical position of the cursor |
typedef void(* bj_window_enter_event_t) (bj_window *p_window, bj_bool enter, int x, int y) |
p_window | Window handle |
enter | true if the cursor enters the window, false otherwise. |
x | The horizontal position of the cursor |
y | The vertical position of the cursor |
typedef enum bj_window_flag_t bj_window_flag |
These flags can be provided at window creation with bj_window_new. The may also change during the window lifetime. You can use bj_window_get_flags to query the status of any flag on an active window instance.
typedef void(* bj_window_key_event_t) (bj_window *p_window, bj_event_action action, bj_key key, int scancode) |
p_window | Window handle |
action | Sets if the button is pressed or released |
key | Layout-dependent representation of the pressed key |
scancode | Implementation-dependent / Layout-independent representation of the key that has been pressed or released. |
enum bj_window_flag_t |
These flags can be provided at window creation with bj_window_new. The may also change during the window lifetime. You can use bj_window_get_flags to query the status of any flag on an active window instance.
Enumerator | |
---|---|
BJ_WINDOW_FLAG_NONE | No Flag. |
BJ_WINDOW_FLAG_CLOSE | Window should be closed by the application. |
BJ_WINDOW_FLAG_KEY_REPEAT | Key repeat event is enabled (see bj_window_set_key_event). |
BJ_WINDOW_FLAG_ALL | All flags set. |
void bj_close_on_escape | ( | bj_window * | , |
bj_event_action | , | ||
bj_key | , | ||
int | ) |
This utility function is a pre-made bj_window_key_event_t you can directly use to provide a window the behaviour of closing when ESC key is pressed by the user (BJ_KEY_ESCAPE).
Call it using bj_window_set_key_event(p_window, bj_close_on_escape)
.
void bj_poll_events | ( | void | ) |
All events received by the system will be processed and sent to the event callbacks.
void bj_window_del | ( | bj_window * | p_window | ) |
p_window | Pointer to the window object to delete. |
uint8_t bj_window_get_flags | ( | bj_window * | p_window, |
uint8_t | flags ) |
This function returns all the flag sets for p_window
. flags
is a filter to only get the flag you are interested into. It can be a single flag, an OR'd combination of multiple flags or even BJ_WINDOW_FLAG_ALL if you want to retrieve them all.
p_window | The window handler. |
flags | Filter flag set. |
flags
.The framebuffer is an instance of bj_bitmap attached (and owned) by the window. If necessary, bj_window_get_flags will create (or recreate) the framebuffer object upon calling this function. This can happen when the window is resize, minimized or any even that invalidate the window drawing area.
TODO: The instance should stay the same and the framebuffer only change internally.
p_window | The window handler |
p_error | Optional error location |
The function performs nothing if p_window
is 0.
The library is responsible for the return bj_bitmap object.
int bj_window_get_size | ( | const bj_window * | p_window, |
int * | width, | ||
int * | height ) |
p_window | The window handler |
width | A location to the destination width |
height | A location to the destination height |
The function performs nothing if p_window
is 0.
width
and height
can be 0 if you are only interested in retrieving one of the values.
You are responsible for the memory of width
and height
.
bj_window * bj_window_new | ( | const char * | p_title, |
uint16_t | x, | ||
uint16_t | y, | ||
uint16_t | width, | ||
uint16_t | height, | ||
uint8_t | flags ) |
p_title | Title of the window |
x | Horizontal position of the window on-screen, expressed in pixels |
y | Vertical position of the window on-screen, expressed in pixels |
width | Width of the window. |
height | Height of the window. |
flags | A set of options flags. |
The caller is responsible for releasing the returned bj_window object with bj_window_del.
bj_window_button_event_t bj_window_set_button_event | ( | bj_window * | p_window, |
bj_window_button_event_t | p_callback ) |
The providded callback is called each time a button event is raised by the system. If an event was already set previously, it is returned to the caller. The vent set is user until a new callback function is set.
p_window | The window handler |
p_callback | The callback function |
bj_window_cursor_event_t bj_window_set_cursor_event | ( | bj_window * | p_window, |
bj_window_cursor_event_t | p_callback ) |
The provided callback is called each time a cursor event is raised by the system. If an event was already set previously, it is returned to the caller. The event set is used until a new callback function is set.
p_window | The window handler |
p_callback | The callback function |
bj_window_enter_event_t bj_window_set_enter_event | ( | bj_window * | p_window, |
bj_window_enter_event_t | p_callback ) |
The providded callback is called each time an enter event is raised by the system. If an event was already set previously, it is returned to the caller. The vent set is user until a new callback function is set.
p_window | The window handler |
p_callback | The callback function |
bj_window_key_event_t bj_window_set_key_event | ( | bj_window * | p_window, |
bj_window_key_event_t | p_callback ) |
The providded callback is called each time a key event is raised by the system. If an event was already set previously, it is returned to the caller. The vent set is user until a new callback function is set.
p_window | The window handler |
p_callback | The callback function |
Pressing a key on the keyboard will generate a single call event with BJ_PRESS action. Releasing the key generates a single call with BJ_RELEASE. If the BJ_WINDOW_FLAG_KEY_REPEAT flag is set for a window, holding down the key will continuously call the event function with a BJ_REPEAT action.
void bj_window_set_should_close | ( | bj_window * | p_window | ) |
Once, flagged, the window is not automatically closed. Instead, call bj_window_del.
Note that it is not possible to remove a closed flag once set.
p_window | Pointer to the window object to flag. |
This function effectively returns bj_window_get_flags(p_window, BJ_WINDOW_FLAG_CLOSE) > 0
.
bj_bool bj_window_should_close | ( | bj_window * | p_window | ) |
p_window | Pointer to the window object to flag. |
If p_window
is 0, the function returns BJ_TRUE.
void bj_window_update_framebuffer | ( | bj_window * | p_window | ) |
p_window | The window handler |
Use this function to apply any change made to the framebuffer on the window.
The function performs nothing if p_window
is 0 or does not contain any framebuffer.