Screen DPI (ppi or Pixel Density)
#1
Apost 
Hi, this is a promising engine.
Can I get device specific DPIs through the API?
Reply
#2
Apost 
Hi!

Yes, you can obtain physical screen properties through the Murl::IPlatformConfiguration object, by using one of these methods:
- GetPhysicalPixelSizeX()
- GetPhysicalPixelSizeY()
- GetPhysicalScreenSizeX()
- GetPhysicalScreenSizeY()

All of these methods return a size value in millimeters. From that you can easily calculate the actual screen DPI values in X and Y direction, for example in the app's Configure() method:
Bool App::MyApplication::Configure(IEngineConfiguration* engineConfig)
{
    const IPlatformConfiguration* platformConfig = engineConfig->GetPlatformConfiguration();
    
    Real dpiX = 1.0 / (platformConfig->GetPhysicalPixelSizeX() * Math::MM_TO_INCHES);
    Real dpiY = 1.0 / (platformConfig->GetPhysicalPixelSizeY() * Math::MM_TO_INCHES);

    // Do something spectacular using these values :)

    return true;
}

This works well for iOS and Android devices. However on Windows and MacOS, the operating system unfortunately does not provide exact monitor information, so the DPI values reported to the engine are only some sort of "good guess". (For example, MacOS X always reports DPI values of 72, even for built-in screens of a MacBook)

Best regards,

dizzy
Reply
#3
Apost 
Thanks for the best answer!
The engine seems having almost that we want...
I'll dig it!
Reply
#4
Apost 
Thanks for your interest!

Don't hesitate to ask if you have any further questions.
Reply


Forum Jump:


Copyright © 2011-2017 Spraylight GmbH.