Introducción a Canvas, el nuevo búfer de píxeles de GNU Emacs

Fuentes: An Introduction to Canvas in GNU Emacs

El parche que introduce la funcionalidad canvas en GNU Emacs se incorporó por fin al repositorio oficial tras unos ocho meses de trabajo, y formará parte del ciclo de Emacs 32. Se trata de un nuevo tipo de imagen que expone al programador un búfer de píxeles ARGB32 accesible a bajo nivel mediante la API de módulos dinámicos, lo que permite manipular gráficos directamente en el búfer sin obligar a pasar datos comprimidos a través de cadenas de Emacs Lisp.

El artículo, firmado por Divya Ranjan, aclara varios malentendidos frecuentes. Canvas no tiene relación con HTML5 Canvas: solo comparte el nombre y la idea general de dibujar sobre una superficie; su implementación es independiente. Tampoco sustituye a SVG, aunque en Emacs un canvas se manipula como cualquier otra imagen, igual que un SVG. La diferencia clave es que permite actualizar los píxeles sin pasar por una redisplay completa, gracias a la función canvas-refresh, que solo redibuja los glifos afectados. En las pruebas del autor se reproduce vídeo a 60 FPS en 2K y a 30 FPS en 720p sin que Emacs pierda ritmo.

A nivel de uso, canvas admite dos modos de trabajo: puramente desde Emacs Lisp, como un objeto de imagen más, o mediante la API de módulos dinámicos para acceder directamente al búfer ARGB32. Esto abre la puerta a integrar gráficos externos con aceleración por hardware sin sacrificar la compatibilidad con la API de imágenes existente.