88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef GLERMINAL_H
 | 
						|
#define GLERMINAL_H
 | 
						|
 | 
						|
#include <glerminal-config.h>
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C"
 | 
						|
{
 | 
						|
#endif
 | 
						|
 | 
						|
typedef void (*glerminal_init_cb)();
 | 
						|
typedef void (*glerminal_main_cb)(float dt);
 | 
						|
typedef void (*glerminal_keys_cb)(int key);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Call init once, then run the application's mainloop
 | 
						|
 * @param init initialization callback
 | 
						|
 * @param main main calllback
 | 
						|
 * @param pressed key pressed callback (can be null)
 | 
						|
 * @param released key released callback (can be null)
 | 
						|
 */
 | 
						|
void glerminal_run(glerminal_init_cb init, glerminal_main_cb main, glerminal_keys_cb pressed, glerminal_keys_cb released);
 | 
						|
 | 
						|
void glerminal_quit();
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Update the displayed screen contents to the current state of the library
 | 
						|
 */
 | 
						|
void glerminal_flush();
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Set a cell's sprite
 | 
						|
 * @param x position of the cell in the range [0, 40)
 | 
						|
 * @param y position of the cell in the range [0, 25)
 | 
						|
 * @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 short sprite);
 | 
						|
/**
 | 
						|
 * @brief Get a cell's sprite
 | 
						|
 * @param x position of the cell in the range [0, 40)
 | 
						|
 * @param y position of the cell in the range [0, 25)
 | 
						|
 * @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 short layer);
 | 
						|
/**
 | 
						|
 * @brief Set a cell's offset
 | 
						|
 * @param x position of the cell in the range [0, 40)
 | 
						|
 * @param y position of the cell in the range [0, 25)
 | 
						|
 * @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);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Set a layer's color
 | 
						|
 * @param layer The layer to modify
 | 
						|
 * @param color The new color
 | 
						|
 */
 | 
						|
void glerminal_color(unsigned char x, unsigned char y, 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_scale(unsigned char x, unsigned char y, unsigned char layer, float scale);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Load sprites from a png file
 | 
						|
 * @param filename Name of the png file
 | 
						|
 */
 | 
						|
int glerminal_load_sprites_file(const char* filename);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Load sprites from memory
 | 
						|
 * @param width width of the atlas in sprites
 | 
						|
 * @param height height of the atlas in sprites
 | 
						|
 * @param buffer the in-memory atlas
 | 
						|
 */
 | 
						|
int glerminal_load_sprites_buffer(unsigned char width, unsigned char height, const unsigned int* buffer);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif//GLERMINAL_H
 |