Skip to content

Commit 839600e

Browse files
authored
Use legacy image implementation (no NNAA filter) when not using 9-slice image (luanti-org#12608)
1 parent a2bf3a2 commit 839600e

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/gui/guiFormSpecMenu.cpp

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -825,12 +825,27 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element)
825825
core::rect<s32> middle;
826826
if (parts.size() >= 4)
827827
parseMiddleRect(parts[3], &middle);
828-
829-
GUIAnimatedImage *e = new GUIAnimatedImage(Environment, data->current_parent,
830-
spec.fid, rect);
831-
832-
e->setTexture(texture);
833-
e->setMiddleRect(middle);
828+
829+
// Temporary fix for issue #12581 in 5.6.0.
830+
// Use legacy image when not rendering 9-slice image because GUIAnimatedImage
831+
// uses NNAA filter which causes visual artifacts when image uses alpha blending.
832+
833+
gui::IGUIElement *e;
834+
if (middle.getArea() > 0) {
835+
GUIAnimatedImage *image = new GUIAnimatedImage(Environment, data->current_parent,
836+
spec.fid, rect);
837+
838+
image->setTexture(texture);
839+
image->setMiddleRect(middle);
840+
e = image;
841+
}
842+
else {
843+
gui::IGUIImage *image = Environment->addImage(rect, data->current_parent, spec.fid, nullptr, true);
844+
image->setImage(texture);
845+
image->setScaleImage(true);
846+
image->grab(); // compensate for drop in addImage
847+
e = image;
848+
}
834849

835850
auto style = getDefaultStyleForElement("image", spec.fname);
836851
e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3));

0 commit comments

Comments
 (0)