Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TMarmol en 5 Enero 2014, 02:39 am



Título: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 02:39 am
Este es prácticamente el primer proyecto que llevo hasta el final y como en este foro me ayudáis cada vez que tengo algún problemilla he decidido compartirlo con vosotros, por si a alguien le puede interesar.

La idea la saqué de esta web http://goo.gl/UuD69p (http://goo.gl/UuD69p) que permite crear un ASCII Art mediante el texto que le introduzcas, también tiene la opción de darle un formato ( C# Comment, Bash comment...) para los que lo usen en programación, pero como para el que yo quería no estaba, pues he hecho este programa que tiene mas formatos (solo los que yo sé) y si me decís algún formato más también puedo añadírselo (o lo intentaré xD)

Aquí una imagen de los formatos disponibles en la web:
(http://gyazo.com/51849b6a31e17afc07bab89496297221.png)

Aquí una imagen de los formatos disponibles en mi programa:
(http://gyazo.com/a4317d02173c58785ca3c19283279508.png)

Aquí un pequeño gif de mi programa en funcionamiento(en el RichTextBox no se ve bien, pero al pegarlo donde corresponda se verá bien):
(http://gyazo.com/de3de1e9a65f4d7e8e701600a33e6982.gif)

Enlace de descarga: SOURCE
http://goo.gl/I9yfV8 (http://goo.gl/I9yfV8)

Al ser mi primer aporte al foro, dejo un Análisis de VirusTotal por si hay algún escéptico:
http://goo.gl/b9rHNL (http://goo.gl/b9rHNL)

P.D: Los enlaces los pongo así, por que no se si hay alguna forma de acortarlos en el foro y no funciona el html, si hay algún problema pongo los originales


Título: Re: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 03:03 am
Si alguien lo prueba, puede dar su opinión, hay que mejorarle muchas cosas aún  ;D


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 5 Enero 2014, 03:58 am
@TMarmol

Gracias por compartir, pero en las secciones de programación debes compartir el código fuente de la aplicación, de lo contrario moveré el post al lugar correspondiente (Software).

He probado la app en una máquina virtual pero no permite la escritura, no me captura las pulsaciones del teclado, como no hay SourceCode compartido tampoco puedo comprobar o fixear el problema.
EDITO: Ahora me percato de que quizás denegaste la escritura manual apropósito.

Algunas sugerencias:

1. Modificar la fuente del RichTextBox para usar una fuente de texto monoespaciada (Ejemplo: Lucida Console), así evitarás el problema de que se vea mal el texto.

2. Agregar un menú contextual con las opciones Copiar, pegar texto.

3. Añadir un control de errores para corregir un bug (cuando intentas seleccionar un estilo sin que haya escrito ningún texto).

4. Más estilos
Código:
.NET CDATA Literal:
-------------------
<a><![CDATA[
T
E
S
T
]]></a>.Value

.NET Console.WriteLine Method (C# Syntax)
-----------------------------------------
Console.WriteLine("T");
Console.WriteLine("E");
Console.WriteLine("S");
Console.WriteLine("T");

Win32 Registry Script Comment-line
----------------------------------
; T
; E
; S
; T

VisualBasicScript Scripting Comment-line
----------------------------------------
' T
' E
' S
' T

Ruby Scripting Comment-line
--------------------------
# T
# E
# S
# T

Python Scripting Comment-line
-----------------------------
# T
# E
# S
# T

Python Scripting Comment-Multiline
----------------------------------
'''
T
E
S
T
'''

Batch Scripting Syntax
----------------------
Echo: T
Echo: E
Echo: S
Echo: T

Batch Scripting Comment-Line
----------------------------
REM T
REM E
REM S
REM T

Batch Scripting Comment-Line (Alter)
------------------------------------
:: T
:: E
:: S
:: T

Saludos


Título: Re: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 04:16 am
@TMarmol

Gracias por compartir, pero en las secciones de programación debes compartir el código fuente de la aplicación, de lo contrario moveré el post al lugar correspondiente (Software).

He probado la app en una máquina virtual pero no permite la escritura, no me captura las pulsaciones del teclado, como no hay SourceCode compartido tampoco puedo comprobar o fixear el problema.
EDITO: Ahora me percato de que quizás denegaste la escritura manual apropósito.

Algunas sugerencias:

1. Modificar la fuente del RichTextBox para usar una fuente de texto monoespaciada (Ejemplo: Lucida Console), así evitarás el problema de que se vea mal el texto.

2. Agregar un menú contextual con las opciones Copiar, pegar texto.

3. Añadir un control de errores para corregir un bug (cuando intentas seleccionar un estilo sin que haya escrito ningún texto).

4. Más estilos
Lo del Source no lo sabia, mañana en cuanto pueda lo subo. (lo limpiare y ordenare un poco)

Respecto a lo de que no detecta pulsaciones del teclado es por que tiene la propiedad ReadOnly, al principio mi intención no era ponerla, pero tuve varios problemas y como en el fondo el ASCII Art (por lo menos yo) lo hago en una web, lo único que necesitaba era añadir las lineas correspondientes de cada lenguaje de programación, por eso solo permite Copiar y Pegar, cuando suba el Source con vuestra ayuda lo arreglaré.
EDITO:
La 1ª Sugerencia (cambiar fuente) ya esta cumplida, le he puesto la misma fuente que has dicho "Lucida Console".

La 2ª Sugerencia (Menú Contextual) ya esta cumplida, puedes copiar y pegar texto.

La 3ª Sugerencia (control de errores) esta solucionada, más o menos, ahora si no hay nada escrito vuelve a su posición inicial (en blanco)

La 4ª Sugerencia la estoy implementando ahora mismo, igual termino mañana, ya es tarde.


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 5 Enero 2014, 04:47 am
Ya me imaginaba lo de la web, si es que en realidad lo suyo sería hacerle un request y pegar el contenido :P

Saludos!


Título: Re: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 04:54 am
Ya me imaginaba lo de la web, si es que en realidad lo suyo sería hacerle un request y pegar el contenido :P

Saludos!

Te refieres a utilizar la pagina para convertir una palabra a ASCII Art y después mostrarla en el programa?

Humm, suena interesante....

EDITO: Pero de esta forma dependería de esa web, si en algún momento se cae o deja de funcionar el programa quedaría inservible, con el método que tiene ahora, puedes usar cualquier web, no solo las que permiten crear el ascii art, sino también las que son galerías de logos e imágenes en ascii



He subido una nueva versión con todas las mejoras que ha sugerido @Elektro

El Source ya lo subo mañana, tengo que ordenarlo y quitar la porquería, mañana sigo



[MOD]: No hagas doble post


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 5 Enero 2014, 05:29 am
Te refieres a utilizar la pagina para convertir una palabra a ASCII Art y después mostrarla en el programa?

Sí, me refiero a descargar la 'palabra' ya convertida a Art-ASCII, pues hay generadores online muy buenos que llevan en activo más de 5 años, aquí es donde los genero yo: http://patorjk.com/software/taag/
EDITO: Vaya, que casualidad, ahora la web parece offline XDD

Pero de esta forma dependería de esa web, si en algún momento se cae o deja de funcionar el programa quedaría inservible, con el método que tiene ahora, puedes usar cualquier web, no solo las que permiten crear el ascii art, sino también las que son galerías de logos e imágenes en ascii

En eso tienes razón, pero no es necesario depender de una web, lo que yo te sugiero hacer es añadir compatibilidad para usar las fuentes de texto predefinidas de una web, envías la query con la 'palabra' a convertir, descargas de la web y la parseas para imprimirla en el RichTextBox, solo sería algo adicional porque la función de pegar texto de galerias de logos de otras páginas seguiría funcionando igual como funcionaba antes.

De todas formas, para el problema de la web offline siempre puedes implementar el parsing de las fuentes de FIGlet en tu aplicación (es algo dificil de parsear corréctamente, ya lo intenté yo hace mucho tiempo ...pero en otro lenguaje, en VB.NET sería más facil de llevar a cabo) http://www.figlet.org/ que son las fuentes que usan prácticamente todas esas webs de Art-ASCII Text predefinidas.

Míra un ejemplo de (mala) implementación aquí: [RUBY] Proyecto sin finalizar Art ASCII Factory ¿Alguien me toma el relevo? (http://foro.elhacker.net/scripting/ruby_proyecto_sin_finalizar_art_ascii_factory_iquestalguien_me_toma_el_relevo-t362610.0.html;msg1749700#msg1749700)

Saludos


Título: Re: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 13:31 pm
Ya he actualizado el enlace de descarga, ahora contiene el Source.
Respecto a
De todas formas, para el problema de la web offline siempre puedes implementar el parsing de las fuentes de FIGlet en tu aplicación (es algo dificil de parsear corréctamente, ya lo intenté yo hace mucho tiempo ...pero en otro lenguaje, en VB.NET sería más facil de llevar a cabo) http://www.figlet.org/ que son las fuentes que usan prácticamente todas esas webs de Art-ASCII Text predefinidas.
...
Saludos

Como no he entendido la mitad de las cosas, lo que yo tenia pensado era incluir en un Modulo este codigo (solo es una parte, el original que vi estaba en PHP):
Código
  1. Module Module1
  2.    Public Function BIG(ByVal Letra As String)
  3.        Dim Result As String
  4.        If Letra = "a" Then
  5.            Result = "        " & vbCrLf &
  6. "        " & vbCrLf &
  7. "   __ _ " & vbCrLf &
  8. "  / _` |" & vbCrLf &
  9. " | (_| |" & vbCrLf &
  10. "  \__,_|" & vbCrLf &
  11. "        " & vbCrLf &
  12. "        "
  13.            Return Result
  14.        End If
  15.        If Letra = "b" Then
  16.            Result = "  _     " & vbCrLf &
  17. " | |    " & vbCrLf &
  18. " | |__  " & vbCrLf &
  19. " | '_ \ " & vbCrLf &
  20. " | |_) |" & vbCrLf &
  21. " |_.__/ " & vbCrLf &
  22. "        " & vbCrLf &
  23. "        "
  24.            Return Result
  25.        End If
  26. .
  27. .
  28. .
  29.  
Web del codigo PHP: http://api.drupalhelp.net/api/captcha_pack/ascii_art_captcha--fonts--ascii_art_captcha_font_big.inc/function/ASCII_art_captcha_font_big/7 (http://api.drupalhelp.net/api/captcha_pack/ascii_art_captcha--fonts--ascii_art_captcha_font_big.inc/function/ASCII_art_captcha_font_big/7)

Llamando a la función BIG mandando letra por letra el RichTextBox, de este modo se puede tener un Modulo para cada tipo de letra (BIG, 3D Diagonal...), lo pesado será escribir el abecedario entero


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 5 Enero 2014, 13:51 pm
El primer problema q veo es que le estás añadiendo un vbcrlf a cada letra, cuando la intención es concatenarlos, aunque de todas formas no se si en la parte de código que falta concatenas o no, así que no me hagas caso en eso xD.

El segundo problema y uno de los más jodidos que te vas a encontrar (como a mi me pasó) es que no todas las fuentes tienen el mismo tamaño (cantidad de lineas) así que vas a tener que poner "X" letra a cierta altura de lineas, e "Y" letra a otra altura distinta, y además de eso, existe el espaciado entre las letras (los espacios en blanco para hacerlo más largo o más chico), y además de eso está el efecto de la 'fusión' de letras (no se como se denominará en inglés) ...me refiero a cuando el espacio entre las letras es NULO creando ese efecto tan Cool pero que resulta una pesadilla codearlo.

No te lo digo para desanimar, que yo te propuse la idea, solo te digo que si quieres implementar todas las funcionalidades de las letras FIGlet entonces vas a flipar en colores ...así que no te desesperes y ánimo XD.

Un saludo!


Título: Re: [Aporte] ASCII Format
Publicado por: TMarmol en 5 Enero 2014, 14:26 pm
El primer problema q veo es que le estás añadiendo un vbcrlf a cada letra, cuando la intención es concatenarlos, aunque de todas formas no se si en la parte de código que falta concatenas o no, así que no me hagas caso en eso xD.

El segundo problema y uno de los más jodidos que te vas a encontrar (como a mi me pasó) es que no todas las fuentes tienen el mismo tamaño (cantidad de lineas) así que vas a tener que poner "X" letra a cierta altura de lineas, e "Y" letra a otra altura distinta, y además de eso, existe el espaciado entre las letras (los espacios en blanco para hacerlo más largo o más chico), y además de eso está el efecto de la 'fusión' de letras (no se como se denominará en inglés) ...me refiero a cuando el espacio entre las letras es NULO creando ese efecto tan Cool pero que resulta una pesadilla codearlo.

No te lo digo para desanimar, que yo te propuse la idea, solo te digo que si quieres implementar todas las funcionalidades de las letras FIGlet entonces vas a flipar en colores ...así que no te desesperes y ánimo XD.

Un saludo!
Vale...
Acabo de darme cuenta de la cagada de los saltos de linea, creo que le agregaré la opción de usar la web como intermediaria pero manteniendo el Copy&Paste.

Con eso creo que ya quedaría finalizado.
Y por si te has mirado el Source @Elektro , esa era la mejor forma que se me ocurrio para mantener el texto original xD


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 5 Enero 2014, 14:43 pm
Acabo de darme cuenta de la cagada de los saltos de linea, creo que le agregaré la opción de usar la web como intermediaria pero manteniendo el Copy&Paste.

Sí, es lo más facil y lo más sensato, no lo dudes ...implementar las letras por ti mismo (de forma correcta y decente) es una locura, algo muy tedioso ya que requiere mediciones, calculos y testeos que consumen mucho tiempo de escritura por cada letra, al menos de la forma en la que yo la hacia ya que el maldito FLGlet ese no corre en 64 Bits así que a mi me llevó como un més entero solo para implementar unas 15-20 fuentes FIGlet con todas sus letras y signos especiales, una locura.

PD: También puedes contactar con el autor de la web para preguntarle como lo implementó él y así copiar su método que óbviamente es mejor que el mio ...y eso estaría muy bien  :laugh:.
PD2: Aún no he mirado el source, pero lo haré

Saludos!


Título: Re: [Aporte] ASCII Format
Publicado por: Eleкtro en 8 Enero 2014, 21:45 pm
Este aporte ha sido añadido al  Recopilatorio de temas interesantes (http://foro.elhacker.net/net/recopilatorio_de_temas_interesantes-t301256.0.html)  ;)

Gracias por compartir.

Salu2!