summaryrefslogtreecommitdiff
path: root/src/gui/guiButtonImage.cpp
diff options
context:
space:
mode:
authorVincent Robinson <robinsonvincent89@gmail.com>2022-07-03 05:52:26 -0700
committerGitHub <noreply@github.com>2022-07-03 08:52:26 -0400
commitf7bcf7fa46a634653e50f9e580faf2a53ab50e88 (patch)
treefc951aac79d80b0a1408d97dd51e8505317527e1 /src/gui/guiButtonImage.cpp
parent5a562a597cb8d1b71c5e0c1247836fe21ebccc56 (diff)
downloadminetest-f7bcf7fa46a634653e50f9e580faf2a53ab50e88.tar.gz
minetest-f7bcf7fa46a634653e50f9e580faf2a53ab50e88.tar.bz2
minetest-f7bcf7fa46a634653e50f9e580faf2a53ab50e88.zip
FormSpec: 9-slice images, animated_images, and fgimg_middle (#12453)
* FormSpec: 9-slice images and animated_images * Add fgimg_middle; clean up code * Address issues, add tests * Fix stupid error; bump formspec version * Re-add image[] elements without a size
Diffstat (limited to 'src/gui/guiButtonImage.cpp')
-rw-r--r--src/gui/guiButtonImage.cpp27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/gui/guiButtonImage.cpp b/src/gui/guiButtonImage.cpp
index b507ffece..4ab770a99 100644
--- a/src/gui/guiButtonImage.cpp
+++ b/src/gui/guiButtonImage.cpp
@@ -32,15 +32,15 @@ using namespace gui;
GUIButtonImage::GUIButtonImage(gui::IGUIEnvironment *environment,
gui::IGUIElement *parent, s32 id, core::rect<s32> rectangle,
ISimpleTextureSource *tsrc, bool noclip)
- : GUIButton (environment, parent, id, rectangle, tsrc, noclip)
+ : GUIButton(environment, parent, id, rectangle, tsrc, noclip)
{
- m_image = Environment->addImage(
- core::rect<s32>(0,0,rectangle.getWidth(),rectangle.getHeight()), this);
- m_image->setScaleImage(isScalingImage());
+ GUIButton::setScaleImage(true);
+ m_image = new GUIAnimatedImage(environment, this, id, rectangle);
sendToBack(m_image);
}
-void GUIButtonImage::setForegroundImage(video::ITexture *image)
+void GUIButtonImage::setForegroundImage(video::ITexture *image,
+ const core::rect<s32> &middle)
{
if (image == m_foreground_image)
return;
@@ -52,11 +52,12 @@ void GUIButtonImage::setForegroundImage(video::ITexture *image)
m_foreground_image->drop();
m_foreground_image = image;
- m_image->setImage(image);
+ m_image->setTexture(image);
+ m_image->setMiddleRect(middle);
}
//! Set element properties from a StyleSpec
-void GUIButtonImage::setFromStyle(const StyleSpec& style)
+void GUIButtonImage::setFromStyle(const StyleSpec &style)
{
GUIButton::setFromStyle(style);
@@ -67,19 +68,13 @@ void GUIButtonImage::setFromStyle(const StyleSpec& style)
getTextureSource());
setForegroundImage(guiScalingImageButton(driver, texture,
- AbsoluteRect.getWidth(), AbsoluteRect.getHeight()));
- setScaleImage(true);
+ AbsoluteRect.getWidth(), AbsoluteRect.getHeight()),
+ style.getRect(StyleSpec::FGIMG_MIDDLE, m_image->getMiddleRect()));
} else {
- setForegroundImage(nullptr);
+ setForegroundImage();
}
}
-void GUIButtonImage::setScaleImage(bool scaleImage)
-{
- GUIButton::setScaleImage(scaleImage);
- m_image->setScaleImage(scaleImage);
-}
-
GUIButtonImage *GUIButtonImage::addButton(IGUIEnvironment *environment,
const core::rect<s32> &rectangle, ISimpleTextureSource *tsrc,
IGUIElement *parent, s32 id, const wchar_t *text,