diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-03-18 19:13:16 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-03-18 19:13:16 +0100 |
commit | dc70bd27f217413bbda33b4092a3a52a6f1905d5 (patch) | |
tree | 15b8316a8f5ec0bfa01d92451ac2d56174b0a763 /src/gui/Image.cpp | |
parent | 44e7f57d21680de28a5ccd7b6556697666061fe7 (diff) |
Add controller button icons in hotkeys, separate keyboard hotkeys and controller hotkeys
Diffstat (limited to 'src/gui/Image.cpp')
-rw-r--r-- | src/gui/Image.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/gui/Image.cpp b/src/gui/Image.cpp new file mode 100644 index 0000000..b6cec9a --- /dev/null +++ b/src/gui/Image.cpp @@ -0,0 +1,39 @@ +#include "../../include/gui/Image.hpp" +#include "../../include/gui/Utils.hpp" + +#include <mglpp/window/Window.hpp> +#include <mglpp/graphics/Texture.hpp> + +namespace gsr { + Image::Image(mgl::Texture *texture, mgl::vec2f size, ScaleBehavior scale_behavior) : + sprite(texture), size(size), scale_behavior(scale_behavior) + { + + } + + bool Image::on_event(mgl::Event&, mgl::Window&, mgl::vec2f) { + return true; + } + + void Image::draw(mgl::Window &window, mgl::vec2f offset) { + if(!visible) + return; + + sprite.set_size(get_size()); + sprite.set_position((position + offset).floor()); + window.draw(sprite); + } + + mgl::vec2f Image::get_size() { + if(!visible || !sprite.get_texture()) + return {0.0f, 0.0f}; + + const mgl::vec2f sprite_size = sprite.get_texture()->get_size().to_vec2f(); + if(size.x < 0.001f && size.y < 0.001f) + return sprite_size; + else if(scale_behavior == ScaleBehavior::SCALE) + return scale_keep_aspect_ratio(sprite_size, size); + else + return clamp_keep_aspect_ratio(sprite_size, size); + } +}
\ No newline at end of file |