Re: [boost] GUI coordinate units (Was: GUI foundations)

----Original Message---- From: Stefan Seefeld [mailto:seefeld@sympatico.ca] Sent: 04 October 2005 14:35 To: boost@lists.boost.org Subject: Re: [boost] GUI coordinate units (Was: GUI foundations)
Sizes are usually given in resolution-dependent coordinates (i.e. pixels). If you change resolution, you typically don't do that to expose more detail, but to make your desktop 'bigger' (by making text, widgets, etc. smaller).
This seems to be a common view among developers. I can only assume they are all still young with excellent eyesight. When I moved from 800x600 to 1024x768 what I really wanted was less fuzzy letters (not more letters). I moved from 1024x768 to 1280x1024 because I got given a 17" LCD monitor. Windows-XP doesn't make a bad fist of scaling everything back again to a reasonable size, but a lot of GUIs get a bit messed up because people have done everything in pixels rather than scalable graphics. -- Martin Bonner Martin.Bonner@Pitechnology.com Pi Technology, Milton Hall, Ely Road, Milton, Cambridge, CB4 6WZ, ENGLAND Tel: +44 (0)1223 441434

Martin Bonner wrote:
I moved from 1024x768 to 1280x1024 because I got given a 17" LCD monitor. Windows-XP doesn't make a bad fist of scaling everything back again to a reasonable size, but a lot of GUIs get a bit messed up because people have done everything in pixels rather than scalable graphics.
Exactly. To be clear: moving from a 15" to a 17" monitor would, in my ideal world, have *no* impact on the physical size of the displayed graphics, but rather, would add ~ 1.4" in both dimensions to the useful screen area. How many pixels your display has then only affects the quality of the rendering, exactly as what you were looking for. Of course, this requires a completely vector-graphics-based GUI, which is still the exception. Regards, Stefan

Stefan Seefeld wrote:
Martin Bonner wrote:
I moved from 1024x768 to 1280x1024 because I got given a 17" LCD monitor. Windows-XP doesn't make a bad fist of scaling everything back again to a reasonable size, but a lot of GUIs get a bit messed up because people have done everything in pixels rather than scalable graphics.
Exactly. To be clear: moving from a 15" to a 17" monitor would, in my ideal world, have *no* impact on the physical size of the displayed graphics, but rather, would add ~ 1.4" in both dimensions to the useful screen area. How many pixels your display has then only affects the quality of the rendering, exactly as what you were looking for.
Of course, this requires a completely vector-graphics-based GUI, which is still the exception.
Agree 101% !!! And that is one area I'd love to work on! This will require a new way of thinking and quite a bit of work but I think it's the right way to go. --Expecially since we have cool vector libs like Antigrain: http://www.antigrain.com/. That is why I think forcing the use of only platform specific widgets is very limiting. Take a peek at http://tinyurl.com/c6zhp, for example, where all the GUI elements, including menus and buttons (even scroll bars) are implemented on the basis of Anti-Grain Geometry, so that, all the rendering infrastructure is multi-platform. That's my definition of beautiful! And to follow up on the resolution/scaling issue, this: http://tinyurl.com/8dl6u "demonstrates the capability to display scalable toolbars. In the chemical sketcher the toolbar buttons are represented in a simple vector format and being rendered on the fly. Using pure vector graphics to represent all the GUI elements, including toolbar buttons allows you to get rid of the dependency on the screen resolution." Try that with bland, pre-canned OS factory provided widgets... Cheers, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net

Joel de Guzman wrote:
Agree 101% !!!
And that is one area I'd love to work on! This will require a new way of thinking and quite a bit of work but I think it's the right way to go. --Expecially since we have cool vector libs like Antigrain: http://www.antigrain.com/. That is why I think forcing the use of only platform specific widgets is very limiting. Take a peek at http://tinyurl.com/c6zhp, for example, where all the GUI elements, including menus and buttons (even scroll bars) are implemented on the basis of Anti-Grain Geometry, so that, all the rendering infrastructure is multi-platform. That's my definition of beautiful!
I agree 90%. I don't think it requires a new way of thinking, at least not on the user's side. Vector-based GUI implementations have been around (e.g. NeWS implemented a superset of PostScript in 1993). If you're working on the level of using existing widgets (that's what most programmers do when they implement GUIs for their applications) then there's not much of a difference: you create a widget, place it somewhere and wait for the callbacks to fire. I'm definitely interested in GUI library that is based on a vector graphics kernel. Regarding antigrain: WOW! Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com

Martin Wille wrote:
Joel de Guzman wrote:
Agree 101% !!!
And that is one area I'd love to work on! This will require a new way of thinking and quite a bit of work but I think it's the right way to go. --Expecially since we have cool vector libs like Antigrain: http://www.antigrain.com/. That is why I think forcing the use of only platform specific widgets is very limiting. Take a peek at http://tinyurl.com/c6zhp, for example, where all the GUI elements, including menus and buttons (even scroll bars) are implemented on the basis of Anti-Grain Geometry, so that, all the rendering infrastructure is multi-platform. That's my definition of beautiful!
I agree 90%. I don't think it requires a new way of thinking, at least not on the user's side. Vector-based GUI implementations have been around (e.g. NeWS implemented a superset of PostScript in 1993). If
Sure. I'm not saying that it's never been done before.
you're working on the level of using existing widgets (that's what most programmers do when they implement GUIs for their applications) then there's not much of a difference: you create a widget, place it somewhere and wait for the callbacks to fire.
Yes, but wait till you scale it up, or down ;-) You are forced to the same resolution as that where the widget was designed for.
I'm definitely interested in GUI library that is based on a vector graphics kernel.
I assert that it's the right way to go if you consider your toolkit to be "modern".
Regarding antigrain: WOW!
Indeed! Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net

Joel de Guzman wrote:
Yes, but wait till you scale it up, or down ;-) You are forced to the same resolution as that where the widget was designed for.
That's only if you work at the widget *design* level. This requires vector graphics based working, of course. On widget *use* level, there shouldn't be much of a difference to conventional toolkits. Most people don't design widgets.
I'm definitely interested in GUI library that is based on a vector graphics kernel.
I assert that it's the right way to go if you consider your toolkit to be "modern".
Sure! Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com

Joel de Guzman wrote:
Stefan Seefeld wrote:
Martin Bonner wrote:
I moved from 1024x768 to 1280x1024 because I got given a 17" LCD monitor. Windows-XP doesn't make a bad fist of scaling everything back again to a reasonable size, but a lot of GUIs get a bit messed up because people have done everything in pixels rather than scalable graphics.
Exactly. To be clear: moving from a 15" to a 17" monitor would, in my ideal world, have *no* impact on the physical size of the displayed graphics, but rather, would add ~ 1.4" in both dimensions to the useful screen area. How many pixels your display has then only affects the quality of the rendering, exactly as what you were looking for.
Of course, this requires a completely vector-graphics-based GUI, which is still the exception.
Agree 101% !!!
And that is one area I'd love to work on! This will require a new way of thinking and quite a bit of work but I think it's the right way to go. --Expecially since we have cool vector libs like Antigrain: http://www.antigrain.com/.
Well, in Qt, the QStyle API is passed QPainter, and in Qt4 the latter does antialising, so you can get antialised UI styles today. Say, here's the snapshot they use http://www.trolltech.com/images/screenshots/qt_demos_vectordeform.png (linked from http://www.trolltech.com/products/qt/qt4info.html)
That is why I think forcing the use of only platform specific widgets is very limiting.
Looks like custom styles is the idea everybody agrees on.
Take a peek at http://tinyurl.com/c6zhp, for example, where all the GUI elements, including menus and buttons (even scroll bars) are implemented on the basis of Anti-Grain Geometry, so that, all the rendering infrastructure is multi-platform. That's my definition of beautiful!
I'd say this is OSX clone ;-)
And to follow up on the resolution/scaling issue, this: http://tinyurl.com/8dl6u "demonstrates the capability to display scalable toolbars. In the chemical sketcher the toolbar buttons are represented in a simple vector format and being rendered on the fly. Using pure vector graphics to represent all the GUI elements, including toolbar buttons allows you to get rid of the dependency on the screen resolution."
Yes, vector icons are good idea but let's go back to coordinate unit. If icon is just and SVG file that can be displayed, that why does it matter what unit is used to specify dimensions of the toolbar? Displays still have pixels, and SVG file can be rendered to area of any size. Why don't specify area size in pixels? Again, in a good application the size of toolbar should never be manually set by the programmer, but only by layout of code the library. - Volodya
participants (5)
-
Joel de Guzman
-
Martin Bonner
-
Martin Wille
-
Stefan Seefeld
-
Vladimir Prus