slideshow: lok: correct z-order

we need to keep the order correct, especially
when we have stacked shapes which are animated
and some are non-animated.

in case:

non-anim
anim
non-anim
anim

don't allow to join non-animated layers into one

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ic5d94478b691a80fd62853946ebedec075963f44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173116
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177236
Tested-by: Jenkins
This commit is contained in:
Szymon Kłos 2024-09-10 06:29:39 +02:00
parent 4ffd7c1456
commit 51b2f0a1c7
2 changed files with 19 additions and 4 deletions

View file

@ -3178,11 +3178,26 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"index\": 3") >= 0);
CPPUNIT_ASSERT_EQUAL(-1, rJsonMsg.indexOf(u"\"initVisible\""));
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"bitmap\"") >= 0);
debugWriteImageToFile(6, pBuffer, nViewWidth, nViewHeight, rJsonMsg.toUtf8().getStr());
}
{
std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
bool bIsBitmapLayer = false;
OUString rJsonMsg;
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), bIsBitmapLayer, rJsonMsg));
CPPUNIT_ASSERT(bIsBitmapLayer);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"index\": 4") >= 0);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"initVisible\": false") >= 0);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"animated\"") >= 0);
CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"bitmap\"") >= 0);
debugWriteImageToFile(6, pBuffer, nViewWidth, nViewHeight, rJsonMsg.toUtf8().getStr());
debugWriteImageToFile(7, pBuffer, nViewWidth, nViewHeight, rJsonMsg.toUtf8().getStr());
}
{

View file

@ -164,12 +164,12 @@ public:
if (mrRenderState.isObjectInAnimation(pObject))
{
// Animated object has to be only one in the render
mrRenderState.mbSkipAllInThisPass = true;
// Animated object cannot be attached to the previous object
if (!mrRenderState.mbFirstObjectInPass)
return;
// Animated object has to be only one in the render
mrRenderState.mbSkipAllInThisPass = true;
}
if (mrRenderState.meStage == RenderStage::Master && hasFields(pObject)