summaryrefslogtreecommitdiff
path: root/servers/rendering/renderer_rd
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-01-19 16:09:52 +0100
committerRémi Verschelde <rverschelde@gmail.com>2022-01-19 16:09:52 +0100
commitcba2fd2e8080dc999c0473ca09ba23d30fe8cf42 (patch)
treeef0fde4f88ccd116e3ab603ce86a3a8233e71c7d /servers/rendering/renderer_rd
parent82efb1d262aea24b5f742820017fd11c496c3f8c (diff)
Revert "Add new scaling modes for splash screen"
This reverts commit fcc9f5ce396ff921ed8253f657a8c9c38e7a878d. The feature is good but the implementation still needs more work. A new PR will be made with a rework of this commit.
Diffstat (limited to 'servers/rendering/renderer_rd')
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.cpp60
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.h2
2 files changed, 14 insertions, 48 deletions
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
index 009a39749c..2f8ef696cd 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
@@ -159,7 +159,7 @@ void RendererCompositorRD::finalize() {
RD::get_singleton()->free(blit.sampler);
}
-void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color &p_color, RenderingServer::SplashStretchMode p_stretch_mode, bool p_use_filter) {
+void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color &p_color, bool p_scale, bool p_use_filter) {
RD::get_singleton()->prepare_screen_for_drawing();
RID texture = storage->texture_allocate();
@@ -182,56 +182,22 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
Rect2 imgrect(0, 0, p_image->get_width(), p_image->get_height());
Rect2 screenrect;
- switch (p_stretch_mode) {
- case RenderingServer::SPLASH_STRETCH_MODE_DISABLED: {
- screenrect = imgrect;
- screenrect.position += ((window_size - screenrect.size) / 2.0).floor();
- } break;
- case RenderingServer::SPLASH_STRETCH_MODE_KEEP: {
- if (window_size.width > window_size.height) {
- // Scale horizontally.
- screenrect.size.y = window_size.height;
- screenrect.size.x = imgrect.size.x * window_size.height / imgrect.size.y;
- screenrect.position.x = (window_size.width - screenrect.size.x) / 2;
- } else {
- // Scale vertically.
- screenrect.size.x = window_size.width;
- screenrect.size.y = imgrect.size.y * window_size.width / imgrect.size.x;
- screenrect.position.y = (window_size.height - screenrect.size.y) / 2;
- }
- } break;
- case RenderingServer::SPLASH_STRETCH_MODE_KEEP_WIDTH: {
- // Scale vertically.
- screenrect.size.x = window_size.width;
- screenrect.size.y = imgrect.size.y * window_size.width / imgrect.size.x;
- screenrect.position.y = (window_size.height - screenrect.size.y) / 2;
- } break;
- case RenderingServer::SPLASH_STRETCH_MODE_KEEP_HEIGHT: {
- // Scale horizontally.
+ if (p_scale) {
+ if (window_size.width > window_size.height) {
+ //scale horizontally
screenrect.size.y = window_size.height;
screenrect.size.x = imgrect.size.x * window_size.height / imgrect.size.y;
screenrect.position.x = (window_size.width - screenrect.size.x) / 2;
- } break;
- case RenderingServer::SPLASH_STRETCH_MODE_COVER: {
- double window_aspect = (double)window_size.width / window_size.height;
- double img_aspect = imgrect.size.x / imgrect.size.y;
-
- if (window_aspect > img_aspect) {
- // Scale vertically.
- screenrect.size.x = window_size.width;
- screenrect.size.y = imgrect.size.y * window_size.width / imgrect.size.x;
- screenrect.position.y = (window_size.height - screenrect.size.y) / 2;
- } else {
- // Scale horizontally.
- screenrect.size.y = window_size.height;
- screenrect.size.x = imgrect.size.x * window_size.height / imgrect.size.y;
- screenrect.position.x = (window_size.width - screenrect.size.x) / 2;
- }
- } break;
- case RenderingServer::SPLASH_STRETCH_MODE_EXPAND: {
+
+ } else {
+ //scale vertically
screenrect.size.x = window_size.width;
- screenrect.size.y = window_size.height;
- } break;
+ screenrect.size.y = imgrect.size.y * window_size.width / imgrect.size.x;
+ screenrect.position.y = (window_size.height - screenrect.size.y) / 2;
+ }
+ } else {
+ screenrect = imgrect;
+ screenrect.position += ((window_size - screenrect.size) / 2.0).floor();
}
screenrect.position /= window_size;
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.h b/servers/rendering/renderer_rd/renderer_compositor_rd.h
index 6cfd6fa11b..9a992d5819 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.h
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.h
@@ -90,7 +90,7 @@ public:
RendererCanvasRender *get_canvas() { return canvas; }
RendererSceneRender *get_scene() { return scene; }
- void set_boot_image(const Ref<Image> &p_image, const Color &p_color, RenderingServer::SplashStretchMode p_stretch_mode, bool p_use_filter);
+ void set_boot_image(const Ref<Image> &p_image, const Color &p_color, bool p_scale, bool p_use_filter);
void initialize();
void begin_frame(double frame_step);