Official Murl Engine Forum

Full Version: Screen DPI (ppi or Pixel Density)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, this is a promising engine.
Can I get device specific DPIs through the API?
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
Thanks for the best answer!
The engine seems having almost that we want...
I'll dig it!
Thanks for your interest!

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