Re: [Bf-committers] HiDPI notes for other OS'es

2013-07-02 Thread David Jeske
On Sun, Jun 30, 2013 at 4:14 AM, Ton Roosendaal t...@blender.org wrote:

 The node editor has been badly patched indeed, which is solvable, but not
 so easy. I postponed it to wait for decisions or designs how we want the
 node editor to evolve.


I think I now understand what you meant about combining 2d and the widgets
in the node editor being a challenge for the current coordinate model. You
mean because the nodes themselves have widgets drawn into their faces
right?

The bug you mention (for adding nodes) is just a python scripting issue -
 it tries to do DPI magic there, which it shouldn't.


As far as I can see, the retina node-placement bug is not caused by
Campbell's recent patch that added those DPI calculations. It existed
before he added that, and is unaffected by it. If you take out those
calculations the bug is still present and exactly the same. The bug exists
because there is a pixelsize (not DPI) compensation issue -- this is why it
happens only on retina.

If I understand what's going on the node-editor 2d camera zoom and
origin are not being scaled for pixelsize, which means mouse events must be
scaled for pixelsize before being used as coordinates to places new nodes.

I think this could be fixed in v2d.region_to_view, as you mentioned in your
other email. I've moved onto some other stuff, but if this doesn't get
fixed in a while I'll turn back to it.
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-07-01 Thread Brecht Van Lommel
On Sat, Jun 29, 2013 at 6:16 PM, Reuben Martin reube...@gmail.com wrote:
 On Saturday, June 29, 2013 04:47:09 PM Brecht Van Lommel wrote:
 It's not a reliable value to use, because it's not correctly reported
 by many monitors, and does not actually correspond to the DPI assumed
 by any other UI toolkit. I've looked for the right value for quite a
 while, but only conclusion I can find is that none of
 Gnome/KDE/Xfce/GTK/Qt/.. have proper high DPI support on Linux/X11,
 it's just not implemented. If one of them did we could copy the same
 mechanism to detect DPI.

 Blog post from yesterday may provide insight into how others are tackling the
 issue.

 http://blogs.gnome.org/alexl/2013/06/28/hidpi-support-in-gnome/

Thanks for the link, good to see there is some effort underway to
implement this natively, this is exactly the kind of thing that's
needed.

Brecht.
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-30 Thread Ton Roosendaal
Hi David,

I fully agree that a HiDPI screen visually should be 1:1 identical to regular 
layouts.

The node editor has been badly patched indeed, which is solvable, but not so 
easy. I postponed it to wait for decisions or designs how we want the node 
editor to evolve. 

The main design exception is for how do draw images - if you work on a 4k 
screen you want zoom level '1' to be showing the full 4k frame. There's 
something to say for keeping it that way.

The bug you mention (for adding nodes) is just a python scripting issue - it 
tries to do DPI magic there, which it shouldn't.

So: if we solve the node problem, we're basically set. The fact blender's UI 
drawing has all kinds of bad patches is unrelated. It already was bad and the 
dpi code only exposes it more visibly. It can be cleaned up any time, but we 
don't have to do that for HiDPI support really.

 OSX Cocoa APIs pretty successfully hide
 these details from all code that doesn't care about them by using a virtual
 coordinate space

Our interface drawing code (in C) I would consider as hide. The Python API 
should be totally DPI-free.

I'm pretty sure Apple devs have been hacking a lot deep down in their code too. 
Using retina some programs still have glitches, even for apple programs :)

-Ton-


Ton Roosendaal  -  t...@blender.org   -   www.blender.org
Chairman Blender Foundation - Producer Blender Institute
Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands



On 29 Jun, 2013, at 22:37, David Jeske wrote:

 Looking away from the details for a moment.. It would be helpful to have a
 clear Blender HiDPI philosophy, so we know the right way to fix these
 bugs... I'll take a shot at this now...
 
 If I understand your philosophy Ton, I think it is:
 
 1) Editors where 2d pixels are not edited (everything except the
 uv-editor), should appear to be at the same zoom-level/origin when loaded
 on normal and high dpi displays. This means that a single blend file loaded
 on normal and high dpi would have 3dviews and node-editors positioned and
 zoomed to show roughly the same amount of stuff.
 
 Can we agree on #1?
 
 For image drawing... we can check on it. I just wasn't sure if you want to
 have zoom level 1 defined as 2 pixels for image pixels... that would be
 annoying I think.
 
 
 Here is a second guidline to explain this...
 
 2) Editors where 2d pixels can be directly edited (today just the
 uv-editor), should keep their data-to-screen-pixel ratio constant when
 loaded on normal and high dpi display. This means a uv-editor setup zoomed
 to take up most of the screen on high-dpi, would be 2-4x the screen size
 when loaded on normal dpi.
 
 My sensibilities say to drop #2 and make everything #1. However, I'm not an
 artist who paints on 2d uv-maps. It would be good to hear their opinion
 here.  If #2 rule stays, it would be useful to know if this applies to
 scenerios where the uv-editor is used a results display, such as
 render/compositor results -- or only 2d image editing.
 
 We might also consider these possible guidelines:
 
 optional 3) Views showing 2d pixels have an obvious way to get to 1:1
 mapping, and an obvious visual that they are in 1:1 mapping.
 
 optional 4) Views showing 2d pixels have zoom steps and/or snaps to make
 integer mappins easy to arrive at.
 
 I like #3 more than #4, though I can see arguments for each.
 
 
 
 After we get through the philosophy, we can apply it to the details
 
 Not an easy fix in Blender is when 2d view transforms (like nodes) are used
 together with UI widget drawing. I kept this open, knowing node UI future
 is a todo item in general.
 
 
 I see two related bugs in the node-editor which seem easy to fix, and I
 would like to fix... but I don't know the agreed way to fix them without
 the above HiDPI Philosophy. :)
 
 A) Node-editor shift-a node placement not aligned to mouse on Retina...
 
 http://projects.blender.org/tracker/index.php?func=detailaid=35920group_id=9atid=498
 
 B) Node-editor content in a blend is zoomed different on retina vs
 normal...  (this is a bug if we agree on HiDPI Philosophy point #1 above)
 
 Fixing B should automatically fix A. However, if B is not a bug, then
 the screen-to-nodespace coordinate transform for new node creation must be
 changed to adjust for pixelsize. This is in python and AFAIK python does
 not have access to pixelsize currently.
 
 Given the fact every pixel in our UI is opengl code, it's inevitable that
 there's local conversions needed for UI items in views. In general this
 goes it very nice - when code itself is nice and using opengl correctly -
 and messy in parts only when hardcoded values are used.
 
 
 The remainder bugs for HiDPI are mainly because hardly anyone is using it
 yet :)
 Each reported issue is really an easy fix.
 
 
 I agree that today the easiest solution to fix the node-editor bugs above
 is by adding a pixelsize adjustment in the right place, and I 

[Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Ton Roosendaal
Hi,

As I explained before, I made MacBook retina to work for HiDPI in the least 
intrusive way for our code. But I also had to do it in a way it would work for 
everyone.

That meant I had to make two things work independently:

- DPI scaling for UIs in general.
- Apple's HiDPI implementation

Unfortunately these two features were not following an identical specification. 
That meant I had to seperate it in a Mac-only value (Pixelsize for now) and DPI.

For example, a retins dot is default set to be two pixels large. If you start 
Blender with 72 DPI, it will show visually the same button sizes whether you 
are in retina mode or not.

An important design decision from Apple was to decouple Desktop coordinates 
from pixels.
You can have retina desktops of 1024, 1440, 1920 wide which all get mapped to 
the actual 2880 screen pixels. But for each desktop width, a dot and standard 
line widths stay 2 pixels. Still following? :)

Mind boggling... especially if you draw the whole UI in OpenGL.

I'm still waiting for information how Linux or Windows will address HiDPI. 
Hopefully in the same way, but probably not...

-Ton-


Ton Roosendaal  -  t...@blender.org   -   www.blender.org
Chairman Blender Foundation - Producer Blender Institute
Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands



___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Brecht Van Lommel
Hi,

I had a look at this some months ago. For Windows there is a system
DPI that you can configure as a user and there's an API to query it.
It does not do this OS X trick with the 2x pixel size and decoupled
desktop coordinates, all coordinates are in actual pixels. Here's the
info:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd464660(v=vs.85).aspx

There might be some unforeseen issues to solve but a Windows developer
might be able to get this working quickly with just a few changes in
the code.

On Linux I don't know what the solution is, I couldn't even get any
desktop environment configured to properly work on my MacBook Retina.
Typically the advice seems to be to make the fonts bigger, and tweak
some settings to make icons bigger, etc. But that alone doesn't make
things look and work quite right, many things are still too small then
and many applications don't follow these settings anyway. The problem
for us is that there seems to be no standard system wide DPI setting
that can be reliably used. Until there is a standard solution here I
guess this will remain something that the user has to configure
manually.

Brecht.

On Sat, Jun 29, 2013 at 2:22 PM, Ton Roosendaal t...@blender.org wrote:
 Hi,

 As I explained before, I made MacBook retina to work for HiDPI in the least 
 intrusive way for our code. But I also had to do it in a way it would work 
 for everyone.

 That meant I had to make two things work independently:

 - DPI scaling for UIs in general.
 - Apple's HiDPI implementation

 Unfortunately these two features were not following an identical 
 specification. That meant I had to seperate it in a Mac-only value (Pixelsize 
 for now) and DPI.

 For example, a retins dot is default set to be two pixels large. If you 
 start Blender with 72 DPI, it will show visually the same button sizes 
 whether you are in retina mode or not.

 An important design decision from Apple was to decouple Desktop coordinates 
 from pixels.
 You can have retina desktops of 1024, 1440, 1920 wide which all get mapped 
 to the actual 2880 screen pixels. But for each desktop width, a dot and 
 standard line widths stay 2 pixels. Still following? :)

 Mind boggling... especially if you draw the whole UI in OpenGL.

 I'm still waiting for information how Linux or Windows will address HiDPI. 
 Hopefully in the same way, but probably not...

 -Ton-

 
 Ton Roosendaal  -  t...@blender.org   -   www.blender.org
 Chairman Blender Foundation - Producer Blender Institute
 Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands



 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Dan McGrath
Hey Brecht,

Note sure if it would help, but on Linux for X dpi, perhaps these
options might be of help?:

Option UseEdidDpi FALSE
Option DPI 96x96

I need them in my xorg.conf here, but in my case, it is because my
monitor reports poor info. Anyways, just a side thought since you
mentioned. o/


Dan

On Sat, Jun 29, 2013 at 9:51 AM, Brecht Van Lommel
brechtvanlom...@pandora.be wrote:
 Hi,

 I had a look at this some months ago. For Windows there is a system
 DPI that you can configure as a user and there's an API to query it.
 It does not do this OS X trick with the 2x pixel size and decoupled
 desktop coordinates, all coordinates are in actual pixels. Here's the
 info:
 http://msdn.microsoft.com/en-us/library/windows/desktop/dd464660(v=vs.85).aspx

 There might be some unforeseen issues to solve but a Windows developer
 might be able to get this working quickly with just a few changes in
 the code.

 On Linux I don't know what the solution is, I couldn't even get any
 desktop environment configured to properly work on my MacBook Retina.
 Typically the advice seems to be to make the fonts bigger, and tweak
 some settings to make icons bigger, etc. But that alone doesn't make
 things look and work quite right, many things are still too small then
 and many applications don't follow these settings anyway. The problem
 for us is that there seems to be no standard system wide DPI setting
 that can be reliably used. Until there is a standard solution here I
 guess this will remain something that the user has to configure
 manually.

 Brecht.

 On Sat, Jun 29, 2013 at 2:22 PM, Ton Roosendaal t...@blender.org wrote:
 Hi,

 As I explained before, I made MacBook retina to work for HiDPI in the least 
 intrusive way for our code. But I also had to do it in a way it would work 
 for everyone.

 That meant I had to make two things work independently:

 - DPI scaling for UIs in general.
 - Apple's HiDPI implementation

 Unfortunately these two features were not following an identical 
 specification. That meant I had to seperate it in a Mac-only value 
 (Pixelsize for now) and DPI.

 For example, a retins dot is default set to be two pixels large. If you 
 start Blender with 72 DPI, it will show visually the same button sizes 
 whether you are in retina mode or not.

 An important design decision from Apple was to decouple Desktop coordinates 
 from pixels.
 You can have retina desktops of 1024, 1440, 1920 wide which all get mapped 
 to the actual 2880 screen pixels. But for each desktop width, a dot and 
 standard line widths stay 2 pixels. Still following? :)

 Mind boggling... especially if you draw the whole UI in OpenGL.

 I'm still waiting for information how Linux or Windows will address HiDPI. 
 Hopefully in the same way, but probably not...

 -Ton-

 
 Ton Roosendaal  -  t...@blender.org   -   www.blender.org
 Chairman Blender Foundation - Producer Blender Institute
 Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands



 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Brecht Van Lommel
It's not a reliable value to use, because it's not correctly reported
by many monitors, and does not actually correspond to the DPI assumed
by any other UI toolkit. I've looked for the right value for quite a
while, but only conclusion I can find is that none of
Gnome/KDE/Xfce/GTK/Qt/.. have proper high DPI support on Linux/X11,
it's just not implemented. If one of them did we could copy the same
mechanism to detect DPI.

On Sat, Jun 29, 2013 at 4:32 PM, Dan McGrath danmcgrath...@gmail.com wrote:
 Hey Brecht,

 Note sure if it would help, but on Linux for X dpi, perhaps these
 options might be of help?:

 Option UseEdidDpi FALSE
 Option DPI 96x96

 I need them in my xorg.conf here, but in my case, it is because my
 monitor reports poor info. Anyways, just a side thought since you
 mentioned. o/


 Dan

 On Sat, Jun 29, 2013 at 9:51 AM, Brecht Van Lommel
 brechtvanlom...@pandora.be wrote:
 Hi,

 I had a look at this some months ago. For Windows there is a system
 DPI that you can configure as a user and there's an API to query it.
 It does not do this OS X trick with the 2x pixel size and decoupled
 desktop coordinates, all coordinates are in actual pixels. Here's the
 info:
 http://msdn.microsoft.com/en-us/library/windows/desktop/dd464660(v=vs.85).aspx

 There might be some unforeseen issues to solve but a Windows developer
 might be able to get this working quickly with just a few changes in
 the code.

 On Linux I don't know what the solution is, I couldn't even get any
 desktop environment configured to properly work on my MacBook Retina.
 Typically the advice seems to be to make the fonts bigger, and tweak
 some settings to make icons bigger, etc. But that alone doesn't make
 things look and work quite right, many things are still too small then
 and many applications don't follow these settings anyway. The problem
 for us is that there seems to be no standard system wide DPI setting
 that can be reliably used. Until there is a standard solution here I
 guess this will remain something that the user has to configure
 manually.

 Brecht.

 On Sat, Jun 29, 2013 at 2:22 PM, Ton Roosendaal t...@blender.org wrote:
 Hi,

 As I explained before, I made MacBook retina to work for HiDPI in the least 
 intrusive way for our code. But I also had to do it in a way it would work 
 for everyone.

 That meant I had to make two things work independently:

 - DPI scaling for UIs in general.
 - Apple's HiDPI implementation

 Unfortunately these two features were not following an identical 
 specification. That meant I had to seperate it in a Mac-only value 
 (Pixelsize for now) and DPI.

 For example, a retins dot is default set to be two pixels large. If you 
 start Blender with 72 DPI, it will show visually the same button sizes 
 whether you are in retina mode or not.

 An important design decision from Apple was to decouple Desktop coordinates 
 from pixels.
 You can have retina desktops of 1024, 1440, 1920 wide which all get 
 mapped to the actual 2880 screen pixels. But for each desktop width, a 
 dot and standard line widths stay 2 pixels. Still following? :)

 Mind boggling... especially if you draw the whole UI in OpenGL.

 I'm still waiting for information how Linux or Windows will address HiDPI. 
 Hopefully in the same way, but probably not...

 -Ton-

 
 Ton Roosendaal  -  t...@blender.org   -   www.blender.org
 Chairman Blender Foundation - Producer Blender Institute
 Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands



 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
 ___
 Bf-committers mailing list
 Bf-committers@blender.org
 http://lists.blender.org/mailman/listinfo/bf-committers
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread David Jeske
I think there are at least three topics worth discussing here..

(a) how should blender appear on a hidpi display, relative to a regular
display (either dual monitor, or when moving a blend file between machines)

(b) how should the Blender code achieve this..

(c) how is hidpi detected on different systems.



first (a)... how should blender appear on hidpi?

On Sat, Jun 29, 2013 at 5:22 AM, Ton Roosendaal t...@blender.org wrote:

 ...it will show visually the same button sizes whether you are in retina
 mode or not.


I think this is the right behavior. Also, when a users has blender visible
on both retina and non-retina displays, those UI should appear the same
size. This requires HiDPI support to use something like the per-surface
pixelsize instead of the the user-preference dpi setting... so the
current strategy makes sense in that regard. (though the user-preference
might be better named ui-scaling, since it really isn't strictly dpi)

now (b)...how should the code achieve this?...

Today there are bugs in this hidpi/pixelsize behavior, and I believe this
is in large part because of how exposed dpi/pixelsize are to drawing/input
code. For example, node-editor and uv-editor do not appear the same size
on retina and non-retina at the same local-zoom, because the current zoom
is not translated for pixelsize. This seems to be the source of another
retina bug, where adding a node using the context menu causes it to appear
at the wrong place on hidpi.

Ton - Do you have any long-term opposition to the code encapsulating
pixelsize (hidpi) and dpi (aka ui scaling) issues at a lower-level -- by
introducing a virtual coordinate system for blender, much like apple has a
virtual coordinate system? This would require changes to 2d drawing code,
as well as 3d view projection setup functions.. but as a benefit would free
(most) other code from dealing with DPI / pixelsize.

I don't know enough to attempt this change now, and it may not be the right
time to do it, since it would make ui-code merges more difficult. However,
I would like to know what you think about it.

In the short-term, it may be easier to fix both the uv-editor and
node-editor to use the current pattern and properly use pixelsize / DPI to
appear the same on retina and non-retina.

finally (c)...how is hidpi detected on different systems, and different
monitors on the same system

On Mac, the system gives you the pixelsize for a display surface, and it
seems to magically deal with windows spanning multiple surfaces, by
telling you one surface DPI and automatically scaling the content for the
other display.

On Linux, there are multiple ways to achieve multi-monitor. Last time I
looked, the most common method was using a dual-headed graphics card with a
super big coordinate space that looks like a single big monitor. I don't
think this can support heterogeneous normal/hi-dpi. Xinerama might be able
to.

AFAIK, Windows still hasn't fully figured out their HiDPI API strategy. I
suspect a hetrogenius normal/hi-dpi setup in windows would be problematic
today...
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Reuben Martin
On Saturday, June 29, 2013 04:47:09 PM Brecht Van Lommel wrote:
 It's not a reliable value to use, because it's not correctly reported
 by many monitors, and does not actually correspond to the DPI assumed
 by any other UI toolkit. I've looked for the right value for quite a
 while, but only conclusion I can find is that none of
 Gnome/KDE/Xfce/GTK/Qt/.. have proper high DPI support on Linux/X11,
 it's just not implemented. If one of them did we could copy the same
 mechanism to detect DPI.

Blog post from yesterday may provide insight into how others are tackling the 
issue.

http://blogs.gnome.org/alexl/2013/06/28/hidpi-support-in-gnome/

-Reuben
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers


Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread Ton Roosendaal
Hi,

 (a) how should blender appear on a hidpi display, relative to a regular
 display (either dual monitor, or when moving a blend file between machines)

That's supported and working already even!

 (b) how should the Blender code achieve this..

Given the fact every pixel in our UI is opengl code, it's inevitable that 
there's local conversions needed for UI items in views. In general this goes it 
very nice - when code itself is nice and using opengl correctly - and messy in 
parts only when hardcoded values are used.

The remainder bugs for HiDPI are mainly because hardly anyone is using it yet :)
Each reported issue is really an easy fix.

For image drawing... we can check on it. I just wasn't sure if you want to have 
zoom level 1 defined as 2 pixels for image pixels... that would be annoying I 
think. When 4k arrives on the desktop (during next years) we can figure out 
better. My experience with 4k production however is that you really want to see 
images as 1 pixel = 1 display pixel.

Not an easy fix in Blender is when 2d view transforms (like nodes) are used 
together with UI widget drawing. I kept this open, knowing node UI future is a 
todo item in general.

 Ton - Do you have any long-term opposition to the code encapsulating
 pixelsize (hidpi) and dpi (aka ui scaling) issues at a lower-level -- by
 introducing a virtual coordinate system for blender, much like apple has a
 virtual coordinate system?

Apple achieves HiDPI only via their own widget and Cocoa APIs. I think Blender 
is the first of non-Cocoa apps in Mac supporting this even. We could do this 
thanks to OpenGL, which is already using coordinate systems for all UI items. 
This is also why the DPI features works so well, and why you can zoom in/out 
for UI elements.

When 4k systems arrive on desktops for other OSes, they probably would just 
keep 1 desktop pixel to stay 1 display pixel. For these situations we can 
simply allow a user to set pixel size to 2, so you get nice lines and 'dot' 
units and buttons draw accordingly. We don't need to use the desktop coordinate 
system mapping from Apple then.

-Ton-

 
 (c) how is hidpi detected on different systems.
 
 
 
 first (a)... how should blender appear on hidpi?
 
 On Sat, Jun 29, 2013 at 5:22 AM, Ton Roosendaal t...@blender.org wrote:
 
 ...it will show visually the same button sizes whether you are in retina
 mode or not.
 
 
 I think this is the right behavior. Also, when a users has blender visible
 on both retina and non-retina displays, those UI should appear the same
 size. This requires HiDPI support to use something like the per-surface
 pixelsize instead of the the user-preference dpi setting... so the
 current strategy makes sense in that regard. (though the user-preference
 might be better named ui-scaling, since it really isn't strictly dpi)
 
 now (b)...how should the code achieve this?...
 
 Today there are bugs in this hidpi/pixelsize behavior, and I believe this
 is in large part because of how exposed dpi/pixelsize are to drawing/input
 code. For example, node-editor and uv-editor do not appear the same size
 on retina and non-retina at the same local-zoom, because the current zoom
 is not translated for pixelsize. This seems to be the source of another
 retina bug, where adding a node using the context menu causes it to appear
 at the wrong place on hidpi.
 
 Ton - Do you have any long-term opposition to the code encapsulating
 pixelsize (hidpi) and dpi (aka ui scaling) issues at a lower-level -- by
 introducing a virtual coordinate system for blender, much like apple has a
 virtual coordinate system? This would require changes to 2d drawing code,
 as well as 3d view projection setup functions.. but as a benefit would free
 (most) other code from dealing with DPI / pixelsize.
 
 I don't know enough to attempt this change now, and it may not be the right
 time to do it, since it would make ui-code merges more difficult. However,
 I would like to know what you think about it.
 
 In the short-term, it may be easier to fix both the uv-editor and
 node-editor to use the current pattern and properly use pixelsize / DPI to
 appear the same on retina and non-retina.
 
 finally (c)...how is hidpi detected on different systems, and different
 monitors on the same system
 
 On Mac, the system gives you the pixelsize for a display surface, and it
 seems to magically deal with windows spanning multiple surfaces, by
 telling you one surface DPI and automatically scaling the content for the
 other display.
 
 On Linux, there are multiple ways to achieve multi-monitor. Last time I
 looked, the most common method was using a dual-headed graphics card with a
 super big coordinate space that looks like a single big monitor. I don't
 think this can support heterogeneous normal/hi-dpi. Xinerama might be able
 to.
 
 AFAIK, Windows still hasn't fully figured out their HiDPI API strategy. I
 suspect a hetrogenius normal/hi-dpi setup in windows would be problematic
 today...
 

Re: [Bf-committers] HiDPI notes for other OS'es

2013-06-29 Thread David Jeske
Looking away from the details for a moment.. It would be helpful to have a
clear Blender HiDPI philosophy, so we know the right way to fix these
bugs... I'll take a shot at this now...

If I understand your philosophy Ton, I think it is:

1) Editors where 2d pixels are not edited (everything except the
uv-editor), should appear to be at the same zoom-level/origin when loaded
on normal and high dpi displays. This means that a single blend file loaded
on normal and high dpi would have 3dviews and node-editors positioned and
zoomed to show roughly the same amount of stuff.

Can we agree on #1?

For image drawing... we can check on it. I just wasn't sure if you want to
 have zoom level 1 defined as 2 pixels for image pixels... that would be
 annoying I think.


Here is a second guidline to explain this...

2) Editors where 2d pixels can be directly edited (today just the
uv-editor), should keep their data-to-screen-pixel ratio constant when
loaded on normal and high dpi display. This means a uv-editor setup zoomed
to take up most of the screen on high-dpi, would be 2-4x the screen size
when loaded on normal dpi.

My sensibilities say to drop #2 and make everything #1. However, I'm not an
artist who paints on 2d uv-maps. It would be good to hear their opinion
here.  If #2 rule stays, it would be useful to know if this applies to
scenerios where the uv-editor is used a results display, such as
render/compositor results -- or only 2d image editing.

We might also consider these possible guidelines:

optional 3) Views showing 2d pixels have an obvious way to get to 1:1
mapping, and an obvious visual that they are in 1:1 mapping.

optional 4) Views showing 2d pixels have zoom steps and/or snaps to make
integer mappins easy to arrive at.

I like #3 more than #4, though I can see arguments for each.



After we get through the philosophy, we can apply it to the details

Not an easy fix in Blender is when 2d view transforms (like nodes) are used
 together with UI widget drawing. I kept this open, knowing node UI future
 is a todo item in general.


I see two related bugs in the node-editor which seem easy to fix, and I
would like to fix... but I don't know the agreed way to fix them without
the above HiDPI Philosophy. :)

A) Node-editor shift-a node placement not aligned to mouse on Retina...

http://projects.blender.org/tracker/index.php?func=detailaid=35920group_id=9atid=498

B) Node-editor content in a blend is zoomed different on retina vs
normal...  (this is a bug if we agree on HiDPI Philosophy point #1 above)

Fixing B should automatically fix A. However, if B is not a bug, then
the screen-to-nodespace coordinate transform for new node creation must be
changed to adjust for pixelsize. This is in python and AFAIK python does
not have access to pixelsize currently.

Given the fact every pixel in our UI is opengl code, it's inevitable that
 there's local conversions needed for UI items in views. In general this
 goes it very nice - when code itself is nice and using opengl correctly -
 and messy in parts only when hardcoded values are used.


The remainder bugs for HiDPI are mainly because hardly anyone is using it
 yet :)
 Each reported issue is really an easy fix.


I agree that today the easiest solution to fix the node-editor bugs above
is by adding a pixelsize adjustment in the right place, and I plan to do it
myself.

It is also easy to manually fix other similar bugs, and teach every
future blender UI coder to properly use DPI and pixelsize in their
screen-to-editor transforms.

However, in continuing to choose the short term easy route, we are
creating needless complexity, where unncessary amounts of code have to deal
with DPI and pixelsize.

I don't believe there is anything inevitable about having all drawing
code know about DPI and pixelsize. OSX Cocoa APIs pretty successfully hide
these details from all code that doesn't care about them by using a virtual
coordinate space. AFAIK, it's an easy but larger refactor to abstract DPI
and pixelsize behind drawing and drawing-setup abstractions -- freeign
future programmers from having to think about it.

Rather than debating what is possible though, perhaps I can rephrase this
as a more practical question When might be a good time to consider
such a large-but-easy refactor patch, given GSOC branch merging and other
such things?  I'd personally like to make this patch and show how it would
work, but there is no hurry, as it's going to be a while before I
understand blender code enough anyhow.
___
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers