Bagaimana saya bisa menggambar elemen UI berbasis pixel atau vektor di Emacs?

11

Maksud saya elemen UI (misalnya bidang teks dan tombol animasi) yang tidak terbatas pada kotak karakter monospace dari emulator terminal, tetapi dapat berupa bentuk sewenang-wenang pada posisi piksel sembarang pada layar. Saya hanya ingin tahu apakah dan bagaimana itu mungkin, dan jika itu tidak mungkin, apakah itu direncanakan untuk masa depan.

Lenar Hoyt
sumber
2
Ya, ya - layar splash terbukti dengan fakta ini. Saya akan mengubah pertanyaan Anda menjadi bagaimana hal ini dapat dilakukan. Seperti berdiri, jawaban ya / tidak sederhana akan 'menjawab' pertanyaan ini.
Sean Allred
3
Jika Anda hanya ingin menggambar, maka ya, Anda bisa melihatnya. Lihat svg-clockpaket di GNU ELPA untuk contoh "sederhana". Tetapi jika Anda ingin menggambar di atas elemen lain, maka jawabannya adalah sedih "tidak", meskipun banyak orang akan senang jika seseorang menulis tambalan yang melakukan itu.
Stefan
1
@SeanAllred bentuk arbitrer, ya; posisi piksel sembarang, tidak.
Malabarba
@Malabarba Whoops - ya, Anda benar. Anda dapat menipu meskipun dengan margin tampilan dan wajah teks, meskipun - Anda bisa mendapatkan cukup tepat. Tapi Anda benar mengatakan bahwa Anda tidak bisa mengatakan Draw image.png(400x600+16+30)untuk menggambar gambar berskala di koordinat tertentu itu relatif ke beberapa sudut.
Sean Allred

Jawaban:

8

Bidang teks dan tombol (seperti, di buffer Menyesuaikan) sebenarnya tunduk pada kotak Emacs menyelaraskan karakter.

Yang dapat Anda lakukan adalah memberi tahu Emacs untuk menampilkan gambar tipe SVG (vektor) atau XPM (bitmap). Karena itu tidak terbatas untuk dibaca dari file, Anda dapat membuat string dan mengubahnya menjadi gambar. Saya telah melihat contoh dari kedua penggunaan seperti kanvas di mana gambar menempati sebagian besar jendela dan secara bebas digambar (lihat svg-hal , slime-volley , svg-jam , svg-2048 saya sendiri ) dan penggunaan yang kurang menjengkelkan yang agak menyerupai elemen UI (lihat ikon di AUCTeX , gnus 'modeline ikon, versi grafis M-x tetris, svg-modeline). Masih ada sedikit pekerjaan yang harus dilakukan mengingat Emacs tidak memiliki tipe gambar seperti kanvas, tetapi dimungkinkan untuk memindahkan gambar-gambar ini dan menggunakannya sebagai properti tampilan elemen UI lainnya seperti modeline atau margin dan kunci ikat termasuk mouse satu untuk mereka.

wasamasa
sumber
1

Untuk menggambar grafik raster, Anda dapat mencoba EPaint . Tampaknya mendukung gambar tangan dan bentuk geometris dasar.

demo dari repositori EPaint

Epa
sumber