unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Carlos Pita <carlosjosepita@gmail.com>
Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org
Subject: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen
Date: Tue, 15 Oct 2019 12:27:38 +0300	[thread overview]
Message-ID: <83eezegxyt.fsf@gnu.org> (raw)
In-Reply-To: <CAELgYhcgXTpqbej49zA8b-2HUZi6hxDA5iaHe3HyNqw+BuSMpg@mail.gmail.com> (message from Carlos Pita on Mon, 14 Oct 2019 20:42:59 -0300)

> From: Carlos Pita <carlosjosepita@gmail.com>
> Date: Mon, 14 Oct 2019 20:42:59 -0300
> Cc: Alan Third <alan@idiocy.org>, Robert Pluim <rpluim@gmail.com>, 37689@debbugs.gnu.org
> 
> I'm finding non-trivial difficulties that make me think this is not
> the best approach.
> 
> I've already mentioned one above:
> 
> 1. I need the scaling factor in fringe.c yet it's not part of the
> redisplay_interface. Functions that compute scaling factor are backend
> specific and static.

Adding them to frame redisplay interface would solve this.

> 2. init_fringe_bitmap does non-trivial manipulations to the original
> bit sequence (nibble swapping, shifting, casting) to produce a
> platform/backend-specific representation. redisplay_interface is
> ill-defined in this regard, bitmap representation is not part of the
> interface. For some backends init_fringe_bitmap even compresses shorts
> to chars if width < 8, so I can't reliably detect row limits in a
> platform/backend-agnostic way, which I need in order to scale the
> bitmap.

The code in init_fringe_bitmap obviously need some refactoring to rely
on redisplay interface.  You could make such refactoring part of the
job, or you could leave the current code intact and use its results.
I don't think I understand the difficulty of detecting row limits, but
you could begin by doing that for one platform, and then asking others
to do the same for other platforms.

> 3. The unsigned short representation is unfortunate. For 3x we need at
> least int64_t. Then we need to modify all that backend-dependent
> nibble swapping, shifting and casting that gives me the creeps.
> Finally backends would have to be adapted to take an int64_t array as
> input.

Couldn't we use the existing image-scaling code for that?  It is
implemented in each backend already.

> a. At the level of fringe.c we only modify the geometry (width,
> height) of the image, so that calculations that are independent of the
> bitmap itself are correctly done. This way we can keep the unsigned
> short representation, we don't need to touch that complex
> platform/backend-dependent bit and we don't need to query the scaling
> factor, thus solving points 1, 2 and 3 above.
> 
> b. Then each backend should set a transformation matrix or something
> like that so that the bitmap is scaled to the appropriate resolution.
> I already know how to do that for Cairo, it's trivial.
> 
> Eli, what do you think?

I don't think I understand what will stage (a) do under this proposal.
Stage (b) is already implemented, you just need to use it, and you
need to tell the transformation code the correct scale factor.





  parent reply	other threads:[~2019-10-15  9:27 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-10  6:28 bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Carlos Pita
2019-10-10  8:12 ` Eli Zaretskii
2019-10-10 13:26   ` Robert Pluim
2019-10-10 13:37     ` Carlos Pita
2019-10-10 13:47       ` Robert Pluim
2019-10-10 13:36   ` Carlos Pita
2019-10-10 14:21     ` Robert Pluim
2019-10-10 14:33       ` Carlos Pita
2019-10-10 14:37         ` Carlos Pita
2019-10-10 15:06         ` Eli Zaretskii
2019-10-10 15:43           ` Carlos Pita
2019-10-10 15:05       ` Eli Zaretskii
2019-10-10 15:51         ` Carlos Pita
2019-10-10 16:01           ` Carlos Pita
2019-10-10 17:35           ` Eli Zaretskii
2019-10-10 17:39             ` Carlos Pita
2019-10-11  3:26               ` Carlos Pita
2019-10-11  3:48                 ` Carlos Pita
2019-10-12  0:51                   ` Carlos Pita
2019-10-12  7:28                     ` Eli Zaretskii
2019-10-12  7:56                       ` Carlos Pita
2019-10-12  8:26                         ` Carlos Pita
2019-10-14  0:40                           ` Carlos Pita
2019-10-14  8:33                             ` Eli Zaretskii
2019-10-14 13:19                               ` Alan Third
2019-10-14 14:00                                 ` Eli Zaretskii
2019-10-17 11:48                                   ` Alan Third
2019-10-14 14:37                                 ` Carlos Pita
2019-10-14 14:54                                   ` Eli Zaretskii
2019-10-14 15:06                                     ` Carlos Pita
2019-10-14 15:15                                       ` Eli Zaretskii
2019-10-14 15:32                                         ` Carlos Pita
2019-10-14 16:52                                           ` Eli Zaretskii
2019-10-14 19:59                                             ` Carlos Pita
2019-10-14 23:42                                               ` Carlos Pita
2019-10-14 23:49                                                 ` Carlos Pita
2019-10-15  1:50                                                   ` Carlos Pita
2019-10-15  9:30                                                     ` Eli Zaretskii
2019-10-15 23:01                                                       ` Carlos Pita
2019-10-16  4:25                                                         ` Carlos Pita
2019-10-16  9:16                                                           ` martin rudalics
2019-10-16 16:31                                                             ` Carlos Pita
2019-10-16 16:40                                                               ` Carlos Pita
2019-10-16 19:01                                                                 ` Carlos Pita
2019-10-17  8:13                                                                   ` Robert Pluim
2019-10-15  9:27                                                 ` Eli Zaretskii [this message]
2019-10-20 16:03           ` Juri Linkov
2019-10-20 17:37             ` Carlos Pita
2019-10-20 18:52               ` Juri Linkov
2019-10-20 19:17                 ` Carlos Pita
2019-10-24 17:09                   ` Carlos Pita
2019-10-26 10:45                     ` 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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83eezegxyt.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=37689@debbugs.gnu.org \
    --cc=alan@idiocy.org \
    --cc=carlosjosepita@gmail.com \
    --cc=rpluim@gmail.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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).