On 10/03/2012 12:10 AM, Andreas Holzammer wrote: > I can only add that the reported physical dpi for windows are not the > real physical. They report what the user has set in windows for it, or > better to say it defaults to 96 dpi. There seems to be no api from > windows to find out the actual api, in x11 you are able to get it > somehow with some head stands. I also know that it is not so easy in mac > os x to get it. So very unpleasant these days of touch times. Really sad. > In windows I found a very ugly way to determine the dpi of a screen, > where I did a implementation for kde: > http://quickgit.kde.org/index.php?p=kdepim-runtime.git&a=blob&h=8a17d1d77ae22022cc5436a49cb7be7fa1fe8145&hb=b68e55a2eedd410b9c6a8ca1df63276afe18afe2&f=qml%2Fkde%2Fkdeintegration.cpp > This looks in the registry for the copied edid data of the physical > display and then decodes its physical screen size.
The Windows platform plugin in Qt 5 does this to get the physical size (from which QScreen computes the physical DPI): data.physicalSizeMM = QSizeF(GetDeviceCaps(hdc, HORZSIZE), GetDeviceCaps(hdc, VERTSIZE)); Does this not give the actual physical size? For the logical DPI we do: return QDpi(GetDeviceCaps(hdc, LOGPIXELSX), GetDeviceCaps(hdc, LOGPIXELSY)); The xcb platform plugin gets the physical size from RANDR. Currently the cocoa platform plugin computes the physical size based on the resolution and a hard-coded dpi of 72, which naturally will not give the correct results. -- Samuel _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
