Loading...
Searching...
No Matches
Displays::Display Struct Reference

Represents a connected display device. More...

Public Attributes

bool isMain
 This will be true if this is the user's main display device.
 
Rectangle< int > totalArea
 The total area of this display in logical pixels including any OS-dependent objects like the taskbar, menu bar, etc.
 
Rectangle< int > userArea
 The total area of this display in logical pixels which isn't covered by OS-dependent objects like the taskbar, menu bar, etc.
 
BorderSize< int > safeAreaInsets
 Represents the area of this display in logical pixels that is not functional for displaying content.
 
BorderSize< int > keyboardInsets
 Represents the area of this display in logical pixels that is obscured by an onscreen keyboard.
 
Point< int > topLeftPhysical
 The top-left of this display in physical coordinates.
 
double scale
 The scale factor of this display.
 
double dpi
 The DPI of the display.
 
std::optional< double > verticalFrequencyHz
 The vertical refresh rate of the display if applicable.
 

Detailed Description

Represents a connected display device.

Member Data Documentation

◆ isMain

bool Displays::Display::isMain

This will be true if this is the user's main display device.

◆ totalArea

Rectangle<int> Displays::Display::totalArea

The total area of this display in logical pixels including any OS-dependent objects like the taskbar, menu bar, etc.

On mobile (Android, iOS) this is the full area of the display.

◆ userArea

Rectangle<int> Displays::Display::userArea

The total area of this display in logical pixels which isn't covered by OS-dependent objects like the taskbar, menu bar, etc.

On mobile (iOS, Android), the system UI will be made transparent whenever possible, and the JUCE app may draw behind these bars. Therefore, on these platforms, the userArea is not restricted by the system UI. Instead, potentially-obscured areas of the display can be found by querying the safeAreaInsets and keyboardInsets.

Mobile platforms that support multiple windows (e.g. Android in split screen) will return the screen area currently available to the application here. The resulting area may be significantly smaller than the total screen area, but may overlap the system decorations.

Referenced by StandaloneFilterWindow::StandaloneFilterWindow().

◆ safeAreaInsets

BorderSize<int> Displays::Display::safeAreaInsets

Represents the area of this display in logical pixels that is not functional for displaying content.

These insets are applied relative to the userArea.

On mobile devices this may be the area covered by display cutouts and notches, where you still want to draw a background but should not position important content.

Note that these insets may change depending on the current state of the system. As a simple example, entering/leaving kiosk mode may cause the system UI visibility to change, which may affect the safe areas. A more complex example would be split-screen state on Android, where an activity occupying the top portion of the screen is likely to have insets for the status bar but not the navigation bar, whereas an activity on the bottom may have navigation insets but not status insets.

◆ keyboardInsets

BorderSize<int> Displays::Display::keyboardInsets

Represents the area of this display in logical pixels that is obscured by an onscreen keyboard.

This is currently only supported on iOS, and on Android 11+.

This will only return the bounds of the keyboard when it is in 'docked' mode. If the keyboard is floating (e.g. on an iPad using the split keyboard mode), no insets will be reported.

◆ topLeftPhysical

Point<int> Displays::Display::topLeftPhysical

The top-left of this display in physical coordinates.

◆ scale

double Displays::Display::scale

The scale factor of this display.

For higher-resolution displays, or displays with a user-defined scale factor set, this may be a value other than 1.0.

This value is used to convert between physical and logical pixels. For example, a Component with size 10x10 will use 20x20 physical pixels on a display with a scale factor of 2.0.

◆ dpi

double Displays::Display::dpi

The DPI of the display.

This is the number of physical pixels per inch. To get the number of logical pixels per inch, divide this by the Display::scale value.

◆ verticalFrequencyHz

std::optional<double> Displays::Display::verticalFrequencyHz

The vertical refresh rate of the display if applicable.

Currently this is only used on Linux for display rate repainting.

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram