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. | |
Represents a connected display device.
bool Displays::Display::isMain |
This will be true if this is the user's main display device.
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.
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().
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.
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.
Point<int> Displays::Display::topLeftPhysical |
The top-left of this display in physical coordinates.
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.
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.
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.