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