glerminal/include/glerminal.h

85 lines
2.4 KiB
C
Raw Normal View History

2024-05-09 19:42:12 +00:00
#ifndef GLERMINAL_H
#define GLERMINAL_H
#ifdef __cplusplus
extern "C"
{
#endif
enum
{
GLERMINAL_CELL_SIZE = 8,
GLERMINAL_CELL_AREA = GLERMINAL_CELL_SIZE * GLERMINAL_CELL_SIZE
};
2024-05-14 21:46:30 +00:00
typedef void (*glerminal_init_cb)();
typedef void (*glerminal_main_cb)(float dt);
2024-05-09 19:42:12 +00:00
typedef struct glerminal_sprite
{
2024-05-16 18:48:24 +00:00
unsigned int data[GLERMINAL_CELL_AREA];
} glerminal_sprite;
/**
2024-05-14 21:46:30 +00:00
* @brief Call init once, then run the application's mainloop
2024-05-16 18:48:24 +00:00
* @param init initialization callback
* @param main main calllback
*/
2024-05-14 21:46:30 +00:00
void glerminal_run(glerminal_init_cb init, glerminal_main_cb main);
2024-05-09 19:42:12 +00:00
/**
* @brief Update the displayed screen contents to the current state of the library
*/
2024-05-09 19:42:12 +00:00
void glerminal_flush();
/**
* @brief Set a cell's sprite
2024-05-15 03:03:45 +00:00
* @param x position of the cell in the range [0, 40)
* @param y position of the cell in the range [0, 25)
2024-05-15 02:42:49 +00:00
* @param layer layer of the cell in the range [0, 8)
* @param sprite sprite's index in the range [0, 256)
*/
void glerminal_set(unsigned char x, unsigned char y, unsigned char layer, unsigned char sprite);
/**
* @brief Get a cell's sprite
2024-05-15 03:03:45 +00:00
* @param x position of the cell in the range [0, 40)
* @param y position of the cell in the range [0, 25)
2024-05-15 02:42:49 +00:00
* @param layer layer of the cell in the range [0, 8)
* @return sprite index currently assigned to the cell
*/
unsigned char glerminal_get(unsigned char x, unsigned char y, unsigned char layer);
2024-05-15 02:42:49 +00:00
/**
* @brief Set a cell's offset
2024-05-15 03:03:45 +00:00
* @param x position of the cell in the range [0, 40)
* @param y position of the cell in the range [0, 25)
2024-05-15 02:42:49 +00:00
* @param layer layer of the cell in the range [0, 8)
* @param x_offset offset of the cell on the x axis in the range [-128, 127], where 0 is no offset
* @param y_offset offset of the cell on the y axis in the range [-128, 127], where 0 is no offset
*/
void glerminal_offset(unsigned char x, unsigned char y, unsigned char layer, float x_offset, float y_offset);
2024-05-17 04:51:45 +00:00
/**
* @brief Set a layer's color
* @param layer The layer to modify
* @param color The new color
*/
void glerminal_layer_color(unsigned char layer, unsigned int color);
/**
* @brief Set a layer's scale
* @param layer The layer to modify
* @param scale The new scale
*/
void glerminal_layer_scale(unsigned char layer, float scale);
2024-05-14 21:46:30 +00:00
/**
* @brief Upload sprite to the given sprite ID
* @param id The ID of the sprite to change
* @param sprite The new sprite
*/
void glerminal_update_sprite(unsigned char id, glerminal_sprite sprite);
2024-05-09 19:42:12 +00:00
#ifdef __cplusplus
}
#endif
#endif//GLERMINAL_H