1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-07 12:54:00 +00:00
OpenMW/apps/openmw/mwgui/backgroundimage.cpp
2022-09-22 21:35:26 +03:00

64 lines
1.6 KiB
C++

#include "backgroundimage.hpp"
#include <MyGUI_Gui.h>
namespace MWGui
{
void BackgroundImage::setBackgroundImage(const std::string& image, bool fixedRatio, bool stretch)
{
if (mChild)
{
MyGUI::Gui::getInstance().destroyWidget(mChild);
mChild = nullptr;
}
if (!stretch)
{
setImageTexture("black");
if (fixedRatio)
mAspect = 4.0 / 3.0;
else
mAspect = 0; // TODO
mChild
= createWidgetReal<MyGUI::ImageBox>("ImageBox", MyGUI::FloatCoord(0, 0, 1, 1), MyGUI::Align::Default);
mChild->setImageTexture(image);
adjustSize();
}
else
{
mAspect = 0;
setImageTexture(image);
}
}
void BackgroundImage::adjustSize()
{
if (mAspect == 0)
return;
MyGUI::IntSize screenSize = getSize();
int leftPadding = std::max(0, static_cast<int>(screenSize.width - screenSize.height * mAspect) / 2);
int topPadding = std::max(0, static_cast<int>(screenSize.height - screenSize.width / mAspect) / 2);
mChild->setCoord(
leftPadding, topPadding, screenSize.width - leftPadding * 2, screenSize.height - topPadding * 2);
}
void BackgroundImage::setSize(const MyGUI::IntSize& _value)
{
MyGUI::Widget::setSize(_value);
adjustSize();
}
void BackgroundImage::setCoord(const MyGUI::IntCoord& _value)
{
MyGUI::Widget::setCoord(_value);
adjustSize();
}
}