¿Cómo puedo dibujar elementos de interfaz de usuario basados ​​en píxeles o vectores en Emacs?

11

Con eso me refiero a elementos de la interfaz de usuario (por ejemplo, campos de texto y botones animados) que no están restringidos a la cuadrícula de caracteres monoespaciados de emuladores de terminal, pero pueden ser formas arbitrarias en posiciones arbitrarias de píxeles en la pantalla. Simplemente tengo curiosidad por saber si es posible y cómo, y si no es posible, si está planificado para el futuro.

Lenar Hoyt
fuente
2
Bueno, sí, la pantalla de bienvenida es evidente a este hecho. Reformularía su pregunta sobre cómo se puede hacer esto. Tal como está, una simple respuesta sí / no 'respondería' a esta pregunta.
Sean Allred
3
Si solo quieres dibujar, entonces sí, puedes ver. Vea el svg-clockpaquete en GNU ELPA para un ejemplo "simple". Pero si desea dibujar sobre otros elementos, entonces la respuesta es tristemente "no", aunque muchas personas estarían felices si alguien escribiera un parche que lo haga.
Stefan
1
@SeanAllred forma arbitraria, sí; posición arbitraria de píxeles, no.
Malabarba
@Malabarba Whoops: sí, tienes razón. Sin embargo, puedes hacer trampas con márgenes de visualización y caras de texto, puedes ser bastante preciso. Pero tiene razón al decir que no puede decir Draw image.png(400x600+16+30)que dibuje una imagen a escala en esa coordenada particular en relación con alguna esquina.
Sean Allred

Respuestas:

8

Los campos de texto y los botones (como, en los buffers Personalizar) están sujetos a la cuadrícula en la que Emacs alinea los caracteres.

Lo que puede hacer es decirle a Emacs que muestre una imagen del tipo SVG (vector) o XPM (mapa de bits). Dado que no se limita a leerlos desde un archivo, puede generar una cadena y convertirla en una imagen. He visto ejemplos de uso similar a un lienzo donde la imagen ocupa la mayor parte de la ventana y se dibuja libremente (vea svg-thing , slime-volley , svg-clock , my own svg-2048 ) y un uso menos desagradable que más bien parecerse a elementos de la interfaz (ver los iconos en auctex , ñus 'modeline icono, la versión gráfica del M-x tetris, SVG-modeline) Todavía queda bastante trabajo por hacer teniendo en cuenta que Emacs no tiene un tipo de imagen similar al lienzo, pero es posible desplazar estas imágenes y usarlas como propiedad de visualización de otros elementos de la interfaz de usuario como la línea de modo o margen y las teclas de enlace, incluido el mouse unos para ellos

wasamasa
fuente
1

Para dibujar gráficos de trama, puede probar EPaint . Parece admitir dibujos a mano alzada y formas geométricas básicas.

demostración del repositorio EPaint

ebpa
fuente