46 lines
1.6 KiB
C
46 lines
1.6 KiB
C
/*
|
|
* FnixLib - lienzo (búfer de píxeles en memoria).
|
|
*
|
|
* Un FnixCanvas es la superficie sobre la que dibuja el renderizador 2D por
|
|
* software. Cada ventana tiene uno (fnix_window_canvas), pero también se
|
|
* pueden crear lienzos independientes, por ejemplo para pruebas sin pantalla.
|
|
*
|
|
* Formato de píxel: uint32_t 0x00RRGGBB, filas consecutivas sin relleno,
|
|
* origen (0,0) arriba a la izquierda.
|
|
*/
|
|
#ifndef FNIX_CANVAS_H
|
|
#define FNIX_CANVAS_H
|
|
|
|
#include "fnix/types.h"
|
|
|
|
FNIX_BEGIN_DECLS
|
|
|
|
/* Lado máximo de un lienzo, en píxeles. */
|
|
#define FNIX_CANVAS_MAX_SIZE 16384
|
|
|
|
/* Crea un lienzo negro de width x height. Devuelve NULL si el tamaño no está
|
|
* entre 1 y FNIX_CANVAS_MAX_SIZE o si falta memoria (ver fnix_last_error). */
|
|
FnixCanvas *fnix_canvas_create(int width, int height);
|
|
|
|
/* Libera el lienzo. Acepta NULL. Si era el destino de dibujo del hilo actual,
|
|
* el destino pasa a ser NULL. */
|
|
void fnix_canvas_destroy(FnixCanvas *canvas);
|
|
|
|
int fnix_canvas_width(const FnixCanvas *canvas);
|
|
int fnix_canvas_height(const FnixCanvas *canvas);
|
|
|
|
/* Acceso de solo lectura a los píxeles (0x00RRGGBB). NULL si canvas es NULL. */
|
|
const uint32_t *fnix_canvas_pixels(const FnixCanvas *canvas);
|
|
|
|
/* Color del píxel (x, y) con alfa 255. Fuera del lienzo devuelve FNIX_TRANSPARENT. */
|
|
FnixColor fnix_canvas_get_pixel(const FnixCanvas *canvas, int x, int y);
|
|
|
|
/* Lienzo sobre el que dibujan las funciones fnix_draw_*. Es un valor por hilo.
|
|
* fnix_begin_frame() lo establece al lienzo de la ventana. */
|
|
void fnix_set_target(FnixCanvas *canvas);
|
|
FnixCanvas *fnix_get_target(void);
|
|
|
|
FNIX_END_DECLS
|
|
|
|
#endif /* FNIX_CANVAS_H */
|