Bennu Game Development

Foros en Español => Extensiones => Topic started by: josebita on December 29, 2008, 12:19:47 AM

Title: Pango
Post by: josebita on December 29, 2008, 12:19:47 AM
Hola:

Entre ayer y hoy (y con un poquito de ayuda :)) he creado una librería de interfaz a pango. Pango es el sistema de renderizado de textos que se usa en gnome, uno de los dos escritorios más utilizados en linux.
Bueno, la gracia es que soporta muchas de las cosas que soporta HTML a la hora de escribir textos, es decir, es válido algo de la forma:
[code language="html4strict"]<span font_family="Arial" size="xx-large" color="#0000ff"><u>Hello</u>, World!</span>[/code]
La lista completa de lo soportado está aquí (http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html).
Adjunta dejo el código de una primera versión de la librería y la versión binaria para Linux de 32 bits junto con un pequeño código de ejemplo bennu. Debería funcionar bien en 32 bits de color, pero no funciona bien en 16 bits (Si alguien quisiera ayudar, splinter, creo que el problema está en los valores de las masks al crear surface en 16 bits, pero no estoy seguro y tampoco sé los valores que deberían ser... :) ).

En cuanto arregle el problema con los 16 bits tenga un rato intentaré compilarla para windows, ok? ¡Ya tengo los binarios para Windows! (rezo para que no os den problemas, son un infierno de compilar, leed el post más abajo).
Espero que sea útil.

Además, dejo un par de screenshots del programa de ejemplo:
Se pueden poner superíndices y subíndices:
(http://lh5.ggpht.com/_RDT1BQDk_sQ/SVgYdyfJKiI/AAAAAAAAITE/-GLViQvwgB4/s800/emc2.png)
Y se pueden renderizar alfabetos no latinos:
(http://lh4.ggpht.com/_RDT1BQDk_sQ/SVgYeC5DYYI/AAAAAAAAITM/H_TCpZHinw4/s800/Hello%20World.png)

[Edito] Acabo de actualizar el ejemplo con código válido para 16 y 32 bits de color.
[Edito] Podeis probar los binarios de windows desde aquí. (http://wiki.bennugd.org/images/1/17/Pango-mingw-win32.zip)
Title: Re: Pango
Post by: SplinterGU on December 29, 2008, 01:36:45 AM
Excelente... luce muy bien...

en 16 bits es 565...
Title: Re: Pango
Post by: josebita on December 29, 2008, 02:56:31 AM
Ya, he copiado (por si acaso) los masks de libgrbase/g_bitmap.c pero nada. Aparece siempre un fondo de color sólido detrás de las letras y las letras en otro color encima (a veces no se aprecian casi las letras).
En el caso de 16 bits creo la surface con:
SDL_CreateRGBSurface(0, w, h, 16, ((0xFF) >> 3) << 11, ((0xFF) >> 2) << 5 , (0xFF) >> 3, 0xFF);
Luego convierto la surface a un gráfico como me dijiste:
bitmap_new_ex(bitmap_next_code(), surface->w, surface->h, surface->format->BitsPerPixel, surface->pixels, surface->pitch);
Pero a la hora de mostrarlo en pantalla... aparece como un rectángulo de fondo sólido y las letras en otro que nada tiene que ver con el pedido.
Lo que me extraña también es que haya diferencia entre lo que saca SDL directamente al bmp y lo que muestra bennu en pantalla...

¿Ideas?. ¿Debería establecer como transparentes los pixels del fondo?.
Gracias por adelantado
Title: Re: Pango
Post by: SplinterGU on December 29, 2008, 03:10:38 AM
podrias poner una captura? asi me doy una idea.
Title: Re: Pango
Post by: josebita on December 29, 2008, 03:23:44 AM
El BMP que saca SDL:
(http://lh6.ggpht.com/_RDT1BQDk_sQ/SVhCOWNM7fI/AAAAAAAAITs/RbXTzx9VMWc/s400/pango.jpg)
El PNG que saca Bennu:
(http://lh3.ggpht.com/_RDT1BQDk_sQ/SVhCORSx1jI/AAAAAAAAIT0/WpOGWi727z0/s400/pango.png)

Si te fijas, en el segundo se aprecian, aunque mal, sobre el fondo las letras.
Title: Re: Pango
Post by: SplinterGU on December 29, 2008, 06:57:28 AM
1) no tenes que liberar el surface, por eso aparece basura en el grafico... la funcion bitmap_new_ex crea un bitmap falso, sin alocar memoria para la data, usa la que le pasas vos que ya esta alocada... otra opcion si necesitas liberar el surface es hacer un clone del mapa antes de eliminar el surface y obviamente borrar el mapa fake creado, en ese caso no debes usar la funcion bitmap_next_code() en la bitmap_new_ex

2) Lamento decir que creo que el BMP que decis saca SDL es un BMP viejo, porque acabo de descomentar de tu codigo el SaveBMP y da lo mismo que da Bennu... o sea, todo color solido... por otra parte si cambiar los colores en la linea del makeup, poniendo rojo absoluto, verde o azul, el color es correcto, asi que no es problema de mascaras, me temo que es un problema de la pango... tambien hay funciones de la pango que no funcionan, como la creatergbsurfacedraw o algo asi, que deberia crear y dibujar a la vez, pero no lo hace...
Title: Re: Pango
Post by: SplinterGU on December 29, 2008, 07:16:15 AM
Bien asi funciona...


/*
*  Fenix - Videogame compiler/interpreter
*  Current release       : FENIX - PROJECT 1.0 - R 0.82
*  Last stable release   :
*  Project documentation : http://fenix.divsite.net
*
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
*
*  Copyright © 2008/2009 Joseba García Echebarria
*
*/

/*
* FILE        : image.c
* DESCRIPTION : sdlf_Image Fenix support DLL
*/

#ifdef WIN32
#include <windows.h>
#include <winbase.h>
#endif

#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <memory.h>
#include <SDL_Pango.h>
/* BennuGD stuff */
#include <bgddl.h>
#include <xstrings.h>
#include <libgrbase.h>
#include <g_video.h>

/* This function initializes Pango, and renders the given text, then return its graph */
static int bgd_pango_render(INSTANCE *my, int * params)
{
SDLPango_Context *context;
SDL_Surface *surface=NULL;
GRAPH *gr, *gr1;
int w, h;

// Initialize BennuGD graphics & Pango, if they're not already started
if(! scr_initialized) gr_init(320, 240);
if(! SDLPango_WasInit () ) SDLPango_Init();

// This "context" is our reference object when dealing with Pango
// More initialization stuff: set default values...
context = SDLPango_CreateContext();

SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_WHITE_LETTER);
SDLPango_SetMinimumSize(context, -1, -1);

// Now, give Pango the text we want to render, UTF-8 with HTML-like markup
SDLPango_SetMarkup(context, string_get(params[0]), -1);
string_discard(params[0]);

// Actually draw the surface
w = SDLPango_GetLayoutWidth(context);
h = SDLPango_GetLayoutHeight(context);

if(screen->format->BitsPerPixel == 16) {
surface = SDL_CreateRGBSurface(0, w, h, 16, (((Uint32)0xff) >> 3) << 11, (((Uint32)0xff) >> 2) << 5 , ((Uint32)0xff) >> 3, 0);
} else if (screen->format->BitsPerPixel == 32) {
surface = SDL_CreateRGBSurface(0, w, h, 32, (Uint32)(255 << (8*2)), (Uint32)(255 << (8*1)), (Uint32)(255 << 8*0), (Uint32)(255 << 8*3) );
}

if(surface == NULL) {
fprintf(stderr, "Pango binding error: Screen depth not supported.\n");
return -1;
}

SDLPango_Draw(context, surface, 0, 0);

// For debug purposes: save the surface to a BMP prior to conversion
SDL_SaveBMP(surface, "pango.bmp");

// Convert the surface into a bgd graph
gr1 = bitmap_new_ex(0, surface->w, surface->h, surface->format->BitsPerPixel, surface->pixels, surface->pitch);
gr = bitmap_clone(gr1);
    bitmap_destroy(gr1);
    gr->code = bitmap_next_code() ;
    grlib_add_map( 0, gr ) ;

// Free things
SDLPango_FreeContext(context);
SDL_FreeSurface(surface);

return gr->code;
}

DLSYSFUNCS __bgdexport( pango, functions_exports )[] =
{
{"PANGO_RENDER", "S", TYPE_DWORD, bgd_pango_render },
{0, 0, 0, 0}
};



#ifdef __VERSION__
import "mod_say";
import "mod_key";
import "mod_video";
import "mod_map";
import "mod_mouse";
import "mod_text";
#endif

import "pango";

Process main()
Private
int retval=0;
string markup = "e=mc< sup>2< /sup>";

Begin
set_mode(640, 480, 16, MODE_WINDOW);
if(argc == 2)
markup = '< span font_family="Serif" size="xx-large" foreground="blue" background="black">< u>'+argv[1]+'< /u>< /span>';
end;

say("Going to render:");
say(markup);

graph = pango_render(markup);

x = 200;
y = 100;
write_var(0, 0, 0, 0, x);
write_var(0, 0, 10, 0, y);
while(! key(_esc))
x = mouse.x;
y = mouse.y;
FRAME;
End;
unload_map(0, graph);
End;


El problema esta en la pango que si no le pones el color de fondo, dibuja todo con el color del texto.

Yo te diria que le cambies el credito, esto no es para Fenix, ni se llama image.c, etc, etc..
Y otra cosa que te diria es que le pongas chequeos a las funciones que agregue yo, creo que las que tenias vos no faltaba nada, pero bueno, ya no recuerdo... chequeatelo...

La verdad que esta muy bien...

NOTA: Fijate que en el ejemplo agregue un espacio a los "<" ya que sino no sale el codigo... suerte....
Title: Re: Pango
Post by: osk on December 29, 2008, 10:36:09 AM
¡Qué guay! Nos podremos olvidar entonces de set_text_color, set_text_position y cosas así, ¿no?
¿Qué tal incluir esta librería dentro de las oficiales?...
Y una pregunta: la versión para windows, ¿no requiere tener instalado previamente nada extra rollo librerías gtk o algo?
Venga, hasta luego!!
Title: Re: Pango
Post by: josebita on December 29, 2008, 11:12:26 AM
:) Splinter, las cabeceras las he copiado del image y ni me he dado cuenta. Y lo del color sólido: algo había tocado.... En fin, ahora pruebo tu código y os cuento.

Osk: En windows habría que instalar/distribuir con el juego SDL_Pango, Pango y creo que alguna cosilla más. No lo sé seguro, pero en cuanto lo tenga en windows lo miro.
En principio, se podría reemplazar cierta parte de la funcionalidad de write aunque no completamente y tampoco funcionaría igual (la función devuelve un mapa, no un texto). Tiene muchos matices.
En cambio, gana mucho en funcionalidad.
Title: Re: Pango
Post by: josebita on December 29, 2008, 11:38:44 AM
Acabo de actualizar el adjunto con el código arreglado de Splinter y he cambiado el archivo hello_world para que efectivamente diga "Hello world!" en japonés.

A ver si hago un poco de código bennu para una cabecera que añada unas funciones tipo write() con los alineados y eso, que eso es fácil.

PD: Gracias Splinter, que no te lo he dicho.
Title: Re: Pango
Post by: SplinterGU on December 29, 2008, 11:56:44 AM
Pues de nada... :)
Title: Re: Pango
Post by: darío on December 29, 2008, 01:15:48 PM
Estupendo josebita  :D. Esto facilitará mucho hacer textos complejos sin mucho esfuerzo... además, que HTML sabemos casi todos jeje.
Title: Re: Pango
Post by: Prg on December 31, 2008, 04:08:14 AM
wow, y ¿para cuándo estaría la de windows?

me llama mucho la atención, se ve muy bien.
Title: Re: Pango
Post by: josebita on December 31, 2008, 05:08:48 PM
Estoy con la de windows, pero me da problemas de librerías. A ver si los arreglo.

Feliz año a todos.
Title: Re: Pango
Post by: josebita on January 01, 2009, 10:58:09 PM
Acabo de subir los binarios de windows compilados con mingw32. Son un infierno de compilar, porque al final me he tenido que compilar todos los paquetes a mano, como indican en este tutorial sobre TuxPaint (http://johnnypops.demon.co.uk/mingw/).
Lo primero que hay que hacer es ejecutar el binario "fc-list.exe" sólo una vez, que creará el fichero "etc/fonts/.fonts-cache-1". Ese fichero es una lista de vuestras fuentes, así que aseguraros de borrarlo al distribuir lo que hagais con esta librería y añadir al instalador una orden de ejecución del fc-list.exe durante la instalación.
Después, debería poderse descomprimir, compilar y listo.
Lo he probado con la wip15c2 en un windows xp de 32 bits y va.
Si se queja de que faltan librerías, igual me he dejado algo por subir. Avisad y lo busco.

En fin, espero que haya merecido la pena el curro de compilar esto y que lo useis mucho :)
Title: Re: Pango
Post by: Prg on January 01, 2009, 11:12:49 PM
je je, aquí matamos dos pájaros de un tiro, tengo mi versión de windows, la cual utilizaré en el fpg editor para solucionar eso de los acentos y para hacer los páneles y agregar colores para algo que estoy pensando y revisaré cómo cómpilar lo que dices, eso de las librerías. :) Gracias.

Un karma para tí.
Title: Re: Pango
Post by: josebita on January 01, 2009, 11:16:11 PM
:) Gracias. Probadlo, que no las tengo todas conmigo de que haya metido todo lo necesario.
Title: Re: Pango
Post by: SplinterGU on January 02, 2009, 02:27:21 AM
muy bueno!
Title: Re: Pango
Post by: Prg on January 02, 2009, 05:17:39 PM
 :'(

en la versión de windows me dice:

** (process:308): WARNING **: No builtin or dynamically loaded modules
were found. Pango will not work correctly. This probably means
there was an error in the creation of:
  'C:\Documents and Settings\Administrador\Mis documentos\pango\2\etc\pango\pango.modules'
You may be able to recreate this file by running pango-querymodules.
Fontconfig error: Cannot load default config file
No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org



Sí compila, pero a la hora de ejecutar me dice esto y ya no se ejecuta.  ???
Title: Re: Pango
Post by: josebita on January 02, 2009, 07:33:38 PM
Sabía que se me olvidaba algo :)
Estoy subiendo una nueva versión con el "pango-querymodules.exe" que faltaba y sin las librerías para reproducir ogg/vorbis (que no hacen falta y ya vienen con bennugd). Vuelve a ejecutarlo y a ver si va.
Title: Re: Pango
Post by: josebita on January 03, 2009, 12:26:29 AM
Venga, lo acabo de probar en un ordenador bastante diferente a el que he usado para compilar la librería (es un windows xp de 64 bits) y va genial. Además, es una prueba de meter dos fuentes con tamaños, colores y atributos distintos en la misma línea de renderizado. Es también prueba de que, a veces, uso windows :)

Otra cosa, con esto de compilar y ya que estoy con el windows, a ver si también compilo la libiconv (conversión entre charsets) para quien quiera usarla.
(http://lh3.ggpht.com/_RDT1BQDk_sQ/SV6vrosKcLI/AAAAAAAAIV4/PGR5OlJRKU4/s800/SDLPango.jpg)
Ni caso a lo del pseudo-latex, tampoco es pa tanto :P
Title: Re: Pango
Post by: Prg on January 14, 2009, 01:47:36 AM
hola :) . De pura casualidad no tienes las librerías de pango  para windows? Para no meterme en líos a la hora de quererlos compilar.
QuoteVuelve a ejecutarlo y a ver si va.
je je, se me había olvidado revisar el tema, por eso no te había respondido, sin embargo veo que lograste compilar algo en windows :)
Title: Re: Pango
Post by: josebita on January 14, 2009, 12:06:32 PM
Las de desarrollo o las de ejecución. Las de ejecución deberían estar todas en el adjunto del primer post.
Title: Re: Pango
Post by: Prg on January 14, 2009, 05:17:37 PM
mmmmmm!!!

las que utilizamos ya directamente para ejecutar, sin meterle mano.
esto es para probar el ejemplo y de ahí intentar probar en código mío. :)
Title: Re: Pango
Post by: josebita on January 14, 2009, 05:32:44 PM
Pues el archivo comprimido creo que trae código de ejemplo y la librería compilada junto con todas las dependencias. Acuérdate de ejecutar los dos ejecutables que vienen también.
El enlace es:
http://wiki.bennugd.org/images/1/17/Pango-mingw-win32.zip
Vale, lo que supongo que no has visto es que eddité el primer mensaje para añadir el enlace. Sorry.
Title: Re: Pango
Post by: Prg on January 14, 2009, 05:46:20 PM
si lo había revisado, incluso lo descargué, y lo peor es que sigo igual. no puedo compilar el archivo prg.

pensé que era porque tenía que modificar algo ??? ....

entonces tengo que ejecutar los dos ejecutables vd?, pero imagino que tengo que arrastrar algo hacia ellos, exactamente que? y en qué orden?

es que me sigue diciendo:

Quote> Executing: C:\Archivos de programa\ConTEXT\ConExec.exe "C:\devBennu\bin\bgdi.exe" main

Going to render:
<span foreground="blue" background="black">e=mc<sup>2</sup></span>

** (process:5116): WARNING **: No builtin or dynamically loaded modules
were found. Pango will not work correctly. This probably means
there was an error in the creation of:
  'C:\Documents and Settings\Administrador\Mis documentos\pango\3\etc\pango\pango.modules'
You may be able to recreate this file by running pango-querymodules.
Fontconfig error: Cannot load default config file
No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org
> Execution finished.

pero ya tengo todo lo que me dijiste que descargara, varias veces  :-\  :'(

incluso copié todo lo de bennu a la carpeta, pues al arrastrar la librería pango a pango_querymodules decía que necesitaba la sdl ...

bueno, no te agobio, mejor si puedes decirme qué hacer o qué leer, de preferencia en español...  :D .. te lo agradecería. y si lo logro te digo lo que hice para futuras referencias.
Title: Re: Pango
Post by: josebita on January 14, 2009, 08:06:07 PM
El problema parece ser:
QuoteYou may be able to recreate this file by running pango-querymodules.exe
Prueba a borrar el fichero etc/pango/pango.modules como te dice el mensaje de error y reejecuta los dos ejecutables que hay en el comprimido (pango-querymodules y fc-list.exe).
Title: Re: Pango
Post by: Prg on January 14, 2009, 10:54:32 PM
creo que el problema es el pangoquerymodules. no hace nada.
reree todo el entorno de carpetas especificado en pango modules

QuoteC:/msys/1.0/local/lib/pango/1.4.0/modules/pango-arabic-fc.dll ArabicScriptEngineFc PangoEngineShape PangoRenderFc arabic:*
..
C:/msys/1.0/local/lib/pango/1.4.0/modules/pango-thai-fc.dll ThaiScriptEngineFc PangoEngineShape PangoRenderFc thai:*

y al menos el mensaje de error ha cambiado. posiblemente los ejecutables tengan que ejecutarse de una forma distinta al doble click o al de arrastrar la librería pango en ellos.

el mensaje de error ahora es este.

Quote> Executing: C:\Archivos de programa\ConTEXT\ConExec.exe "C:\devBennu\bin\bgdi.exe" main

Going to render:
<span foreground="blue" background="black">e=mc<sup>2</sup></span>

** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
(process:5368): GLib-GObject-CRITICAL **: file gobject.c: line 1561 (g_object_ref): assertion `G_IS_OBJECT (object)' failed

** (process:5368): WARNING **: No se puede encontrar el m\xf3dulo especificado.
F


sabes, creo que no voy a poder ejecutarlos, no se si alguien que tenga windows lo ha probado y ha podido... ¿Alguien ha podido?
Title: Re: Pango
Post by: josebita on January 14, 2009, 11:31:27 PM
Mañana le echo un ojo, ok?
Title: Re: Pango
Post by: josebita on January 15, 2009, 07:44:12 PM
Bueno, acabo de probar en un ordenador windows con los últimos binarios para windows de sandman del foro inglés.

He ejecutado los dos ejecutables (desde la consola) sólo como:
C:\Documents and Settings\Joseba\Desktop\Pango>fc-list.exe
(...Lista larguísima de las fuentes de mi sistema...)
Californian FB:style=Italic
Broadway:style=Regular
Berlin Sans FB Demi:style=Bold
DejaVu Serif:style=Bold

C:\Documents and Settings\Joseba\Desktop\Pango>pango-querymodules.exe
C:\Documents and Settings\Joseba\Desktop\Pango>pango-querymodules.exe
# Pango Modules file
# Automatically generated file, do not edit
#
# ModulesPath = C:\Documents and Settings\Joseba\Desktop\Pango\lib\pango\1.4.0\m
odules
#
(...Lista aburrida de los módulos pango...)
"C:\Documents and Settings\Joseba\Desktop\Pango\lib\pango\1.4.0\modules\pango-th
ai-fc.dll" ThaiScriptEngineFc PangoEngineShape PangoRenderFc thai:*

C:\Documents and Settings\Joseba\Desktop\Pango>

Y entonces, con ejecutar bgdc main.prg y bgdi main.dcb ya va.

No hay que arrastrarle a ninguno de los dos ejecutables ningún fichero, van solos.
Prueba a hacer una cosa: ejecútalos desde la consola. Si va, entonces puede que sea que tienes que meter el directorio en que se encuentran las .dll en el path de windows.
Si puedes echarle un ojo, te lo agradecería. Yo hasta que acabe exámenes no voy a poder dedicarle tiempo, sorry :(

[Edito] Vale, prueba a ejecutar el pango-querymodules desde la consola como:
pango-querymodules > etc\pango\pango.modules
El fichero etc\fonts\.fonts.cache-1 (que es el que crea el fc-list con la lista de tus fuentes) sí se crea sólo con ejecutar el programa directamente.
Title: Re: Pango
Post by: Prg on January 15, 2009, 09:30:26 PM
ya veo. no te aseguro nada, peor quizá con esto pueda hacer algo mejor. gracias. suerte en tus exámenes. yo entro a clases en 15 días todavía. :)
Title: Re: Pango
Post by: Prg on January 15, 2009, 09:56:43 PM
mi problema está al ejecutar el fc-list.exe
me dice: fontconfig error: cannot load default config file.

creo que por eso nada iba. :)
Title: Re: Pango
Post by: josebita on January 15, 2009, 10:46:09 PM
Ups!
Mira a ver si en el directorio etc\fonts tienes un fichero llamado fonts.conf.
Si no, hay una copia en el enlace del primer post.

Siento que te esté dando tantos problemas aunque supongo que ayudará a aclarar qué hay que hacer en windows....
Title: Re: Pango
Post by: Prg on January 16, 2009, 02:25:32 AM
mira, me ha dado lo siguiente:

[code language="bennu"]
CafeAuShite:style=CafeAuShite
Diskun:style=Diskun
...
Constantia:style=Bold
Franklin Gothic Demi:style=Regular
Californian FB:style=Italic
Broadway:style=Regular
Berlin Sans FB Demi:style=Bold
# Pango Modules file
# Automatically generated file, do not edit
#
# ModulesPath = C:\msys\1.0\local\lib\pango\1.4.0\modules\lib\pango\1.4.0\modules
#
BGDC 0.93 (Jan  1 2009 17:20:37)
Copyright © 2006-2008 SplinterGU (Fenix/BennuGD)
Copyright © 2002-2006 Fenix Team (Fenix)
Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details

C:\msys\1.0\local\lib\pango\1.4.0\modules\librender:0: warning: Variable redeclared ("ALPHA_STEPS")

File main.dcb compiled (41507 bytes):

  Processes                     1
  Global data                 344 bytes
  Local data                  184 bytes
  Private data                  8 bytes
  Public data                   0 bytes
  Code                        456 bytes
  System processes            132
  Globals vars                 19
  Locals vars                  26
  Private vars                  2
  Publics vars                  0
  Identifiers                 508
  Structs                       4
  Strings                      30 (401 bytes)

Going to render:
<span foreground="blue" background="black">e=mc<sup>2</sup></span>

y después de esto lo que ya te había mensionado



** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
(process:4788): GLib-GObject-CRITICAL **: file gobject.c: line 1561 (g_object_re
f): assertion `G_IS_OBJECT (object)' failed

** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
** (process:4788): WARNING **: No se puede encontrar el m\xf3dulo especificado.
Failed to load Pango module for id: 'BasicScriptEngineFc'
(process:4788): GLib-GObject-CRITICAL **: file gobject.c: line 1561 (g_object_re
f): assertion `G_IS_OBJECT (object)' failed

** (process:4788): CRITICAL **: file pango-engine.c: line 68 (_pango_engine_shap
e_shape): assertion `PANGO_IS_FONT (font)' failed

[/code]


en etc\font: (me tocó hacer el directorio) etc\fonts

pegué el fonts.conf

y me apareció otro archivo llamado: .fonts.cache-1
eso es todo lo que sucede. veo que si no tengo un directorio llamado etc\fonts en la carpeta del pango, no sucede nada. (además del directorio debo haber copiado el fonts.conf, o no me corre el fc.-list)

Title: Re: Pango
Post by: Prg on January 16, 2009, 02:31:58 AM
voy a llorar, y no se si de felicidad o de coraje, amigo, todo me lo envió a una carpeta temporal,

C:\Documents and Settings\Administrador\Configuración local\Temp\Pango

aquí está todo para ejecutarse

ejecuté los dos exe y luego ya me corrió debidamente el main.
atención, ejecuté el dcb directamente y no funciona. cambié el directorio y tampoco funciona.

revisaré y luego te cuento. estoy feliz, lo logré. aunque no me lo esperaba. que bueno que revisé el video que acavaba de ver.
Title: Re: Pango
Post by: Prg on January 16, 2009, 02:40:48 AM
subo todo completito como lo tengo por si a alguien le sirve.

si lo compilo en otro directorio me genera un problema en  ntdll.dll
no se que sea. sólo lo puedo correr en el directorio temporal. me genera error de windows, ese que según eso puedes enviar.

http://rapidshare.com/files/184058834/Pango.rar.html

ese es el que tengo en el directorio temporal. que ejecuten los exe y luego que compilen y ejecuten rápidamente. si compi8lo directamente me genera el error, tengo que compilar con el context, no se que sea.... luego veo que me sucede. :)
Title: Re: Pango
Post by: josebita on January 16, 2009, 03:09:21 AM
Genial, me alegro de que te funcione y mil gracias por el tiempo dedicado, espero que te merezca la pena :)
No estoy seguro y no quiero avanzar nada, pero puede que el error de ntdll (que a mí también me lo ha dado ejecutando desde el explorer, no desde la línea de comandos) lo dé porque si las .dll no están en un directorio dentro del path de windows, el programa casca.

Viendo que instalar esto a mano puede llegar a ser un infierno, ¿qué tal si cuando tenga un rato intento sacar un instalador (o incluso mejor, un .msi, aunque necesitaré ayuda con esto) que haga todo por uno?
Title: Re: Pango
Post by: Prg on January 16, 2009, 03:54:02 AM
sería genial.  ahí tienes mi carpeta por si te sirve de algo. y ya se cómo evitar el error ese de la librería. la primera linea, la que declara el string produce el error. no conozco html, así que no se cuál puede ser el error (aprenderé con tu librería), por lo pronto aquí hay una captura de tu librería trabajando.

(http://i247.photobucket.com/albums/gg149/rolix1/Dibujo-3.jpg)

oye, ¿para agregarla a mi editor fpg, vastará con colocar la carpeta con todo, o habrá problemas al pasarla a linux y todo eso?
¿creo que mejor me espero  un poco vd?, o ¿qué opinas?
Title: Re: Pango
Post by: josebita on January 16, 2009, 04:19:47 AM
Ey, qué chulo el ejemplo :)
Pues en linux probablemente no haya mayor problema, porque las librerías que hacen falta son todas bastante estándar. Sólo haría falta el binario de la mia (pango.so, no está en el paquete de windows, sí en el adjunto del primer post).

De todas formas, me gustaría ver si copiando esa carpeta a otro ordenador la librería funciona sin necesidad de ejecutar los dos programas.
Ya te digo, en cuanto saque tiempo, lo dedicaré a mejorar el estado de la versión de windows, ¿ok?.
Si da problemas, intentaré hacer el instalador para windows.
Title: Re: Pango
Post by: Prg on January 16, 2009, 05:12:09 PM
QuoteEy, qué chulo el ejemplo Smiley
:) gracias.
sería bueno revisar si la carpeta por sí sola funciona. la otra pc que tengo está toda destruida, pero quizá pueda preguntarle a un primo si puede él ejecutarlo en su pc.

me está funcionando de maravilla. lo único que me genera problemas es el <sup>, es el que me genera el problema de windows, pero mientras no lo use, no hay problemas de ningún tipo.

gracias por la librería, ya tengo una tablita con las palabras de html y las he puesto a funcionar en pango. muy interesante lo que se puede hacer. me doy cuenta que puedo usar cualquier fuente que tenga instalada ¿vd? . si no la tengo instalada (me refiero al portar un juego y llevarlo a otra pc), tendría que instalarla primero ¿vd?

:) Buen trabajo con la librería. está muy padre
Title: Re: Pango
Post by: josebita on January 16, 2009, 05:47:42 PM
Claro, tiene que estar instalada, de todas formas, hay tablas de sustitución: si no se encuentra una fuente a veces puede sustitiurla por otra.
Title: Re: Pango
Post by: josebita on February 23, 2009, 01:17:01 PM
Hola a todos.

Ya he acabado mis exámenes y me he vuelto a poner con esto. He hecho un instalador para windows que simplifica bastante las cosas. Espero que os sea útil, está en el megaupload:
http://www.megaupload.com/?d=WT84EXF6

Cualquier comentario, ya sabeis.
Title: Re: Pango
Post by: Prg on March 03, 2009, 10:12:39 PM
hola josebita, estoy preparando el tool del que te había comentado, pero no encuentro cómo modificar el tamaño del texto, sólo me funciona con "small" (un tamaño pequeño) y "xx-large" (uno grande), pero no se qué sintaxis o cómo poner otros valores para el size.

también: cómo hago para que el fondo sea transparente, ya que hasta ahora el fondo es negro.

:)
Title: Re: Pango
Post by: josebita on March 04, 2009, 05:21:12 PM
Pues debería soportar todo lo que viene aquí:
http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html

Lo del fondo transparente, luego lo miro, que no me acuerdo.
Title: Re: Pango
Post by: Prg on March 04, 2009, 07:19:54 PM
sobre el fondo transparente, en 32 b cuando pongo negro (o background="#000000") es negro, y en 16 b fondo negro es transparente con un poco de basura alrededor de las letras.
Title: Re: Pango
Post by: SplinterGU on March 04, 2009, 07:32:22 PM
Quote from: Prg on March 04, 2009, 07:19:54 PM
sobre el fondo transparente, en 32 b cuando pongo negro (o background="#000000") es negro, y en 16 b fondo negro es transparente con un poco de basura alrededor de las letras.

es correcto, lamentablemente asi es en 16 bits...
Title: Re: Pango
Post by: josebita on March 05, 2009, 02:51:27 PM
Ando un poquito liado, voy a intentar verlo esta tarde/noche, pero no prometo nada.
Puede que el problema venga de que esta versión de pango es un poco vieja, puedo intentar compilar una un poquito más nueva, a ver qué sale.
Title: Re: Pango
Post by: Prg on March 05, 2009, 03:47:25 PM
:) Comprendo, no te preocupes,en el último de los casos pues hago una lista de los caracteres en png, y que el usuario la edite y la cargue con el fpg editor para hacer la fuente, a menos que el fondo lo quiera de color  ;) .
Title: Re: Pango
Post by: josebita on March 05, 2009, 11:37:31 PM
Hola Prg.
A ver, he conseguido compilar la librería (nada fácil, hay que parchear un montón de cosas) con las últimas versiones de las dependencias. Me funciona cambiar el tamaño, dejo un screenshot con el mismo texto renderizado a tamaño "large" y "x-large".
Si no te funciona eso con el instalador que ya existe, puedo intentar hacer otro con las nuevas librerías, que supongo que corregirán más fallos. ¿Qué opinas?.
(http://lh4.ggpht.com/_RDT1BQDk_sQ/SbBg8-W0eyI/AAAAAAAAIZU/ktKHCD_J3iM/s400/new-pango.png)


PD: Me voy a sobar, mañana intento mirar si lo del fondo tiene arreglo, ok?
Title: Re: Pango
Post by: Prg on March 06, 2009, 01:53:32 AM
hola, lo de el tamaño me funciona perfecto, ya aprendí, lo del fondo transparente, estoy en eso, no se que puede ser, quizá no sea la pango, luego te digo. saludos.
Title: Re: Pango
Post by: Prg on March 06, 2009, 03:16:42 AM
hola, para hacer el backgroun transparente, simplemente no pongo nada en la cadena a renderizar que tenga que ver con background=color, y ya esta. es a 32 b, no lo he revisado a otras.ya está solucionado todo. si quieres probar lo que hice, puedes pasarte por el post del editor, y descargar la nueva versión, y el tool del último mensaje, que es el que usa la pango, introduces el tool en la carpeta del fpg editor y listo, debe funcionar. nos vemos
  ;)
Title: Re: Pango
Post by: josebita on March 06, 2009, 12:12:39 PM
Me alegro de que te funcione :). Ahora mismo estoy en Ubuntu, pero después de comer me lo miro en un XP.
Title: Re: Pango
Post by: Prg on March 06, 2009, 05:03:05 PM
no te preocupes, si la pango funciona en ubuntu, el tool también :)
Title: Re: Pango
Post by: josebita on March 06, 2009, 08:51:13 PM
La verdad es que hacerla funcionar en linux es bastante más fácil que en windows (viene de linux).

De todas formas, estoy preparando una pequeñita sorpresita a cuenta de esto, a ver si mañana lo puedo anunciar. :)
Title: Re: Pango
Post by: Prg on April 29, 2009, 09:35:20 PM
hola amigo, disculpa la pregunta, pero ¿hay alguna forma de saber las fuentes instaladas, para usarlas con pango?
es para crear una lista de las fuentes disponibles y usarla en el editor de fuentes que viene con el editor fpg, (estoy remodelando el editor de fuentes y quería agregar esto).
Title: Re: Pango
Post by: josebita on April 30, 2009, 11:06:03 AM
Pues no lo veo fácil. En mi binding no está, seguro. Pero quizás pango sí que tenga esa opción, no lo sé. No está muy a la vista en la referencia de Pango.

Lo que si que hay es un fichero en formato texto con la lista de fuentes que se crea durante la instalación del paquete.
El instalador de Pango para windows saca una lista (es la ventanita de ms-dos que se abre al instalar y tarda un rato en cerrarse) en c:\Program Files\Pango-bgd\etc\fonts\.fonts.cache-1 pero en un windows de 64 bits el ficherillo está en C:\Program Files (x86)\Pango-bgd\etc\fonts\.fonts.cache-1
Para saber dónde está desde código bennu, usa:
[code language="bennu"]path=getenv("ProgramFiles")+"/Pango-bgd/etc/fonts/.fonts.cache-1";[/code]
donde path es un string, claro.

En linux, el fichero está en otro sitio, en cuanto reinicie, actualizo y te cuento, que estoy en windows.
Title: Re: Pango
Post by: Prg on April 30, 2009, 02:47:46 PM
:) acavo de ver el fichero... creo que en windows sería suficiente con revisar la carpeta c:/windows/fontsy con glob(*.*)  recoger los nombres...
para linux y windows 64 necesito revisar... me podrías pasar el archivo de linux por favor (el archivo: ".fonts.cache-1") ?  :) para revisar dónde puedo encontrar las fuentes

por todo, muchas gracias :)
Title: Re: Pango
Post by: josebita on May 02, 2009, 12:42:32 AM
Pues no soy capaz de encontrar el fichero en linux y no tengo claro cómo hacerlo.
Las fuentes suelen estar en /usr/share/fonts y en sus subdirectorios (ni siquiera están en un único subdirectorio). Sé que no es de mucha ayuda, pero no soy capaz de encontrar una mejor forma de hacerlo...

En win64, seguro que están en getenv(WINDIR)+"/fonts" (mejor si lees la variable WINDIR con getenv en lugar de asumir que es c:/windows).
Title: Re: Pango
Post by: Prg on May 03, 2009, 02:55:07 AM
:) gracias, revisaré la forma de cargarlas,

lo que me has dicho me ha ayudado mucho amigo, gracias :)