¿Cómo dibujar un solo píxel en una terminal?

10

Hasta ahora, utilizaba personajes para dibujar imágenes, formas, etc. en un terminal.

¿Es posible dibujar un solo píxel?

Digamos:

foo 1 1 red

Esto dibujará un píxel rojo en la coordenada (1, 1).

¿Existe una aplicación existente que haga este trabajo?

Actualmente ejecuta Ubuntu 14.04.

Ionică Bizău
fuente
3
¿Qué tipo de terminal tienes? Un DEC GT40 ?
Anthon
@Anthon Gnome-Terminal (que viene con Ubuntu)
Ionică Bizău
1
@Anthon A DEC GT40sería útil, pero es demasiado caro ... :-)
Ionică Bizău
1
@terdon Voté por reabrir porque esto no es intrínsecamente una pregunta de programación (eliminé la etiqueta c y c ++ , porque si vas a escribir código C o C ++, eso está fuera de tema aquí). "No existe tal característica, necesitaría programarla" sería una respuesta adecuada aquí, excepto que sería incorrecta: una buena respuesta mencionaría a Tektronix y dibujar sobre la ventana del terminal como lo hace w3m.
Gilles 'SO- deja de ser malvado'
1
@Gilles lo suficientemente justo, he vuelto a abrir. Lo cerré porque estaba en proceso de migrar a SO y no fue bienvenido allí.
terdon

Respuestas:

10

Los terminales son pantallas de celdas de caracteres y no admiten dibujar gráficos de píxeles. Ni siquiera cuando se ejecuta en X11; aunque ciertamente es posible dibujar píxeles individuales cuando se habla directamente a un servidor X, si su programa está hablando con un terminal, solo puede pedirle al terminal que muestre caracteres.

Para mostrar gráficos en lugar de texto, deberá escribir un programa que interactúe directamente con el servidor X. Esto normalmente se realiza a través de una biblioteca de kit de herramientas de interfaz de usuario como GTK , Qt o wxWidgets .

Wyzard
fuente
77
Hay todo tipo de terminales, algunas con capacidades gráficas (como el modo de Tektronix xtermo la incrustación de imágenes de terminology). Tenga en cuenta que el terminal también se refiere a terminales X11 (los sucesores de cosas como las de Tektronix)
Stéphane Chazelas
2
¡Frio! Algunos entusiastas dibujan una tetera 3d en xterm =) dim13.org/2009/02/teapot
gena2x
Si el terminal sólo puede "dibujar" caracteres, entonces tal vez el píxel se debe hacer un char por lo que se puede sacar ...
10

Echa un vistazo a la biblioteca Drawille . Utiliza los caracteres braille UTF para dibujar píxeles.

mipmip
fuente
1
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
slm
1

No podrá dibujar colores de un solo píxel en el terminal a menos que pueda hacer lo que menciona Wyzard , programarlo usted mismo o encontrar una herramienta ya hecha para el trabajo (esto podría ser específico del terminal). Sin embargo, es posible utilizar coordenadas de caracteres individuales en su terminal para dibujar imágenes 2D utilizando caracteres ASCII y UTF-8. La herramienta para esto se llama tput. Esta herramienta funciona manipulando la posición del cursor de acuerdo con las coordenadas de su terminal actual. Aquí hay una lista de muestra de tputfuncionalidades:

# tput Cursor Movement Capabilities:

tput cup Y X
    # Move cursor to screen location X,Y (top left is 0,0)

tput sc
    # Save the cursor position

tput rc
    # Restore the cursor position

tput lines
    # Output the number of lines of the terminal

tput cols
    # Output the number of columns of the terminal

tput cub N
    # Move N characters left

tput cuf N
    # Move N characters right

tput cuu N
    # up N lines

tput cud N
    # down N lines
Yokai
fuente
1

Además de los principales kits de herramientas de widgets (GTK, Qt, WxWidgets) mencionados en la respuesta de Wyzard, también podría considerar bibliotecas más orientadas a los medios como SFML o libSDL . Si solo desea una salida gráfica (casi sin interacción), incluso podría considerar CairoGraphics .

En algunos casos, puede usar, a través de una tubería (por ejemplo, popen ) o en la línea de comandos, utilidades de comando como GNUplot o GraphViz .

También podría considerar usar las capacidades gráficas de su navegador, por ejemplo, codificando alguna aplicación web dedicada (usando alguna biblioteca de servidor HTTP como Wt o libonion , con tecnologías web como AJAX, SVG, HTML5, canvas, websockets, etc.)

Pero la mayoría de los emuladores de terminal no tienen o tienen muy pocas capacidades gráficas (por lo que no tienen gráficos de píxeles genuinos). Por lo tanto, prácticamente necesita su programa para interactuar con el servidor de visualización ( X11 , Wayland , ...).

Basile Starynkevitch
fuente