From: Eli Zaretskii <eliz@gnu.org>
To: David Engster <deng@randomsample.de>
Cc: luangruo@yahoo.com, emacs-devel@gnu.org
Subject: Re: Emacs canvas support
Date: Thu, 30 Apr 2020 16:29:19 +0300 [thread overview]
Message-ID: <835zdhxftc.fsf@gnu.org> (raw)
In-Reply-To: <87d07qdrkd.fsf@randomsample> (message from David Engster on Wed, 29 Apr 2020 21:23:30 +0200)
> From: David Engster <deng@randomsample.de>
> Cc: luangruo@yahoo.com, emacs-devel@gnu.org
> Date: Wed, 29 Apr 2020 21:23:30 +0200
>
> > AFAIU, Meld seems to draw the graphics _between_ windows, and only
> > highlights the source lines with background colors. I think we can do
> > that if we use an extra window in-between the two being compared, and
> > put images in that extra window to show the graphical description of
> > the changes between the two versions.
>
> I actually tried exactly that, many years ago. I dimly remember that
> handling the coordinates was pretty complicated and it was slow. Like,
> orders of magnitude too slow, even with the simplest and fastest image
> types. There was no way you would ever be able to scroll text and update
> the diff visualization alongside it. It was just a flickery mess. It
> would of course be possible to visualize the diff in an idle timer and
> not during scrolling, but that is exactly what I mean above with "not
> really satisfactory", so I gave up.
Hmm... yes, I see your point. We'd need to find a way of somehow
synchronizing the windows, which is not very easy (witness
follow-mode).
> > Drawing over normal text, if we don't want to redesign the entire
> > display engine, needs some new kind of "display element" ( a sibling
> > to "character", "image", "stretch", etc.), one that doesn't
> > necessarily have any effect on the metrics of the screen lines it is
> > drawn upon. I'm not sure I have a clear idea about what features such
> > a drawing will need to support, but it could be possible to add such
> > an element with not too much effort. Would someone want to come up
> > with a reasonable list of requirements for such a feature?
>
> When I played around with it, I thought a first iteration could be to
> simply expose the basic Cairo API to ELisp, which is essentially drawing
> lines/arcs/rectangles and filling. I thought that maybe it would be
> possible that one could handle this like a graphical transparent
> overlay, but I'm afraid I'm way out of my depth here. I have no idea how
> one would handle scrolling, for instance.
Right, the main problem is not how to draw, but how to tell the
display engine where's the drawing on the screen, and when to redraw
it.
next prev parent reply other threads:[~2020-04-30 13:29 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <875zdikdge.fsf.ref@yahoo.com>
2020-04-29 6:34 ` Emacs canvas support Po Lu via Emacs development discussions.
2020-04-29 8:24 ` Eli Zaretskii
2020-04-29 9:57 ` Po Lu
2020-04-29 10:10 ` Eli Zaretskii
2020-04-29 10:22 ` Po Lu
2020-04-29 10:27 ` Po Lu via Emacs development discussions.
2020-04-29 11:47 ` Eli Zaretskii
2020-04-29 10:35 ` Eli Zaretskii
2020-04-29 10:41 ` Po Lu
2020-04-29 11:51 ` Eli Zaretskii
2020-04-29 12:12 ` Po Lu
2020-04-29 16:14 ` David Engster
2020-04-29 16:54 ` Eli Zaretskii
2020-04-29 17:16 ` tomas
2020-04-29 17:27 ` Eli Zaretskii
2020-04-29 17:38 ` Eli Zaretskii
2020-04-30 13:11 ` Arthur Miller
2020-04-30 14:18 ` Eli Zaretskii
2020-04-30 14:58 ` Arthur Miller
2020-04-30 17:30 ` Eli Zaretskii
2020-05-01 14:32 ` Arthur Miller
2020-04-29 18:51 ` tomas
2020-04-29 19:03 ` Eli Zaretskii
2020-04-29 19:08 ` tomas
2020-04-29 19:25 ` Eli Zaretskii
2020-04-29 19:59 ` tomas
2020-04-30 1:19 ` Stefan Monnier
2020-04-30 6:55 ` tomas
2020-04-30 12:03 ` Stefan Monnier
2020-04-30 12:50 ` tomas
2020-04-30 8:04 ` Po Lu
2020-04-30 12:08 ` Stefan Monnier
2020-04-30 13:55 ` Eli Zaretskii
2020-05-01 23:27 ` Po Lu
2020-05-02 6:51 ` Eli Zaretskii
2020-04-30 13:46 ` Eli Zaretskii
2020-04-30 14:37 ` Stefan Monnier
2020-04-30 17:27 ` Eli Zaretskii
2020-04-30 18:22 ` Stefan Monnier
2020-04-30 18:42 ` Eli Zaretskii
2020-04-30 14:27 ` Drew Adams
2020-04-30 13:33 ` Eli Zaretskii
2020-04-30 13:52 ` Arthur Miller
2020-04-29 19:23 ` David Engster
2020-04-30 13:29 ` Eli Zaretskii [this message]
2020-04-30 6:52 ` Corwin Brust
2020-04-29 17:08 ` Eli Zaretskii
2020-04-29 20:14 ` David Engster
2020-04-30 13:35 ` Eli Zaretskii
2020-04-29 20:48 ` Juri Linkov
2020-04-30 2:36 ` Eli Zaretskii
2020-04-30 20:20 ` Juri Linkov
2020-05-01 6:01 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=835zdhxftc.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=deng@randomsample.de \
--cc=emacs-devel@gnu.org \
--cc=luangruo@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.