[HTML5] Detect screen scale and DPI.

`OS.get_screen_scale` will now return the `window.devicePixelRatio`
value, `OS.get_screen_dpi` uses CSS media queries to find approximate
DPI value for the current display.
`OS.get_screen_size` also return the actual screen size (not the CSS
pixel size).
This commit is contained in:
Fabio Alessandrelli 2021-02-05 19:56:56 +01:00
parent e71510097d
commit b3f78687de
4 changed files with 44 additions and 1 deletions

View file

@ -159,7 +159,8 @@ Size2 OS_JavaScript::get_screen_size(int p_screen) const {
EmscriptenFullscreenChangeEvent ev;
EMSCRIPTEN_RESULT result = emscripten_get_fullscreen_status(&ev);
ERR_FAIL_COND_V(result != EMSCRIPTEN_RESULT_SUCCESS, Size2());
return Size2(ev.screenWidth, ev.screenHeight);
double scale = godot_js_display_pixel_ratio_get();
return Size2(ev.screenWidth * scale, ev.screenHeight * scale);
}
void OS_JavaScript::set_window_size(const Size2 p_size) {
@ -1014,6 +1015,18 @@ bool OS_JavaScript::main_loop_iterate() {
return Main::iteration();
}
int OS_JavaScript::get_screen_dpi(int p_screen) const {
return godot_js_display_screen_dpi_get();
}
float OS_JavaScript::get_screen_scale(int p_screen) const {
return godot_js_display_pixel_ratio_get();
}
float OS_JavaScript::get_screen_max_scale() const {
return get_screen_scale();
}
void OS_JavaScript::delete_main_loop() {
memdelete(main_loop);