Come posso disegnare elementi dell'interfaccia utente basati su pixel o vettoriale in Emacs?


11

Con ciò intendo elementi dell'interfaccia utente (ad esempio campi di testo e pulsanti animati) che non sono limitati alla griglia di caratteri monospaziati degli emulatori terminali, ma possono essere forme arbitrarie in posizioni di pixel arbitrarie sullo schermo. Sono semplicemente curioso di sapere se e come sia possibile, e se non è possibile, se sia pianificato per il futuro.


2
Bene, sì - lo splash screen è evidente per questo fatto. Vorrei riformulare la tua domanda su come farlo. Allo stato attuale, una semplice risposta sì / no "risponderebbe" a questa domanda.
Sean Allred,

3
Se vuoi solo disegnare, allora sì, puoi vedere. Vedi il svg-clockpacchetto in GNU ELPA per un esempio "semplice". Ma se vuoi disegnare sopra altri elementi, la risposta è tristemente "no", anche se molte persone sarebbero felici se qualcuno scrivesse una patch che lo fa.
Stefan,

1
@SeanAllred forma arbitraria, sì; posizione dei pixel arbitraria, n.
Malabarba,

@Malabarba Whoops - sì, hai ragione. Tuttavia, puoi imbrogliare con i margini di visualizzazione e le facce di testo: puoi essere abbastanza preciso. Ma hai ragione nel dire che non puoi dire Draw image.png(400x600+16+30)di disegnare un'immagine in scala a quella particolare coordinata rispetto ad un angolo.
Sean Allred,

Risposte:


8

I campi di testo e i pulsanti (come, nei buffer Personalizza) sono effettivamente soggetti alla griglia su cui Emacs allinea i caratteri.

Quello che puoi fare è dire a Emacs di visualizzare un'immagine del tipo SVG (vettoriale) o XPM (bitmap). Dato che quelli non sono limitati a essere letti da un file, puoi generare una stringa e trasformarla in un'immagine. Ho visto esempi di utilizzo simile a una tela dove l'immagine occupa gran parte della finestra ed è liberamente disegnata (vedi svg-cosa , melma-scarica , svg-clock , il mio svg-2048 ) e un uso meno odioso che piuttosto assomiglia agli elementi dell'interfaccia utente (vedi le icone in AUCTEX , l'icona della modelina di gnus , la versione grafica di M-x tetris, svg-modeline). C'è ancora un po 'di lavoro da fare considerando che Emacs non ha un tipo di immagine simile a una tela, ma è possibile spostare queste immagini e usarle come proprietà di visualizzazione di altri elementi dell'interfaccia utente come la modeline o il margine e i tasti di associazione compreso il mouse quelli per loro.


1

Per disegnare grafica raster potresti provare EPaint . Sembra supportare il disegno a mano libera e le forme geometriche di base.

demo dal repository EPaint

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.