Ver la versión completa : Lector de textos - version *muy* preliminar
buenas,
estoy liado con un lector de textos, que por ahora no le llega a la suela de los zapatos al de GPH, pero por lo menos muestra las tildes y caracteres españoles [wei4] [wei4]
Es una version rapida y muy preliminar. Por ahora no tiene selector de archivos, se tiene que llamar por linea de comandos de la forma:
reader archivo.txt
R y L pasan a la siguiente y anterior página, respectivamente, y START sale.
Por ahora tiene un monton de fallos, que yo sepa:
- Solo muestra bien los textos guardados con codificación ISO8859-15 (la española), con los unicode salen caracteres raros.
- Los tabuladores los muestra como un rectangulo rojo. Será cuestión de sustituirlos por un número de espacios.
- El algoritmo de ajuste de lineas es cutre como el solo (lo he hecho yo... :rolleyes:). Por ejemplo, si una palabra es más larga que la pantalla, no se corta y no se ve entera
Aunque está muy muy verde, más o menos es usable (más bien menos que más) y lo pongo para aceptar sugerencias :brindis:
En mis planes están:
- Cambiar el sistema de ajuste de lineas y añadir justificado de márgenes (Alguien conoce o sabe de donde puedo sacar un algoritmo para eso? por eso de no reinventar la rueda)
- Selector de archivos
- Configuración: fuente, tamaño, colores y codificación de caracteres.
- Marcadores
- Mejorar el desplazamiento
Lo he probado con un archivo grande, un libro de unas 300 páginas impreso) y va razonablemente bien, no tarda más de 2 segundos en mostrarlo, teniendo en cuenta que antes de mostrar nada lee el fichero, lo mete entero en memoria y calcula donde van los saltos de línea.
Bueno, seguire trabajando en el, pero si mientras alguien tiene alguna sugerencia, aquí estoy.
Saludos
edit: no lo puedo adjuntar por el tamaño, asi que lo dejo en yousendit:
http://s50.yousendit.com/d.aspx?id=08W1KP8MIW0EO2P9JP626EQKL7
Solo posteo para desearte mucha suerte con tu pequeño proyecto.
Animo! :)
Suerte!
Este proyecto es suena muy interesante!
Wild[Kyo]
22/02/2006, 04:36
Si quieres lo subo a la Zona de Descargas aunque sea una "beta".
Un saludo!
']Si quieres lo subo a la Zona de Descargas aunque sea una "beta".
Me parece bien :brindis:
Wild[Kyo]
22/02/2006, 04:49
Me parece bien :brindis:
Pues ahora mismo te lo subo. ¿Que nombre le pongo a la obra? ^^
Yo le habia puesto reader2x en un alarde de originalidad. A falta de otro mejor puede valer ese ;)
gracias! un saludo
Por ahora tiene un monton de fallos, que yo sepa:
- Solo muestra bien los textos guardados con codificación ISO8859-15 (la española), con los unicode salen caracteres raros.Puedes usar iconv para traducir de un formato a otro. Yo estoy usando eso en el código para la próxima versión del selector, y convierte de UTF-8 a ISO8895-15 sin problemas (para español). Por cierto, y barriendo para casa, podrías añadirle también soporte para español Mac (Mac-Roman)
- Cambiar el sistema de ajuste de lineas y añadir justificado de márgenes (Alguien conoce o sabe de donde puedo sacar un algoritmo para eso? por eso de no reinventar la rueda)¿Quizás troff y groff (http://www.gnu.org/software/groff/)? Aunque igual son demasiado tochos para el uso que vas a darle.
- Selector de archivosPor el momento, voy a ver si te preparo una configuración para usar el mío ;)
Wild[Kyo]
22/02/2006, 05:02
http://www.gp32spain.com/foros/downloads.php?do=file&id=460
Ahi te lo dejo.
Si ves algo que no te gusta, avisa!! :D
Gracias por la aplicación y ánimo compañero!! :D
Suerte con tu proyecto ^_^
pues gracias de nuevo, me gusta ;)
En cuanto haga alguna mejora lo pondré por aquí. Saludos
Aquí está lo neceario para utilizar el Selector (http://www.gp32spain.com/foros/downloads.php?do=file&id=145) para cargar el .txt que se quiera.
Para usarlo, poner en el mismo directorio de la SD:
reader.gpu y fonts (del paquete del reader2x)
selector (de aquí (http://www.gp32spain.com/foros/downloads.php?do=file&id=145)])
Reader2X.gpe, reader2x_config y fondo.png (del .zip que adjunto)
Y entonces lanzar, desde el menú de juegos, Reader2X; elegir un .txt de la SD y listo.
Puedes usar iconv para traducir de un formato a otro. Yo estoy usando eso en el código para la próxima versión del selector, y convierte de UTF-8 a ISO8895-15 sin problemas (para español). Por cierto, y barriendo para casa, podrías añadirle también soporte para español Mac (Mac-Roman)
Gracias, no lo conocía pero me viene de perlas. Lo del Mac lo tendré en cuenta también ;)
¿Quizás troff y groff (http://www.gnu.org/software/groff/)? Aunque igual son demasiado tochos para el uso que vas a darle.
Tengo que mirar bien la documentacion pq no me entero muy bien de lo que hacen.
Por el momento, voy a ver si te preparo una configuración para usar el mío ;)
Perfecto! así es mucho más practco :brindis:
Un saludo
Gracias, no lo conocía pero me viene de perlas. Lo del Mac lo tendré en cuenta también ;)Si quieres, te puedo poner aquí el trozo de código que uso yo, son unas pocas líneas, para convertir de UTF-8 a ISO-8859-15
Tengo que mirar bien la documentacion pq no me entero muy bien de lo que hacen.Los utilizan varios programas para muchas cosas, pero una de ellas es precisamente, que al ver las páginas del manual (man) estas se ajusten al tamaño que tengas de consola en ese momento, sea del ancho que sea.
Si quieres, te puedo poner aquí el trozo de código que uso yo, son unas pocas líneas, para convertir de UTF-8 a ISO-8859-15
Pues ponmelo. Lo primero que se me ha ocurrido es convertir cualquier texto a unicode y asi SDL_ttf lo debe mostrar sin problemas. Con iconv se podrá, pero si hay alguna forma más sencilla, pues mejor ;)
Los utilizan varios programas para muchas cosas, pero una de ellas es precisamente, que al ver las páginas del manual (man) estas se ajusten al tamaño que tengas de consola en ese momento, sea del ancho que sea.
Eso esta muy bien, lo que tengo que ver es si lo hace también con fuentes de ancho variable
Yo estaba programando un lector de texto con soporte de fuentes con antialiasing subpixel, pero lo dejé por imposible porque soy un coder pésimo (y apenas tengo tiempo) ¿Crees que sería fácil soportar fuentes bitmap en el lector? Asi, con un pack de fuentes subpixel tendríamos un lector de muerte que se vería el doble de bien :D
Claro, mi intención es soportar fuentes bitmap, así que con prepararlas para antialiasing subpixel es suficiente, ya que solo se trata de hacer un blit caracter a caracter. Lo que no tengo ni idea es con que programa o de que manera se puede preparar un fuente así... sabes alguno???
Mañana voy unos de vacaciones y cuando vuelva dentro de unos días le meteré mano otra vez.
Un saludo
Pues ponmelo. Lo primero que se me ha ocurrido es convertir cualquier texto a unicode y asi SDL_ttf lo debe mostrar sin problemas. Con iconv se podrá, pero si hay alguna forma más sencilla, pues mejor ;)Llevo un par de días con algo de lío. Aprovecho este momento para ponerte el ejemplo de uso de iconv:
#include <string.h>
#include <iconv.h>
char nombreutf[255]; /*Aqui se guarda la cadena a convertir, le pongo
un tamaño suficiente para las cadenas que yo uso*/
char nombrembyte[255]; /*Aqui se guardara la cadena de texto convertida,
le pongo un tamaño suficiente para las cadenas que yo uso*/
iconv_t cd; /*Utilizado por iconv*/
size_t longitud; /*Variable que guarda la longitud de la cadena a convertir*/
char *inptr; /*Este puntero señalara a la cadena original*/
char *outptr; /*Este puntero señalara la cadnea convertida*/
/*Antes de llegar aqui obtendriamos el texto en formato UTF-8 y lo copiariamos en nombreutf*/
longitud=strlen(nombreutf); /*Calculamos la longitud de la cadena a convertir*/
inptr=nombreutf; /*Definimos el puntero a la cadena en formato UTF-8*/
/*Convertimos los datos del nombre en UTF-8 a ISO-8859-1*/
cd = iconv_open ("ISO-8859-1", "UTF-8");
outptr=nombrembyte;
iconv (cd, &inptr, &longitud, &outptr, &longitud);
iconv_close (cd);
/*Ahora tenemos en nombrembyte la cadena de texto en formato ISO-8859-1,
ya podemos hacer lo que sea con ella*/Para convertir en sentido contrario, cambia la definición al llamar a iconv_open. Las posibilidades varían según el sistema. Como el firmware actual no incluye la versión de comandos de iconv, tendrás que usar algo de prueba y error. Algunas posiblidades ¡que podrían funcionar, son las siguientes:
ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4, ANSI_X3.110-1983, ANSI_X3.110,
ASCII, ASMO-708, ASMO_449, BALTIC, BIG-5, BIGFIVE, BS_4730, CA, CN-BIG5, CN-GB,
CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273, CP274, CP275, CP278, CP280,
CP500, CP737, CP775, CP813, CP819, CP850, CP851, CP852, CP855, CP856, CP857,
CSISO14JISC6220RO, CSISO15ITALIAN, CSISO16PORTUGESE, CSISO17SPANISH,
CSISO69FRENCH, CSISO84PORTUGUESE2, CSISO85SPANISH2, CSISO86HUNGARIAN,
CSISOLATIN1, CSISOLATIN2, CSISOLATIN3, CSISOLATIN4, CSISOLATIN5, CSISOLATIN6,
CSPC8CODEPAGE437, CSPC775BALTIC, CSPC850MULTILINGUAL, CSPC862LATINHEBREW,
CSPCP852, CSSHIFTJIS, CSUCS4, CSUNICODE, CUBA, CWI-2, CWI, CYRILLIC, DE,
EBCDIC-ES-S, EBCDIC-ES, EBCDIC-FI-SE-A, EBCDIC-FI-SE, EBCDIC-FR,
ECMACYRILLIC, ELOT_928, ES, ES2, EUC-CN, EUC-JISX0213, EUC-JP, EUC-KR,
EUC-TW, EUCCN, EUCJP, EUCKR, EUCTW, FI, FR, GB, GB2312, GB13000, GB18030,
IBM-930, IBM-932, IBM-933, IBM-935, IBM-937, IBM-939, IBM-943, IBM-1046,
ISO-2022-JP, ISO-2022-KR, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4,
ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16, ISO-10646,
ISO-10646/UCS2, ISO-10646/UCS4, ISO-10646/UTF-8, ISO-10646/UTF8, ISO-CELTIC,
ISO-IR-197, ISO-IR-199, ISO-IR-203, ISO-IR-209, ISO-IR-226, ISO646-CA,
ISO646-CA2, ISO646-CN, ISO646-CU, ISO646-DE, ISO646-DK, ISO646-ES,
ISO8859-1, ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5, ISO8859-6, ISO8859-7,
ISO8859-8, ISO8859-9, ISO8859-10, ISO8859-11, ISO8859-13, ISO8859-14,
ISO8859-15, ISO8859-16, ISO88591, ISO88592, ISO88593, ISO88594, ISO88595,
ISO88596, ISO88597, ISO88598, ISO88599, ISO885910, ISO885911, ISO885913,
ISO_8859-1:1987, ISO_8859-2, ISO_8859-2:1987, ISO_8859-3, ISO_8859-3:1988,
ISO_8859-4, ISO_8859-4:1988, ISO_8859-5, ISO_8859-5:1988, ISO_8859-6,
ISO_8859-6:1987, ISO_8859-7, ISO_8859-7:1987, ISO_8859-8, ISO_8859-8:1988,
ISO_8859-9, ISO_8859-9:1989, ISO_8859-10, ISO_8859-10:1992, ISO_8859-14,
ISO_8859-14:1998, ISO_8859-15:1998, ISO_9036, ISO_10367-BOX, ISO_10367BOX,
L10, LATIN-GREEK-1, LATIN-GREEK, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
LATIN6, LATIN7, LATIN8, LATIN10, LATINGREEK, LATINGREEK1, MAC-CYRILLIC,
MAC-IS, MAC-SAMI, MAC-UK, MAC, MACCYRILLIC, MACINTOSH, MACIS, MACUK,
MACUKRAINIAN, MS-ANSI, MS-ARAB, MS-CYRL, MS-EE, MS-GREEK, MS-HEBR,
MS-MAC-CYRILLIC, MS-TURK, MSCP949, MSCP1361, MSMACCYRILLIC, MSZ_7795.3,
OSF10020388, OSF10020396, OSF10020402, OSF10020417, PT, PT2, R8, ROMAN8,
RUSCII, SE, SE2, SEN_850200_B, SEN_850200_C, SHIFT-JIS, SHIFT_JIS,
UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK, UNICODE,
UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16, UTF-16BE,
WINDOWS-1250, WINDOWS-1251, WINDOWS-1252, WINDOWS-1253, WINDOWS-1254,
WINDOWS-1255, WINDOWS-1256, WINDOWS-1257, WINDOWS-1258, WINSAMI2, etc...:D
Puess, hay varios métodos para generar fuentes con subpixel antialiasing, yo estuve probando un método en photoshop, porque el free & clear no me dejaba generar fuentes más que en fondo claro, y funciona.
Si quieres saber más sobre esa tecnología AQUI (http://www.grc.com/ctwhat.htm) tienes todo lo que jamás podrías necesitar, incluso un programita que genera texto con subpixel.
De todas formas, si algún día necesitas que te genere un set, no dudes en pedírmelo, que lo haré encantado :D
Aquí está lo neceario para utilizar el Selector (http://www.gp32spain.com/foros/downloads.php?do=file&id=145) para cargar el .txt que se quiera.
Para usarlo, poner en el mismo directorio de la SD:
reader.gpu y fonts (del paquete del reader2x)
selector (de aquí (http://www.gp32spain.com/foros/downloads.php?do=file&id=145)])
Reader2X.gpe, reader2x_config y fondo.png (del .zip que adjunto)
Y entonces lanzar, desde el menú de juegos, Reader2X; elegir un .txt de la SD y listo.
Actualizado el archivo.
No se si no atino a poner los archivos donde debo, pero al cargar el selector se me queda la pantalla fijo en negro, porque puede ser?
No se si no atino a poner los archivos donde debo, pero al cargar el selector se me queda la pantalla fijo en negro, porque puede ser?¿Al cargar el selector?¿Te pasa según lanzas el archivo Reader2X.gpe o después de haber elegido un texto para cargar?
El archivo Reader2X.gpe que yo mencionaba busca en su mismo directorio lo siguiente:
selector
reader2x_config
fondo.png
reader.gpu
directorio fonts
Si retocas el archivo Reader2X.gpe con un editor de Windows, seguramente guarde mal el formato y esa es la causa de la pantalla en negro.
Si retocas el archivo reader2x_config con un editor de Windows, seguramente guarde mal el formato y esa es la causa de la pantalla en negro
Si no has retocado nada:
de no encontrar un archivo reader2x_config y un archivo selector -> Pantalla en negro
de no encontrar fondo.png -> Un mensaje de error con un marco rojo
de no encontrar reader.gpu o el directorio fonts, tras elegir un archivo en el selector -> Pantalla en negro
No se si no atino a poner los archivos donde debo, pero al cargar el selector se me queda la pantalla fijo en negro, porque puede ser?
Tiene que estar todo en la misma carpeta, los archivos ejecutables, de configuración y la carpeta fonts. De todas formas, si falla ahora es mas o menos normal ya que es una version muy muy beta y tiene muchos fallos.
Zenzuke, gracias por toda la información. Ahora tengo un poco aparcado el tema de las fuentes pq estoy liado con la gui, selector, menu, opciones y todo eso, pero en cuanto lo acabe le metere mano a las fuentes. Seguramente tendre que echar mano de ti para generarlas, ya te lo pediré por aquí en unos días :brindis:
Kounch, muchas gracias tambien por esa información, me está siendo muy util.
En pocos días subiré una versión nueva, con justificado de márgenes y un gui chulo que me estoy currando [wei4]
saludos!
Mucho animo con el programa Schan , no sabes lo mucho q usare tu programa , mi antigua gp32 creo q casi para lo q mas lo usaba era para leer libros, seguro q voy a disfrutar muchisimo de tu programa :D
< - >
Weno ya he dado un pequeño paso, ahora me sale la pantalla en negro pero por lo menos me sale un cursor en la parte superior izquierda :P :)
Weno ya he dado un pequeño paso, ahora me sale la pantalla en negro pero por lo menos me sale un cursor en la parte superior izquierda :P :)
Gracias por los ánimos :)
El cursor que sale es señal de que el programa ha arrancado (se me olvidó desactivarlo). ¿Lo has arrancado directamente o a traves del selector o linea de comandos? Es que si se abre directamente no hace nada, no tiene aun selector de archivos. Si lo has ejecutado con el selector debería mostrar el cursor y unos segundos después (2 o 3) el texto. Prueba con diferentes archivos de texto, que puede que algun caracter "raro" o una palabra demasiado larga lo deje colgado, u otro fallo del que aun no me haya dado cuenta..
Cambiando de tema, Zenzuke, me podrías hacer una fuente con subpixel aliasing? Que no tengo el photoshop y no encuentro ningun programa para linux que lo haga... Aunque sea una para probar, que ya tengo el soporte de fuentes bitmap listo (y el de truetype eliminado, que es mucho follon mantener los dos a la vez).
El formato que necesito es como la imagen que adjunto (está hecha con aliasing normal y corriente). Las lineas azules de separacion no hacen falta, eso lo puedo hacer yo facilmente, con que estén todos los caracteres sobre un fondo plano vale. Solo es importante que las letras estén separadas unas de otras. Los caracteres pueden ir en cualquier orden y ser los que quieras, aqune la secuencia debería ser la misma para todas las fuentes. La que estoy usando ahora (que podría cambiar si veo que falta alguno, aunque creo que no) es esta, que puedes copiarla y pegarla.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz1234567890ÑñÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛáéíóúàèìòùäëïöüâ êîôû.,;:\/'"·$%&ºª_-+*=¡!¿?()[]{}<>
Aun me faltan muchas cosas pero en cuanto tenga una version funcional y usable la pongo.
Saludos!
Cambiando de tema, Zenzuke, me podrías hacer una fuente con subpixel aliasing? Que no tengo el photoshop y no encuentro ningun programa para linux que lo haga... No se si estaré hablando de más pero ¿te podría servir el GIMP?
http://www.gimp.org
El GIMP lo uso de vez en cuando, pero el antialiasing que aplica a a las fuentes es el tradicional, no el subpixel, o si hay alguna forma de hacerlo no la encuentro :(
Schan, desgraciadamente mi ordenador ha reventado y estoy sin poder hacer nada, pero en cuanto pueda te genero un set. De todas formas, cualquiera puede hacerlo con el free & clear o activando el subpixel antialiasing en linux o en windows y capturando la pantalla :D
Si se quiere hacer sobre fondo negro solo hay que capturar la pantalla e invertir LA LUMINANCIA de la imágen (no invirtais directamente, porque también invierte el color y te cargas el orden de los subpixels y queda fatal).
Espero poder arreglar pronto mi ordenador de todas formas. Estaba deseando tener una apli justo como la estas haciendo tu, tio :D
Bueno, ahi va una prueba. No se si funcionará porque no dispongo de un monitor LCD para probar, pero deberia rular.
gracias!
ya lo he probado y se ve muy bien, se nota la diferencia.
veo que has arreglado el ordenador pronto, 15 minutos! [wei5]
------
Um pues creo que no, en mi monitor se veia bien pero en la gp2x parece que tiene los pixeles en otro orden (bgr?) Voy a probar el free & clear a ver que tal
No arreglé el ordenador, usé el del curro :D
Cosa ke para hacer una chapucilla de estas va way, pero para cosas más complicadas, jode mogollón.
Por cierto, SCHAN, usarás parte de los avances de Hermes en tu lector (parte del código, al menos). Esque la funcionalidad del lector de hermes me encanta, pero cómo se ve la fuente y el color claro de fondo se combinan para que no pueda leer agusto en él.
Podriais poneros de acuerdo para no inventar la rueda muchas veces, entre los dos :D
Oh, pues lo siento por tu ordenador :(
El lector de Hermes me gusta mucho, es muy practico, sobre todo me ha gustado lo de las marcas para señalar capítulos, por ejemplo. También he estado mirando el código aunque aprovecharlo me parece muy dificil :S porque son formas de programar demasiado distintas, el lo ha hecho en c con la minimal lib y yo estoy con c++, las SDL y un monton de clases. Puedo "copiar" las ideas, eso sí, pero adaptar el código sería demasiado dificil. Por ejemplo, para guardar la posición de lectura él puede guardar el número de página, pero yo al permitir fuentes distintas las páginas pueden cambiar, así que tendré que hacerlo de otra forma.
La verdad que mi código es infinitamente menos eficiente, aunque mi intención también es distinta, estoy buscando un diseño modular abierto a ampliaciones, estoy desarrollando a la vez un sistema GUI que se pueda aprovechar en otras aplicaciones, en fin, bastante mas tocho aunque yo me divierto haciendolo xD
Por cierto, me parece que sacaré una version sin el GUI terminado, pq cada vez se me ocurren mas ideas y al final nunca termino. Aquí pongo un mockup rápido sobre lo como será más o menos.
Saludos
Es una preciosidad, ya estoy deseando que lo acabes :D
Por cierto, si quieres más fuentes... ya sabes donde pedirlas. Sobre todo si quieres alguna fuente en particular :D
hermes PS2R
07/03/2006, 17:08
Oh, pues lo siento por tu ordenador :(
El lector de Hermes me gusta mucho, es muy practico, sobre todo me ha gustado lo de las marcas para señalar capítulos, por ejemplo. También he estado mirando el código aunque aprovecharlo me parece muy dificil :S porque son formas de programar demasiado distintas, el lo ha hecho en c con la minimal lib y yo estoy con c++, las SDL y un monton de clases. Puedo "copiar" las ideas, eso sí, pero adaptar el código sería demasiado dificil. Por ejemplo, para guardar la posición de lectura él puede guardar el número de página, pero yo al permitir fuentes distintas las páginas pueden cambiar, así que tendré que hacerlo de otra forma.
La verdad que mi código es infinitamente menos eficiente, aunque mi intención también es distinta, estoy buscando un diseño modular abierto a ampliaciones, estoy desarrollando a la vez un sistema GUI que se pueda aprovechar en otras aplicaciones, en fin, bastante mas tocho aunque yo me divierto haciendolo xD
Por cierto, me parece que sacaré una version sin el GUI terminado, pq cada vez se me ocurren mas ideas y al final nunca termino. Aquí pongo un mockup rápido sobre lo como será más o menos.
Saludos
Buenas,
no tenía conocimiento de este hilo :)
Mi visor de textos, se basa en uso muy concreto y he evitado buscar caminos oscuros... pues pienso, por un lado, que la pantalla de GP2X no permite demasiadas florituras (salvo que usemos un escritorio virtual) y lo que yo quería cubrir es la necesidad de un lector de textos que utilice una fuente en español, permita una lectura facil y que no fatigue la vista en exceso (leer texto de una pantalla que emite luz, no es algo muy cómodo para la vista)
El editor que he hecho, se divide en dos partes principales:
1) la funcion que analiza todo el texto y asigna los diferenntes indices de pagina y marca (para salto de capítulo)
2) la función que visualiza una determinada página
En ambas la clave está en una funcion que me devuelve la longitud de una palabra. Dicha longitud tiene un limite natural: las palabras se parten si tienen una longitud mayor de la que se puede presentar en pantalla.
Yo estoy utilizando un ancho y alto fijos: los caracteres del bitmap son de 16x16 puntos, pero la escala correcta para visualizarlos, es de 8x16.
Estas medidas y cierto espacio que reservo en pantalla para mostrar el numero de pagina, etc, me permiten visualizar 40 caracteres por linea y un maximo de 14 lineas.
Por supuesto: todo el programa trabaja bajo esos numeros fijos y si se quieren utilizar fuentes de distintos tamaños, se debería cambiar el planteamiento del programa.
Sin embargo... no es algo que sea demasiado dificil, pero si que debería estudiarse con profundidad: el tamaño minimo de letra, no debería ser menor al que yo uso. De hecho, es una autentico milagro que la fuente que estoy usando sea legible al convertirla a 8x16 y es muy necesario ese tamaño para disponer de un minimo de 40 caracteres.
Si hacemos la letra mas grande, por sí sola será mas facil de leer, pero al mismo tiempo, hará mas dificil la lectura y comprensión del texto, pues se visualizará menos texto en pantalla. Con 16 pixeles de ancho, solo podremos meter 20 caracteres, lo que es un problema, pues cuando ponemos un título en un editor normal, se suele usar un tipo de letra mayor y al mismo tiempo, se suelen añadir funciones de centrado, etc
Ese es otro de los problemas: si se trata de adoptar otros formatos, hay que buscar la forma de que si nos pide tal tipo de letra y de tal tamaño, proporcionar una letra alternativa, que quede bien al visualizarse en la pantalla y al mismo tiempo, que no rompa el formato del texto que queremos visualizar.
Eso solo es posible si hacemos una de estas dos cosas:
-Usar un escritorio mayor, de por ejemplo, 640x480 y luego hacer un scaling a 320x240. Lo cual no es aconsejable, pues será muy dificil distinguir el texto y el scaling por hard no es muy bueno que digamos para estas reducciones de tamaños.
-Usar un escritorio mayor e ir desplazando la ventana para visualizar una porción de texto. Esto es valido si lo que queremos es hacer uso de un documento que de otra forma, no sería posible de utilizar y no nos importa la incomodidad. Desde luego, yo no lo veo apto para la lectura de una novela o similar, pues los ojos se incomodarán en seguida si tenemos que ir desplazando lateralmente la pantalla para poder leer la otra mitad, cada pocas palabras.
Y luego lo peor de todo, es la eficiencia, que se visualice suficientemente rapido el texto, que no chupe demasiadas baterías el programa y evitar los diferentes bugs.
El problema, tal y como yo lo veo, es que despues de darte una buena currada, quizá tu programa tenga un uso demasiado esporádico incluso para tí :rolleyes:. Lo importante de estas utilidades, es que les puedas dar un uso frecuente y cómodo y si tienes que ir desplazando ventanas para leer la otra mitad de la pantalla, yo creo que lo acabarás odiando.
Mi visor de textos tiene un ligero defecto, aunque podria ser corregido con relativa facilidad: que no es capaz de mostrar imagenes. Con esa opción se completaría la versatilidad a la hora de portar un documento, aunque obviamente, necesitaría de adaptaciones exclusivas, no un formato 'estandar' pero ¿es que hay algun formato estandar que se adapte facilmente a la GP2X que no sea un TXT?
En fin, espero que estas reflexiones que os dejo aquí, os sean utiles para enfocar el problema de hacer un editor de textos de la forma cómo lo habeis pensado.
Hombre, Hermes, pues entonces ya se cuál es el problema que estoy teniendo con tu lector de textos :D y es que estas usando una fuente bitmap escalada, y eso es terrible a la hora de dar la máxima legibilidad. Si quieres, puedo conseguirte fuentes pixel de todos los tamaños que se te ocurra imaginar que estan hechas ya directamente a esa resolución y por tanto, no necesitan escalado ninguno y la legibilidad (y lo agradable que se ve la fuente) gana una barbaridad.
Por lo demás, estoy de acuerdo en casi todos los puntos que expones, y me da la impresión de que te lo has pensado muy bien todo ya :D
Ya te digo que tu lector de textos me parece genial excepto porque no acabo de ver clara la fuente.
Edit: Mira, he estado mirando y, tengo aqui algunas fuentes perfectamente legibles de tamaños tan diminutos como 5x9 pixels. Te puedo pasar una selección.
Cheers :brindis:
hola,
hermes, la verdad es que tanto tu lector como tus reflexiones me parecen muy interesantes. Como bien dices, la gp2x no es el dispositivo ideal para leer texto, sobre todo por el tamaño. Igual que tú, me vino la idea de hacer esta apliación para poder leer muchos ebooks que tengo y no tener que imprimirlos.
Ya he comentad antes que tu programa me ha gustado mucho, es simple y va al grano, lo que lo hace muy práctico. Sin embargo lo que yo estoy intentando es dar más posibilidades de personalización, aunque sea a costa de sacrificar eficiencia y velocidad.
Es cuestión de gustos, pero a mi me resulta mucho más cómodo leer una fuente de ancho variable que de ancho fijo y eso ya obliga a cambiar casi por completo el planteamiento. Además las fuentes de ancho fijo permiten aprovechar mejor el espacio y se pueden meter más caracteres en la misma linea sin tener que reducir el tamaño.
Todo esto por supuesto implica mucho más uso del procesador y la memoria. Por ejemplo, un texto de unos 300kb (impreso son unas 250 páginas) consume unos 5MB de ram bajo linux (en la gp2x me imagino que será mas o menos lo mismo). Es una burrada pero es algo manejable, no creo que nadie vaya a abrir un archivo tan grande como para agotar la memoria.
Por ahora estoy haciendo todos los cálculos al abrir el archivo. Con todos los cálculos me refiero incluso a calcular y almacenar la posición de CADA caracter (para esto me he basado en el patrón flyweight de GOF), de forma que se "abusa" un poco de la memoria pero evita tener que recalcular todo cada vez que se dibuje. El mismo texto de pruebas de 300kb tarda 1 segundo o 2 en abrir, que es mucho pero tampoco lo veo excesivo.
Como prueba dejo un par de capturas, la de la derecha es con la fuente que me pasó zenzuke, con antialias subpixel. A lo mejor en el monitor no se ve muy bien pero en la gp2x se ve de lujo. Un poco borrosa si lo miras muy de cerca pero a una distancia normal no se nota. La de la izquierda es otra fuente más pequeña con antialias "normal". A mi personalmente me gustan más las fuentes con serif (como la de la izquierda), aunque creo que un fondo oscuro y unas letras no muy brillantes cansa menos la vista.
Por cierto, zenzuke, he intercambiado los canales R y B de la imagen de la fuente, porque en la gp2x los subpixeles van en orden BGR. Lo he comprobado a base de lupa :D
En las dos capturas está activado el justificado. Con letras más grandes da resultados muy malos, ya que las palabras se ven demasiado separadas, aunque con tamaños como estos queda bastante bien. De todas formas se podrá desactivar que, como todo, es cuestión de gustos. También está activada una opción para insertar automáticamente una sangría en la primera línea del párrafo. Tambien es cuestión de gustos pero para mí gana mucha claridad así.
Ah por cierto, lo que dices de un escritorio virtual o escalado hw, estoy de acuerdo contigo, sería horrible.
Bueno, creo que eso es todo... a ver si lo acabo pronto y lo poderis juzgar con vuestros propios ojos [wei4]
un saludo!
BGR? Es curioso ¿eh? Porque yo estuve haciendo pruebas con el orden de los subpixels, y se veian mejor las de orden RGB que las BGR. Aunque puedo estar equivocandome, tb xD
BGR? Es curioso ¿eh? Porque yo estuve haciendo pruebas con el orden de los subpixels, y se veian mejor las de orden RGB que las BGR. Aunque puedo estar equivocandome, tb xD
Zenzuke tienes razón, lo he comprobado y es RGB, el problema es otro, así que perdón por el lío.
Sin embargo creo que la fuente que me pasaste está hecha para pantallas BGR. Me explico, si miras por ejemplo la I, está formada por una linea roja y otra azul a su derecha, que en un patrón RGB quedan separadas mientras que en un patrón BGR quedan juntas. Como se que me explico fatal, si quieres prueba a abrir la misma imagen que me pasaste con el visor de imágenes de la gp2x y a girarla 180 grados, verás la diferencia.
Lo más probable es que me haya equivocado yo al hacer la imágen, no tu al colocarla. La hice sin tener un LCD a mano para probar asi que puede que al invertir los tonos invirtiera sin querer los colores tb.
Edit: De todas formas, no te fies del visor de imágenes de la GP, por lo menos el antiguo no mostraba las imágenes nítidas, y se cargaba el efecto de los subpixels, yo me compilé un ejemplo de SDL para mostrar imágenes, y ahi si que se veia bien.
hermes PS2R
08/03/2006, 01:17
Buenas.
Sobre usar fuentes con ancho variable (al estilo true type), yo mismo puedo hacerlo sobre éste editor de forma facil.
De hecho, la idea que yo tenía al principio era permitir el uso de fuentes externas, que podían ser generadas mediante una utlidad que hizo un 'guiri' en los tiempos del PS2Reality Mediaplayer.
Incluso podria aplicarlo sobre ésta fuente que estoy utilizando: tan solo necesitaría medir el inicio y el final de un caracter y asignar unos pixeles de ancho de modo fijo. Los cambios serian pequeños y el programa trabajaría con la misma eficacia ;)
Zenzuke, la fuente que estoy usando se estrecha automaticamente para crear la fuente de 8x16. Evidentemente, solo se dibujan los pixeles a '1' para que el caracter quede coherente.
No soy muy partidario de aplicar tecnicas subpixel,pero he estado pensando que podría suavizar ciertos detalles mediante un sencillo método. Si eres capaz de proporcionarme una fuente de 8x16 pixeles estaría encantado de añadirsela al programa
Hermes, de lo que yo hablaba era precisamente de que una fuente que se redimensiona automáticamente a un tamaño es una solución quizá no tan óptima como una en la que una persona ha colocado a mano cada uno de los pixels de la fuente para dar una perfecta legibilidad.
Te mando un pequeño pack con varias fuentes pixel para que elijas la que más te guste. Se usan a un tamaño 8 y sin antialiasing de ningun tipo.
Edit: te he hexo un MP para ver aonde te las mando.
hermes PS2R
09/03/2006, 01:18
Hermes, de lo que yo hablaba era precisamente de que una fuente que se redimensiona automáticamente a un tamaño es una solución quizá no tan óptima como una en la que una persona ha colocado a mano cada uno de los pixels de la fuente para dar una perfecta legibilidad.
Te mando un pequeño pack con varias fuentes pixel para que elijas la que más te guste. Se usan a un tamaño 8 y sin antialiasing de ningun tipo.
Edit: te he hexo un MP para ver aonde te las mando.
¿Podrias subirlo como fichero adjunto? Pienso que sería mas util para todos ;)
Ok, subo el adjunto (después de comprobar una por una que todas las fuentes que he metido son gratuitas).
El problema era ese, que las meti a barullo y no me paré a comprobar si habia metido alguna un poco "menos legal".
Edit: Añadido el archivo, manda webox ke no acepte RAR
hermes PS2R
09/03/2006, 03:47
Ok, subo el adjunto (después de comprobar una por una que todas las fuentes que he metido son gratuitas).
El problema era ese, que las meti a barullo y no me paré a comprobar si habia metido alguna un poco "menos legal".
Edit: Añadido el archivo, manda webox ke no acepte RAR
Demonios! me has mandado fuentes ttf! :D
Yo creia que estabamos hablando de fuentes ya capturadas en formato BMP o similar.
Siendo ttf el problema viene en la captura, aunque por ahí tengo que tener todavia el programa 'chapucero' que cree para hacer las capturas de letras. La fuente que yo capturé no es true type y por eso los caracteres aprovechan bien la 'celda'.
De todas formas, ya miraré de forma detenida como proceder (si procedo :D ) porque una fuente con antialising necesita de mas colores.
Nono, son ttf pero de tamaño fijo. No deben llevar antialiasing de ningun tipo, y el tamaño es 8 pixels siempre. De cualquier otra manera, quedarán raras y se verán mal. Son fuentes de las que se usan muchas veces con flash para tamaños pequeños, para mejorar la legibilidad.
Verás que si las pones como yo te digo, a 8 pixels y sin AA son extremadamente pequeñitas y legibles.
Mi visor de textos tiene un ligero defecto, aunque podria ser corregido con relativa facilidad: que no es capaz de mostrar imagenes. Con esa opción se completaría la versatilidad a la hora de portar un documento, aunque obviamente, necesitaría de adaptaciones exclusivas, no un formato 'estandar' pero ¿es que hay algun formato estandar que se adapte facilmente a la GP2X que no sea un TXT?
Sí, el formato RTF, según mi opinión, es ideal para la GP2X.
Hace tiempo lo estuve estudiando bien y me hice un parser, con la ayuda de la documentación, que me permitía traducir el RTF a un formato mío propietario con lo mínimo que consideraba indispensable para la GP32 (fuentes escalables, alineación, tabulación, colores, y puede que imágenes).
La idea era crear un lector de textos que leyera ese formato propietario.
El paso siguiente era incorporar al lector conversores para otros tipos de formato, como por ejemplo el HTML.
Si estais interesados en el parser RTF que hice, me lo decis y lo subiré aquí.
Sí, el formato RTF, según mi opinión, es ideal para la GP2X.
Hace tiempo lo estuve estudiando bien y me hice un parser, con la ayuda de la documentación, que me permitía traducir el RTF a un formato mío propietario con lo mínimo que consideraba indispensable para la GP32 (fuentes escalables, alineación, tabulación, colores, y puede que imágenes).
La idea era crear un lector de textos que leyera ese formato propietario.
El paso siguiente era incorporar al lector conversores para otros tipos de formato, como por ejemplo el HTML.
Si estais interesados en el parser RTF que hice, me lo decis y lo subiré aquí.
La idea me parece muy buena, sobre todo lo de usar un rtf "simplificado". Yo he estado también dandole vueltas y mi lector está planteado para que sea relativamente facil añadir otros formatos además de texto plano, aunque tanto el html como el rtf me parecían complicados, más que nada por la cantidad de fuentes distintas que se necesitaría. Para mi, un formato "ideal" para leer texto (me refiero a novelas u otro tipo de documentos en los que sea util el formateo, ya que para otras cosas el texto plano es suficientemente práctico) en la gp2x tendría que tener:
- Colores: esto es fácil de hacer
- Distintos tamaños: Esto implicaría tener varias fuentes en memoria (includo son SDL_ttf), pero con usar por ejemplo, tres tamaños (normal, grande y pequeño) podría ser suficiente.
- Negrita y cursiva: Igual que el punto anterior, multiplicaría el número de fuentes en memoria, pero teniendo un número limitado y pequeño sería asequible.
- Imágenes: Mostrarlas no sería dificil, el mayor problema lo veo en empotrar las imágenes en el documento.
- Tabla de contenidos y marcas: para navegar rapidamente
Lo que no sé es si merecería la pena tanta complicación. De todas formas me parece una idea muy interesante. Ahora quiero terminar el lector de texto plano, pero más adelante me gustaría intentar algo así, así que lo puedes colgar le echaré un vistazo.
He subido al ftp una versión incompleta pero ya mas o menos funcional. La pega principal es que solo muestra correctamente texto codificado como utf8. La conversión desde otros formatos la tengo casi lista pero estoy teniendo dificultades con iconv y la gp2x. Así que los textos en inglés se verán bien pero los acentos y otros caracteres españoles no :( (por ahora :))
Por lo demás, ya tiene un menu y un selector de archivos. Las opciones y el historial, aunque salgan el menú, no funcionan.
La fuente también se podrá cambiar cuando termine la pantalla de configuración.
El texto se puede desplazar linea a linea con el stick o página a página con L y R.
Además he cambiado algunas cosas que hacen que la carga de texto sea mucho más lenta, aunque espero arreglarlo en la próxima versión.
Bueno como veis aún le queda mucho, pero por lo menos es funcional y da una idea bastante buena de lo que será cuando esté terminado. Si lo probais, pues comentadme que os parece, o cualquier sugerencia.
Un saludo
PD. para entrar al ftp:
FTP: ftp.gp32spain.com
User: public_ftp@gp32spain.com
Password: publico
Está en la carpeta GP2X
Voy a probarlo ahora mismito :D
acabo de subirlo de nuevo. Ya se puede elegir en el selector de archvios la codificación, entre iso8859 (por defecto) y utf8.
Vaya por diox, pues me lo vuelvo a bajar xDD
Por cierto, la GUI es preciosa :D
Estoy haciendo el experimento de cambiar la fuente que viene por defecto por una con subpixel aa a ver ke tal :D
me alegro de que te guste :D
Solo he metido una fuente por las prisas, pero se puede cambiar sustituyendo el archivo fonts/default.bmp. Las que se llama gui_big_font.bmp es la que se usa en la GUI y también se puede cambiar, aunque tiene que ser sin antialiasing. La otra (gui_small_font.bmp) tiene algunos caracteres especiales (una chapuza pero funciona) para representar los botones, así que mejor no tocarla.
La verdad es que con subpixel se ve mejor, la que tiene ahora está demasiado emborronada para mi gusto.
Schan, eso mismito ke has dixo tu es lo que estaba haciendo :D
Cómo mides el ancho de los caracteres? Es fijo? Te guias por las zonas transparentes?
Me gusta, sólo falta ke guarde la posición donde te kedas leyendo y me gustará mucho más :D
Cómo mides el ancho de los caracteres? Es fijo? Te guias por las zonas transparentes?
El ancho lo mido guiado por las zonas "separadoras". Mira, adjunto tu fuente editada, con zonas de un color distinto entre cada caracter para separarlos.
Me gusta, sólo falta ke guarde la posición donde te kedas leyendo y me gustará mucho más :D
Estoy en ello :D :D
Akui to Higeki
15/03/2006, 03:18
Hola, en primer lugar he de decir que cualquier proyecto de lector de textos me parece genial, pero que éste me encanta, se ve muy bien, y creo que se llegará a ver mejor.
En segundo lugar, si se me permite una sugerencia, me gustaría que tuviera algo de margen, que sobre todo a la derecha "se me pegan las letras con el borde" y se me hace algo molesto.
Para acabar, la letra g minúscula que viene es un poco "rara", ¿no? :rolleyes:
Lo demás más o menos ya está todo dicho, y le deseo la mejor de las suertes a este proyecto.
hola,
me alegro de que te guste y gracias por las sugerencias :D
Lo del margen ya lo había pensado, en principio no le puse por aprovechar el espacio pero un margen pequeño es verdad que facilitaría la lectura. En la próxima versión será personalizable.
Lo de la letra "g", es por la fuente, que a un tamaño pequeño se ve rara. En la próxima versión también incluiré distintas fuentes para intercambiar. Mientras tanto si quieres puedes sustituir el archivo fonts/default.bmp por el que mando adjunto. Es una fuene parecida aunque un poco más grande, con el fondo menos brillante y con antialiasing subpixel (haz una copia del original por si esta te gusta menos :rolleyes:)
saludos
Akui to Higeki
15/03/2006, 23:48
Ya tengo algo que hacer esta noche (sí, mi vida es así de triste :rolleyes: )
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.