diff options
Diffstat (limited to 'platform/javascript')
| -rw-r--r-- | platform/javascript/export/export_plugin.cpp | 24 | ||||
| -rw-r--r-- | platform/javascript/export/export_plugin.h | 3 | ||||
| -rw-r--r-- | platform/javascript/js/libs/library_godot_display.js | 28 | 
3 files changed, 31 insertions, 24 deletions
diff --git a/platform/javascript/export/export_plugin.cpp b/platform/javascript/export/export_plugin.cpp index b99f88d067..0bdee11018 100644 --- a/platform/javascript/export/export_plugin.cpp +++ b/platform/javascript/export/export_plugin.cpp @@ -362,7 +362,7 @@ Ref<Texture2D> EditorExportPlatformJavaScript::get_logo() const {  	return logo;  } -bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { +bool EditorExportPlatformJavaScript::has_valid_export_configuration(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const {  #ifndef DEV_ENABLED  	// We don't provide export templates for the HTML5 platform currently as there  	// is no suitable renderer to use with them. So we forbid exporting and tell @@ -396,7 +396,27 @@ bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p  	valid = dvalid || rvalid;  	r_missing_templates = !valid; -	// Validate the rest of the configuration. +	if (!err.is_empty()) { +		r_error = err; +	} + +	return valid; +} + +bool EditorExportPlatformJavaScript::has_valid_project_configuration(const Ref<EditorExportPreset> &p_preset, String &r_error) const { +#ifndef DEV_ENABLED +	// We don't provide export templates for the HTML5 platform currently as there +	// is no suitable renderer to use with them. So we forbid exporting and tell +	// users why. This is skipped in DEV_ENABLED so that contributors can still test +	// the pipeline once we start having WebGL or WebGPU support. +	r_error = "The HTML5 platform is currently not supported in Godot 4.0, as there is no suitable renderer for it.\n"; +	return false; +#endif + +	String err; +	bool valid = true; + +	// Validate the project configuration.  	if (p_preset->get("vram_texture_compression/for_mobile")) {  		String etc_error = test_etc2(); diff --git a/platform/javascript/export/export_plugin.h b/platform/javascript/export/export_plugin.h index fbaa3615cb..16bab02d54 100644 --- a/platform/javascript/export/export_plugin.h +++ b/platform/javascript/export/export_plugin.h @@ -118,7 +118,8 @@ public:  	virtual String get_os_name() const override;  	virtual Ref<Texture2D> get_logo() const override; -	virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const override; +	virtual bool has_valid_export_configuration(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const override; +	virtual bool has_valid_project_configuration(const Ref<EditorExportPreset> &p_preset, String &r_error) const override;  	virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const override;  	virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override; diff --git a/platform/javascript/js/libs/library_godot_display.js b/platform/javascript/js/libs/library_godot_display.js index c7729a8c5b..768eaf9e1d 100644 --- a/platform/javascript/js/libs/library_godot_display.js +++ b/platform/javascript/js/libs/library_godot_display.js @@ -336,26 +336,12 @@ const GodotDisplay = {  	$GodotDisplay__deps: ['$GodotConfig', '$GodotRuntime', '$GodotDisplayCursor', '$GodotEventListeners', '$GodotDisplayScreen', '$GodotDisplayVK'],  	$GodotDisplay: {  		window_icon: '', -		findDPI: function () { -			function testDPI(dpi) { -				return window.matchMedia(`(max-resolution: ${dpi}dpi)`).matches; -			} -			function bisect(low, high, func) { -				const mid = parseInt(((high - low) / 2) + low, 10); -				if (high - low <= 1) { -					return func(high) ? high : low; -				} -				if (func(mid)) { -					return bisect(low, mid, func); -				} -				return bisect(mid, high, func); -			} -			try { -				const dpi = bisect(0, 800, testDPI); -				return dpi >= 96 ? dpi : 96; -			} catch (e) { -				return 96; -			} +		getDPI: function () { +			// devicePixelRatio is given in dppx +			// https://drafts.csswg.org/css-values/#resolution +			// > due to the 1:96 fixed ratio of CSS *in* to CSS *px*, 1dppx is equivalent to 96dpi. +			const dpi = Math.round(window.devicePixelRatio * 96); +			return dpi >= 96 ? dpi : 96;  		},  	}, @@ -461,7 +447,7 @@ const GodotDisplay = {  	godot_js_display_screen_dpi_get__sig: 'i',  	godot_js_display_screen_dpi_get: function () { -		return GodotDisplay.findDPI(); +		return GodotDisplay.getDPI();  	},  	godot_js_display_pixel_ratio_get__sig: 'f',  |