Obtener los offset's de caracteres de un fnt

Started by master, January 25, 2014, 11:17:13 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

master

Hola a todos, vengo con una pequeña duda, pero que no se como solucionarla:


Lo que quiero es escribir en una imagen texto letra por letra:


lo estoy haciendo así:


int letra;
int texto;
char dialogo[20];
int linea_texto;
...

letra=write_in_map(font1,dialogo,0);
map_put(0,texto,letra,7*i,(linea_texto)*14);


pero el resultado es bueno solo cuando el gráfico de la letra a usar es del mismo alto, por ejemplo la A y el 1 son de 10x11 y salen bien, pero para las minúsculas que son de 10x8 no, aparecen "volando".
(No es problema de la fuente, ya que al escribir con write, funciona todo bien.)




lo mismo ocurre si uso esto mas simplificado:


map_put(0,texto,get_glyph(font1,page_act.dialogo[linea_texto]),7*i,(linea_texto)*14);


Se me ocurría usar los offset's de los caracteres del fnt, pero no se como obtenerlos. Necesito el Offset Vertical


espero me puedan ayudar.

master

bah, no se si borrar este post, ya lo he solucionado, cuando se hace get_glyph, en el map donde se guarda el gráfico van incluidos los puntos de control:
el vertical offset y horizontal offset estan en el punto de control 1:
la función en particular es :


get_point ( <INT fileID> , <INT graphID> , <INT controlpointID> , <INT POINTER x>, <INT POINTER y>)
http://wiki.bennugd.org/index.php?title=Point_get

laghengar

A mi me ha servido para enterarme, gracias :)
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

master

Que bien que te sirvió:

Entonces agrego un poco mas de información:

Cuando se hace get_glyph, en el map donde se guarda el grafico se almacena la sig información:
punto de control 0=el centro de la imagen
punto de control 1=el "horizontal offset" y "vertical offset"
punto de control 2=el "xadvance" y "yadvance"

El "xadvance" es para indicar el espacio en pixeles para pintar el siguiente caracter, que normalmente es el ancho del caracter. Me surge una duda ¿que utilidad tiene el yadvance, si write no acepta saltos de linea?

Drumpi

Precisamente para lo que tú estás haciendo: escribir los textos de forma independiente al sistema de bennu.
De todas formas, yo tampoco sabía lo de los puntos de control, y te iba a recomendar leer el FNT como si fuera un fichero ^^U Gracias por la info.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)