2009-12-08 13 views
8

¿Cómo puede un programa dibujar texto en un búfer de cuadros mapeado como una matriz? Lo que se necesita es tanto un medio de representar los personajes individuales, como dibujar los personajes píxel por píxel de una manera que no sea demasiado ineficiente. La representación de los caracteres idealmente debería definirse únicamente en código, y no se requerirían bibliotecas de terceros.Dibujando texto en un framebuffer en Linux desde C

¿Alguien sabe de código para hacer esto disponible bajo una licencia liberal? O una herramienta para generar definiciones de datos para la fuente para su uso en el código del programa, p. la matriz de glifos de mapa de bits/valores de caracteres?

+0

¿El objetivo es mostrar el resultado en una pantalla o escribirlo en un archivo? –

+1

Para mostrar en pantalla, idealmente hasta 60 fps – grrussel

Respuesta

3

No tengo ninguna información específica para los búferes de cuadros, pero sí tengo una manera interesante de codificar una fuente.

Si tiene una aplicación que puede escribir en el XBM format, puede codificar una fuente simplemente creando una imagen que contenga todos los caracteres. El archivo XBM se puede incluir como un archivo C o C++, y mediante el uso de los desplazamientos adecuados puede acceder fácilmente a un solo carácter. Asegúrese de que cada carácter comience en una coordenada X divisible entre 8, porque la imagen está codificada como un bit por píxel; todo lo que no se alinee en un límite de 8 bits necesitará enmascaramiento y desplazamiento.

-3

Para trazar una línea en una matriz 2D, use Besengam's algorithm.

Para dibujar los caracteres usando líneas rectas, construya su alfabeto usando una serie de moverA, líneaA. P.ej. por un simple 'L':

image.moveTo(0,-fontHeight); 
image.lineTo(0, 0); 
image.lineTo(fontWidth,0);