Files
FnixLib/include/fnix/canvas.h
T

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 */