diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2022-01-19 16:09:52 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2022-01-19 16:09:52 +0100 |
commit | cba2fd2e8080dc999c0473ca09ba23d30fe8cf42 (patch) | |
tree | ef0fde4f88ccd116e3ab603ce86a3a8233e71c7d /servers/rendering/renderer_rd | |
parent | 82efb1d262aea24b5f742820017fd11c496c3f8c (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.cpp | 60 | ||||
-rw-r--r-- | servers/rendering/renderer_rd/renderer_compositor_rd.h | 2 |
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); |