Comment puis-je dessiner des éléments d'interface utilisateur basés sur des pixels ou des vecteurs dans Emacs?

11

J'entends par là des éléments d'interface utilisateur (par exemple des champs de texte et des boutons animés) qui ne sont pas limités à la grille de caractères à espacement fixe des émulateurs de terminaux, mais peuvent être des formes arbitraires à des positions de pixels arbitraires à l'écran. Je suis simplement curieux de savoir si et comment cela est possible, et si ce n'est pas possible, si c'est prévu pour l'avenir.

Lenar Hoyt
la source
2
Eh bien, oui - l'écran de démarrage est évident pour ce fait. Je reformulerais votre question sur la manière de procéder. Dans l'état actuel des choses, une simple réponse oui / non «répondrait» à cette question.
Sean Allred
3
Si vous voulez seulement dessiner, alors oui, vous pouvez voir. Voir le svg-clockpaquet dans GNU ELPA pour un exemple "simple". Mais si vous voulez dessiner sur d'autres éléments, la réponse est malheureusement «non», bien que beaucoup de gens seraient heureux si quelqu'un écrivait un patch qui fait ça.
Stefan
1
@SeanAllred forme arbitraire, oui; position arbitraire des pixels, non.
Malabarba
@Malabarba Oups - oui, vous avez raison. Vous pouvez cependant tricher avec des marges d'affichage et des faces de texte - vous pouvez être assez précis. Mais vous avez raison de dire que vous ne pouvez pas dire Draw image.png(400x600+16+30)de dessiner une image à l'échelle à cette coordonnée particulière par rapport à un coin.
Sean Allred

Réponses:

8

Les champs de texte et les boutons (comme dans les tampons de personnalisation) sont en fait soumis à la grille sur laquelle Emacs aligne les caractères.

Ce que vous pouvez faire, c'est de dire à Emacs d'afficher une image de type SVG (vecteur) ou XPM (bitmap). Puisque ceux-ci ne sont pas limités pour être lus à partir d'un fichier, vous pouvez générer une chaîne et la transformer en image. J'ai vu des exemples d'utilisation de type toile où l'image occupe la majeure partie de la fenêtre et est librement dessinée (voir svg-thing , slime-volley , svg-clock , mon propre svg-2048 ) et une utilisation moins désagréable qui plutôt ressembler à des éléments UI (voir les icônes dans AUCTeX , gnus 'modeline icône, la version graphique M-x tetris, SVG-modeline). Il y a encore beaucoup de travail à faire étant donné qu'Emacs n'a pas de type d'image de type toile, mais il est possible de déplacer ces images et de les utiliser comme propriété d'affichage d'autres éléments d'interface utilisateur comme la modélisation ou les touches margin et bind, y compris la souris à eux.

wasamasa
la source
1

Pour dessiner des graphiques raster, vous pouvez essayer EPaint . Il semble prendre en charge le dessin à main levée et les formes géométriques de base.

démo du dépôt EPaint

ebpa
la source