offapi/com/sun/star/presentation/XSlideShow.idl |   18 
 sd/source/ui/unoidl/unomodel.cxx                |  114 ---
 slideshow/source/engine/slide/slideimpl.cxx     |  779 ------------------------
 slideshow/source/engine/slideshowimpl.cxx       |   72 --
 slideshow/source/inc/slide.hxx                  |    8 
 5 files changed, 26 insertions(+), 965 deletions(-)

New commits:
commit 6ea738e7f4ffa7d9452c65df48550842f711c6c4
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Fri Sep 13 14:16:44 2024 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Tue Dec 10 11:26:53 2024 +0100

    [API CHANGE] remove LOKSlideRenderer implementation
    
    SlideshowLayerRenderer has replaced it so it's not used anymore
    and we don't need it anymore to compare the output too.
    
    Change-Id: Ic1277d650324937722ec69a91218f23f147d0bde
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178199
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/offapi/com/sun/star/presentation/XSlideShow.idl 
b/offapi/com/sun/star/presentation/XSlideShow.idl
index 622648cf6435..5ab8f364b73f 100644
--- a/offapi/com/sun/star/presentation/XSlideShow.idl
+++ b/offapi/com/sun/star/presentation/XSlideShow.idl
@@ -319,24 +319,6 @@ interface XSlideShow : ::com::sun::star::uno::XInterface
     void setShapeCursor(
         [in] ::com::sun::star::drawing::XShape xShape,
         [in] short nPointerShape );
-
-    /** Used to create a slide renderer for the Online client.<p>
-    */
-    boolean createLOKSlideRenderer(
-        [out] long nViewWidth,
-        [out] long nViewHeight,
-        [in] boolean bRenderMasterPage,
-        [in] boolean bRenderBackground,
-        [in] ::com::sun::star::drawing::XDrawPage xSlide,
-        [in] ::com::sun::star::drawing::XDrawPagesSupplier xDrawPages,
-        [in] ::com::sun::star::animations::XAnimationNode xRootNode );
-
-    /** Used to renderer a slide layer for the Online client.<p>
-    */
-    boolean renderNextLOKSlideLayer(
-        [in] hyper nBufferPointer,
-        [out] boolean bIsBitmapLayer,
-        [out] string rJsonMsg );
 };
 
 }; }; }; };
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 7f099a2b1b30..84af313a3b0e 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4523,20 +4523,15 @@ OString SdXImpressDocument::getPresentationInfo() const
 
 namespace
 {
-// use VCL slideshow renderer or not - leave the old one in for now, so it is 
possible to compare output
-constexpr const bool bVCLSlideShowRenderer = true;
-
 bool isRequestedSlideValid(SdDrawDocument* mpDoc, sal_Int32 nSlideNumber, 
const std::string& slideHash)
 {
     try
     {
-        uno::Reference<drawing::XDrawPagesSupplier> 
xDrawPages(getXWeak(mpDoc->getUnoModel()),
-                                                               
uno::UNO_QUERY_THROW);
-        uno::Reference<container::XIndexAccess> 
xSlides(xDrawPages->getDrawPages(),
-                                                        uno::UNO_QUERY_THROW);
-        uno::Reference<drawing::XDrawPage> 
xSlide(xSlides->getByIndex(nSlideNumber),
-                                                  uno::UNO_QUERY_THROW);
-        if (xSlide.is()) {
+        uno::Reference<drawing::XDrawPagesSupplier> 
xDrawPages(getXWeak(mpDoc->getUnoModel()), uno::UNO_QUERY_THROW);
+        uno::Reference<container::XIndexAccess> 
xSlides(xDrawPages->getDrawPages(), uno::UNO_QUERY_THROW);
+        uno::Reference<drawing::XDrawPage> 
xSlide(xSlides->getByIndex(nSlideNumber), uno::UNO_QUERY_THROW);
+        if (xSlide.is())
+        {
             return slideHash == GetInterfaceHash(xSlide);
         }
     }
@@ -4551,111 +4546,52 @@ bool isRequestedSlideValid(SdDrawDocument* mpDoc, 
sal_Int32 nSlideNumber, const
 bool SdXImpressDocument::createSlideRenderer(
     const OString& rSlideHash,
     sal_Int32 nSlideNumber, sal_Int32& nViewWidth, sal_Int32& nViewHeight,
-    bool bRenderBackground, bool bRenderMasterPage)
+    bool /*bRenderBackground*/, bool /*bRenderMasterPage*/)
 {
     std::string sSlideHash(rSlideHash);
     if (!isRequestedSlideValid(mpDoc, nSlideNumber, sSlideHash))
         return false;
 
-    if (bVCLSlideShowRenderer)
-    {
-        SdPage* pPage = mpDoc->GetSdPage(sal_uInt16(nSlideNumber), 
PageKind::Standard);
-        if (!pPage)
-            return false;
-
-        mpSlideshowLayerRenderer.reset(new SlideshowLayerRenderer(*pPage));
-        Size aDesiredSize(nViewWidth, nViewHeight);
-        Size aCalculatedSize = 
mpSlideshowLayerRenderer->calculateAndSetSizePixel(aDesiredSize);
-        nViewWidth = aCalculatedSize.Width();
-        nViewHeight = aCalculatedSize.Height();
-        return true;
-    }
-    else
-    {
-        DrawViewShell* pViewSh = GetViewShell();
-        if (!pViewSh)
-            return false;
-
-        uno::Reference<presentation::XSlideShow> xSlideShow = 
pViewSh->getXSlideShowInstance();
-        if (!xSlideShow.is())
-            return false;
+    SdPage* pPage = mpDoc->GetSdPage(sal_uInt16(nSlideNumber), 
PageKind::Standard);
+    if (!pPage)
+        return false;
 
-        bool bSuccess = false;
-        try
-        {
-            rtl::Reference<SdXImpressDocument> 
xDrawPages(mpDoc->getUnoModel());
-            uno::Reference<container::XIndexAccess> 
xSlides(xDrawPages->getDrawPages(), uno::UNO_QUERY_THROW);
-            uno::Reference<drawing::XDrawPage> 
xSlide(xSlides->getByIndex(nSlideNumber), uno::UNO_QUERY_THROW);
-            uno::Reference<animations::XAnimationNodeSupplier> 
xAnimNodeSupplier(xSlide, uno::UNO_QUERY_THROW);
-            uno::Reference<animations::XAnimationNode> xAnimNode = 
xAnimNodeSupplier->getAnimationNode();
-
-            bSuccess = xSlideShow->createLOKSlideRenderer(nViewWidth, 
nViewHeight,
-                    bRenderMasterPage, bRenderBackground,
-                    xSlide, xDrawPages, xAnimNode);
-        }
-        catch (uno::Exception&)
-        {
-            TOOLS_WARN_EXCEPTION( "sd", 
"SdXImpressDocument::createLOKSlideRenderer: failed" );
-        }
-        return bSuccess;
-    }
+    mpSlideshowLayerRenderer.reset(new SlideshowLayerRenderer(*pPage));
+    Size aDesiredSize(nViewWidth, nViewHeight);
+    Size aCalculatedSize = 
mpSlideshowLayerRenderer->calculateAndSetSizePixel(aDesiredSize);
+    nViewWidth = aCalculatedSize.Width();
+    nViewHeight = aCalculatedSize.Height();
+    return true;
 }
 
 void SdXImpressDocument::postSlideshowCleanup()
 {
-    if (bVCLSlideShowRenderer)
-    {
-        mpSlideshowLayerRenderer.reset();
-    }
-    else
-    {
     DrawViewShell* pViewSh = GetViewShell();
     if (!pViewSh)
         return;
 
     pViewSh->destroyXSlideShowInstance();
 }
-}
 
 bool SdXImpressDocument::renderNextSlideLayer(unsigned char* pBuffer, bool& 
bIsBitmapLayer, OUString& rJsonMsg)
 {
-    if (bVCLSlideShowRenderer)
-    {
-        bool bDone = true;
-
-        if (!mpSlideshowLayerRenderer)
-            return bDone;
-
-        OString sMsg;
-        bool bOK = mpSlideshowLayerRenderer->render(pBuffer, sMsg);
-
-        if (bOK)
-        {
-            rJsonMsg = OUString::fromUtf8(sMsg);
-            bIsBitmapLayer = true;
-            bDone = false;
-        }
+    bool bDone = true;
 
+    if (!mpSlideshowLayerRenderer)
         return bDone;
-    }
-    else
-    {
-    DrawViewShell* pViewSh = GetViewShell();
-    if (!pViewSh)
-        return true;
 
-    uno::Reference<presentation::XSlideShow> xSlideShow = 
pViewSh->getXSlideShowInstance();
-    if (!xSlideShow.is())
-        return true;
+    OString sMsg;
+    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, sMsg);
 
-    auto nBufferPointer = 
sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(pBuffer));
-    sal_Bool bBitmapLayer = false;
-    bool bDone = xSlideShow->renderNextLOKSlideLayer(nBufferPointer, 
bBitmapLayer, rJsonMsg);
-    bIsBitmapLayer = bBitmapLayer;
+    if (bOK)
+    {
+        rJsonMsg = OUString::fromUtf8(sMsg);
+        bIsBitmapLayer = true;
+        bDone = false;
+    }
 
     return bDone;
 }
-}
 
 SdrModel& SdXImpressDocument::getSdrModelFromUnoModel() const
 {
diff --git a/slideshow/source/engine/slide/slideimpl.cxx 
b/slideshow/source/engine/slide/slideimpl.cxx
index 1f5f7dd43c6e..97bce331aed2 100644
--- a/slideshow/source/engine/slide/slideimpl.cxx
+++ b/slideshow/source/engine/slide/slideimpl.cxx
@@ -67,736 +67,6 @@ namespace slideshow::internal
 
 namespace
 {
-basegfx::B2IVector getSlideSizePixel(const basegfx::B2DVector& rSlideSize,
-                                     const basegfx::B2DHomMatrix& 
rTransformation)
-{
-    const basegfx::B2DRange aRect(0, 0, rSlideSize.getX(), rSlideSize.getY());
-
-    basegfx::B2DRange aTmpRect = 
canvas::tools::calcTransformedRectBounds(aRect, rTransformation);
-
-    // #i42440# Returned slide size is one pixel too small, as
-    // rendering happens one pixel to the right and below the
-    // actual bound rect.
-    return basegfx::B2IVector(basegfx::fround(aTmpRect.getRange().getX()) + 1,
-                              basegfx::fround(aTmpRect.getRange().getY()) + 1);
-}
-
-basegfx::B2DHomMatrix createTransformation(Size& rDeviceSize, const Size& 
rSlideSize )
-{
-    basegfx::B2DHomMatrix aViewTransform(1, 0, 0, 0, 1, 0);
-
-    const Size aWindowSize( rDeviceSize );
-    Size aOutputSize( aWindowSize );
-    Size aPageSize( rSlideSize );
-
-    const double page_ratio = static_cast<double>(aPageSize.Width()) / 
static_cast<double>(aPageSize.Height());
-    const double output_ratio = static_cast<double>(aOutputSize.Width()) / 
static_cast<double>(aOutputSize.Height());
-
-    if( page_ratio > output_ratio )
-    {
-        aOutputSize.setHeight( ( aOutputSize.Width() * aPageSize.Height() ) / 
aPageSize.Width() );
-    }
-    else if( page_ratio < output_ratio )
-    {
-        aOutputSize.setWidth( ( aOutputSize.Height() * aPageSize.Width() ) / 
aPageSize.Height() );
-    }
-
-    // Reduce available width by one, as the slides might actually
-    // render one pixel wider and higher as aPageSize below specifies
-    // (when shapes of page size have visible border lines)
-    aOutputSize.AdjustWidth( -1 );
-    aOutputSize.AdjustHeight( -1 );
-
-    rDeviceSize = aOutputSize;
-
-    // scale presentation into available window rect (minus 10%); center in 
the window
-    aViewTransform = 
basegfx::utils::createScaleB2DHomMatrix(aOutputSize.Width(), 
aOutputSize.Height());
-
-    if (basegfx::fTools::equalZero(aViewTransform.get(0,0)) ||
-        basegfx::fTools::equalZero(aViewTransform.get(1,1)))
-    {
-        OSL_FAIL( "SlideView::SlideView(): Singular matrix!" );
-
-        aViewTransform = basegfx::B2DHomMatrix::abcdef(1, 0, 0, 0, 1, 0);
-    }
-
-    basegfx::B2DHomMatrix aScaleMatrix;
-    aScaleMatrix.scale( 1.0 / rSlideSize.getWidth(), 1.0 / 
rSlideSize.getHeight() );
-    aViewTransform = aViewTransform * aScaleMatrix;
-
-    return aViewTransform;
-}
-
-OUString getPlaceholderType(std::u16string_view sShapeType)
-{
-    OUString aType;
-    if (sShapeType == u"com.sun.star.presentation.SlideNumberShape")
-        aType = u"SlideNumber"_ustr;
-    if (sShapeType == u"com.sun.star.presentation.FooterShape")
-        aType = u"Footer"_ustr;
-    if (sShapeType == u"com.sun.star.presentation.DateTimeShape")
-        aType = u"DateTime"_ustr;
-
-    return aType;
-}
-
-void appendImageInfoPlaceholder(tools::JsonWriter& rJsonWriter)
-{
-    auto aContentNode = rJsonWriter.startNode("content");
-    rJsonWriter.put("type", "%IMAGETYPE%");
-    rJsonWriter.put("checksum", "%IMAGECHECKSUM%");
-}
-
-class LOKSlideRenderer
-{
-public:
-    enum LayerGroupType
-    {
-        BACKGROUND,
-        MASTER_PAGE,
-        DRAW_PAGE,
-        TEXT_FIELDS
-    };
-public:
-    LOKSlideRenderer(const Size& rViewSize, const Size& rSlideSize,
-                     bool bRenderBackground, bool bRenderMasterPageObjects,
-                     const uno::Reference<drawing::XDrawPage>& rxDrawPage,
-                     const uno::Reference<drawing::XDrawPagesSupplier>& 
rxDrawPagesSupplier,
-                     const uno::Reference<animations::XAnimationNode>& 
rxRootNode,
-                     const SlideShowContext& rContext,
-                     const std::shared_ptr<LayerManager>& pLayerManager,
-                     bool bSkipAnimations);
-
-    void renderNextLayer(unsigned char* pBuffer);
-
-    const Size& getDeviceSize() const { return maDeviceSize; }
-    bool isSlideRenderingDone() const { return mbSlideRenderingDone; }
-    bool isBitmapLayer() const { return mbIsBitmapLayer; }
-
-    const OString& getJsonMessage() const { return msLastJsonMessage; }
-
-private:
-    void collectAnimatedShapes();
-
-    void renderImpl(LayerGroupType eLayersSet, unsigned char* pBuffer);
-    void renderBackgroundImpl(VirtualDevice& rDevice);
-    void renderTextFieldsImpl(VirtualDevice& rDevice);
-    void renderMasterPageImpl(VirtualDevice& rDevice);
-    void renderDrawPageImpl(VirtualDevice& rDevice);
-
-    void renderLayerImpl(VirtualDevice& rDevice, tools::JsonWriter& 
rJsonWriter);
-    void renderAnimatedShapeImpl(VirtualDevice& rDevice, const 
std::shared_ptr<Shape>& pShape,
-                                 tools::JsonWriter& rJsonWriter);
-
-    SlideBitmapSharedPtr createLayerBitmap(const ::cppcanvas::CanvasSharedPtr& 
pCanvas,
-                                           const ::basegfx::B2ISize& rBmpSize 
) const;
-    void renderLayerBitmapImpl(VirtualDevice& rDevice);
-
-private:
-    Size maDeviceSize;
-    Size maSlideSize;
-    //bool mbRenderBackground;
-    //bool mbRenderMasterPageObjects;
-    basegfx::B2DHomMatrix maTransformation;
-    uno::Reference<drawing::XDrawPage> mxDrawPage;
-    uno::Reference<drawing::XDrawPagesSupplier> mxDrawPagesSupplier;
-    uno::Reference<animations::XAnimationNode> mxRootNode;
-    const SlideShowContext& mrContext;
-    std::shared_ptr<LayerManager> mpLayerManager;
-    uno::Reference<drawing::XDrawPage> mxMasterPage;
-    std::shared_ptr<ShapeImporter> mpTFShapesFunctor;
-    std::shared_ptr<ShapeImporter> mpMPShapesFunctor;
-    std::shared_ptr<ShapeImporter> mpShapesFunctor;
-    std::unordered_map< BitmapChecksum, BitmapEx > maBitmapMap;
-    std::unordered_map<std::string, bool> maAnimatedShapeVisibilityMap;
-
-    sal_uInt32 mnMPLayerIndex;
-    sal_uInt32 mnDPLayerIndex;
-    bool mbBackgroundRenderingDone;
-    bool mbTextFieldsRenderingDone;
-    bool mbMasterPageRenderingDone;
-    bool mbDrawPageRenderingDone;
-    bool mbSlideRenderingDone;
-    bool mbIsPageNumberVisible;
-    bool mbIsDateTimeVisible;
-    bool mbIsFooterVisible;
-    ShapeSharedPtr mpDPLastAnimatedShape;
-    OUString msLastPlaceholder;
-
-    bool mbIsBitmapLayer;
-    bool mbSkipAnimations = false;
-    OString msLastJsonMessage;
-};
-
-LOKSlideRenderer::LOKSlideRenderer(const Size& rViewSize, const Size& 
rSlideSize,
-                                   bool /*bRenderBackground*/, bool 
/*bRenderMasterPageObjects*/,
-                                   const uno::Reference<drawing::XDrawPage>& 
rxDrawPage,
-                                   const 
uno::Reference<drawing::XDrawPagesSupplier>& rxDrawPagesSupplier,
-                                   const 
uno::Reference<animations::XAnimationNode>& rxRootNode,
-                                   const SlideShowContext& rContext,
-                                   const std::shared_ptr<LayerManager>& 
pLayerManager,
-                                   bool bSkipAnimations)
-
-  : maDeviceSize(rViewSize),
-    maSlideSize(rSlideSize),
-    //mbRenderBackground(bRenderBackground),
-    //mbRenderMasterPageObjects(bRenderMasterPageObjects),
-    maTransformation(createTransformation(maDeviceSize, maSlideSize)),
-    mxDrawPage(rxDrawPage),
-    mxDrawPagesSupplier(rxDrawPagesSupplier),
-    mxRootNode(rxRootNode),
-    mrContext(rContext),
-    mpLayerManager(pLayerManager),
-    mnMPLayerIndex(0),
-    mnDPLayerIndex(0),
-    mbBackgroundRenderingDone(false),
-    mbTextFieldsRenderingDone(false),
-    mbMasterPageRenderingDone(false),
-    mbDrawPageRenderingDone(false),
-    mbSlideRenderingDone(false),
-    mbIsPageNumberVisible(true),
-    mbIsDateTimeVisible(true),
-    mbIsFooterVisible(true),
-    mbIsBitmapLayer(false),
-    mbSkipAnimations(bSkipAnimations)
-{
-    uno::Reference< drawing::XMasterPageTarget > xMasterPageTarget( 
mxDrawPage, uno::UNO_QUERY );
-    if( xMasterPageTarget.is() )
-    {
-        mxMasterPage = xMasterPageTarget->getMasterPage();
-        uno::Reference< drawing::XShapes > xMasterPageShapes = mxMasterPage;
-        OSL_ASSERT(mxDrawPage.is() && mxMasterPage.is() && 
xMasterPageShapes.is());
-
-        uno::Reference<beans::XPropertySet> xPropSet(mxDrawPage, 
uno::UNO_QUERY);
-        OSL_ASSERT(xPropSet.is());
-
-        bool bBackgroundVisibility = true; // default visible
-        xPropSet->getPropertyValue("IsBackgroundVisible")  >>= 
bBackgroundVisibility;
-        mbBackgroundRenderingDone = !bBackgroundVisibility;
-
-        bool bBackgroundObjectsVisibility = true; // default visible
-        xPropSet->getPropertyValue("IsBackgroundObjectsVisible") >>= 
bBackgroundObjectsVisibility;
-        mbTextFieldsRenderingDone = mbMasterPageRenderingDone = 
!bBackgroundObjectsVisibility;
-
-        // try to skip empty layer
-        if (bBackgroundObjectsVisibility)
-        {
-            xPropSet->getPropertyValue("IsPageNumberVisible") >>= 
mbIsPageNumberVisible;
-            xPropSet->getPropertyValue("IsDateTimeVisible") >>= 
mbIsDateTimeVisible;
-            xPropSet->getPropertyValue("IsFooterVisible") >>= 
mbIsFooterVisible;
-            if (mbIsDateTimeVisible)
-            {
-                bool bDateTimeFixed = true; // default: fixed
-                xPropSet->getPropertyValue("IsDateTimeFixed") >>= 
bDateTimeFixed;
-                if (bDateTimeFixed)
-                {
-                    OUString sDateTimeText;
-                    xPropSet->getPropertyValue("DateTimeText") >>= 
sDateTimeText;
-                    mbIsDateTimeVisible = !sDateTimeText.isEmpty();
-                }
-            }
-            if (mbIsFooterVisible)
-            {
-                OUString sFooterText;
-                xPropSet->getPropertyValue("FooterText") >>= sFooterText;
-                mbIsFooterVisible = !sFooterText.isEmpty();
-            }
-
-            mbTextFieldsRenderingDone =
-                !mbIsPageNumberVisible && !mbIsDateTimeVisible && 
!mbIsFooterVisible;
-        }
-
-        if (!mbTextFieldsRenderingDone)
-        {
-            mpTFShapesFunctor
-                = std::make_shared<ShapeImporter>(mxMasterPage, mxDrawPage, 
mxDrawPagesSupplier,
-                                                  mrContext, 0, /* shape num 
starts at 0 */
-                                                  true);
-            mpTFShapesFunctor->setTextFieldsOnly(true);
-        }
-        if (!(mbBackgroundRenderingDone && mbMasterPageRenderingDone))
-        {
-            mpMPShapesFunctor
-                = std::make_shared<ShapeImporter>(mxMasterPage, mxDrawPage, 
mxDrawPagesSupplier,
-                                                  mrContext, 0, /* shape num 
starts at 0 */
-                                                  true);
-            mpMPShapesFunctor->setMasterPageObjectsOnly(true);
-        }
-
-        uno::Reference<drawing::XShapes> const xShapes(mxDrawPage, 
uno::UNO_QUERY_THROW);
-        if (xShapes.is())
-        {
-            mbDrawPageRenderingDone = xShapes->getCount() == 0;
-        }
-
-        if (!mbDrawPageRenderingDone)
-        {
-            mpShapesFunctor
-                = std::make_shared<ShapeImporter>(mxDrawPage, mxDrawPage, 
mxDrawPagesSupplier,
-                                                  mrContext, 0, /* shape num 
starts at 0 */
-                                                  false);
-        }
-    }
-    if (!mbDrawPageRenderingDone)
-        collectAnimatedShapes();
-}
-
-void LOKSlideRenderer::renderNextLayer(unsigned char* pBuffer)
-{
-    OSL_ASSERT(pBuffer);
-
-    msLastJsonMessage = ""_ostr;
-    mbIsBitmapLayer = false;
-
-    if (!mbDrawPageRenderingDone)
-    {
-        renderImpl(LayerGroupType::DRAW_PAGE, pBuffer);
-        if (!msLastJsonMessage.isEmpty())
-            return;
-    }
-
-    mbSlideRenderingDone = true;
-}
-
-void LOKSlideRenderer::renderBackgroundImpl(VirtualDevice& rDevice)
-{
-    if (mbBackgroundRenderingDone)
-        return;
-
-    tools::JsonWriter aJsonWriter;
-    aJsonWriter.put("group", "Background");
-    std::string sSlideHash = GetInterfaceHash(mxDrawPage);
-    aJsonWriter.put("slideHash", sSlideHash);
-
-    ShapeSharedPtr const xBGShape(mpMPShapesFunctor->importBackgroundShape());
-    mpLayerManager->addShape(xBGShape);
-
-    // render and collect bitmap
-    renderLayerBitmapImpl(rDevice);
-    BitmapEx aBitmapEx(
-        rDevice.GetBitmapEx(Point(0, 0), rDevice.GetOutputSizePixel()));
-    BitmapChecksum nChecksum = aBitmapEx.GetChecksum();
-    maBitmapMap[nChecksum] = aBitmapEx;
-
-    // json
-    mbIsBitmapLayer = true;
-    aJsonWriter.put("type", "bitmap");
-    appendImageInfoPlaceholder(aJsonWriter);
-
-    msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-
-    // clean up
-    rDevice.Erase();
-    mpLayerManager->removeShape(xBGShape);
-
-    mbBackgroundRenderingDone = true;
-}
-
-void LOKSlideRenderer::renderMasterPageImpl(VirtualDevice& rDevice)
-{
-    if (!msLastPlaceholder.isEmpty())
-    {
-        tools::JsonWriter aJsonWriter;
-        aJsonWriter.put("group", "MasterPage");
-        aJsonWriter.put("slideHash", GetInterfaceHash(mxDrawPage));
-        aJsonWriter.put("index", mnMPLayerIndex);
-
-        aJsonWriter.put("type", "placeholder");
-        {
-            auto aContentNode = aJsonWriter.startNode("content");
-            aJsonWriter.put("type", msLastPlaceholder);
-        }
-
-        msLastPlaceholder = "";
-        msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-        ++mnMPLayerIndex;
-        return;
-    }
-
-    if (mpMPShapesFunctor->isImportDone())
-        mbMasterPageRenderingDone = true;
-
-    if (mbMasterPageRenderingDone)
-        return;
-
-    tools::JsonWriter aJsonWriter;
-    aJsonWriter.put("group", "MasterPage");
-    aJsonWriter.put("slideHash", GetInterfaceHash(mxDrawPage));
-    aJsonWriter.put("index", mnMPLayerIndex);
-
-    bool bDoRendering = false;
-    while (!mpMPShapesFunctor->isImportDone())
-    {
-        ShapeSharedPtr const pShape(mpMPShapesFunctor->importShape());
-        if (!pShape)
-            continue;
-
-        uno::Reference<drawing::XShape> xShape = pShape->getXShape();
-        if (xShape.is())
-        {
-            OUString sShapeType = xShape->getShapeType();
-            OUString sPlaceholderType = getPlaceholderType(sShapeType);
-            if (sPlaceholderType.isEmpty())
-            {
-                mpLayerManager->addShape(pShape);
-                bDoRendering = true;
-            }
-            else
-            {
-                if (bDoRendering)
-                {
-                    msLastPlaceholder = sPlaceholderType;
-                    renderLayerImpl(rDevice, aJsonWriter);
-                }
-                else
-                {
-                    aJsonWriter.put("type", "placeholder");
-                    {
-                        auto aContentNode = aJsonWriter.startNode("content");
-                        aJsonWriter.put("type", sPlaceholderType);
-                    }
-                }
-                bDoRendering = false;
-                msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-                ++mnMPLayerIndex;
-                return;
-            }
-        }
-    }
-    if (bDoRendering)
-    {
-        renderLayerImpl(rDevice, aJsonWriter);
-    }
-    msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-
-    mbMasterPageRenderingDone = true;
-}
-
-void LOKSlideRenderer::renderTextFieldsImpl(VirtualDevice& rDevice)
-{
-    while( !mpTFShapesFunctor->isImportDone() )
-    {
-        ShapeSharedPtr const pShape(mpTFShapesFunctor->importShape());
-        if (!pShape)
-            continue;
-
-        uno::Reference<drawing::XShape> xShape = pShape->getXShape();
-        if (xShape.is())
-        {
-            OUString sShapeType = xShape->getShapeType();
-            OUString sPlaceholderType = getPlaceholderType(sShapeType);
-            if (!sPlaceholderType.isEmpty())
-            {
-                if ((!mbIsPageNumberVisible && sPlaceholderType == 
"SlideNumber") ||
-                    (!mbIsDateTimeVisible && sPlaceholderType == "DateTime") ||
-                    (!mbIsFooterVisible && sPlaceholderType == "Footer"))
-                    continue;
-
-                mpLayerManager->addShape(pShape);
-
-                // render and collect bitmap
-                renderLayerBitmapImpl(rDevice);
-                BitmapEx aBitmapEx(rDevice.GetBitmapEx(Point(0, 0), 
rDevice.GetOutputSizePixel()));
-                BitmapChecksum nChecksum = aBitmapEx.GetChecksum();
-                maBitmapMap[nChecksum] = aBitmapEx;
-                mbIsBitmapLayer = true;
-
-                // json
-                tools::JsonWriter aJsonWriter;
-                aJsonWriter.put("group", "TextFields");
-                aJsonWriter.put("slideHash", GetInterfaceHash(mxDrawPage));
-                {
-                    auto aContentNode = aJsonWriter.startNode("content");
-                    aJsonWriter.put("type", sPlaceholderType);
-                    appendImageInfoPlaceholder(aJsonWriter);
-                }
-                msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-
-                // clean up
-                rDevice.Erase();
-                mpLayerManager->removeShape(pShape);
-                return;
-            }
-        }
-    }
-    mbTextFieldsRenderingDone = true;
-}
-
-void LOKSlideRenderer::renderLayerImpl(VirtualDevice& rDevice, 
tools::JsonWriter& rJsonWriter)
-{
-    // render and collect bitmap
-    renderLayerBitmapImpl(rDevice);
-    BitmapEx aBitmapEx(rDevice.GetBitmapEx(Point(0, 0), 
rDevice.GetOutputSizePixel()));
-    BitmapChecksum nChecksum = aBitmapEx.GetChecksum();
-    maBitmapMap[nChecksum] = aBitmapEx;
-
-    // json
-    mbIsBitmapLayer = true;
-    rJsonWriter.put("type", "bitmap");
-    appendImageInfoPlaceholder(rJsonWriter);
-
-    // clean up
-    rDevice.Erase();
-    mpLayerManager->removeAllShapes();
-}
-
-void LOKSlideRenderer::renderDrawPageImpl(VirtualDevice& rDevice)
-{
-    if (mpDPLastAnimatedShape)
-    {
-        tools::JsonWriter aJsonWriter;
-        aJsonWriter.put("group", "DrawPage");
-        aJsonWriter.put("slideHash", GetInterfaceHash(mxDrawPage));
-        aJsonWriter.put("index", mnDPLayerIndex);
-
-        renderAnimatedShapeImpl(rDevice, mpDPLastAnimatedShape, aJsonWriter);
-        mpDPLastAnimatedShape.reset();
-        msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-        ++mnDPLayerIndex;
-        return;
-    }
-
-    if (mpShapesFunctor->isImportDone())
-        mbDrawPageRenderingDone = true;
-
-    if (mbDrawPageRenderingDone)
-        return;
-
-    tools::JsonWriter aJsonWriter;
-    aJsonWriter.put("group", "DrawPage");
-    aJsonWriter.put("slideHash", GetInterfaceHash(mxDrawPage));
-    aJsonWriter.put("index", mnDPLayerIndex);
-
-    bool bDoRendering = false;
-
-    std::shared_ptr<ShapeImporter> pMasterShapeImporter = 
std::make_shared<ShapeImporter>(mxMasterPage, mxDrawPage, mxDrawPagesSupplier, 
mrContext, 0, true);
-
-    ShapeSharedPtr const 
pBGShape(pMasterShapeImporter->importBackgroundShape());
-    if (pBGShape)
-    {
-        bDoRendering = true;
-        mpLayerManager->addShape(pBGShape);
-    }
-
-    while (!pMasterShapeImporter->isImportDone())
-    {
-        ShapeSharedPtr const pShape(pMasterShapeImporter->importShape());
-        if (!pShape)
-            continue;
-
-        pShape->setIsForeground(false);
-
-        uno::Reference<drawing::XShape> xShape = pShape->getXShape();
-        if (xShape.is())
-        {
-
-            mpLayerManager->addShape(pShape);
-            bDoRendering = true;
-        }
-    }
-
-    auto nCurrCount = 
static_cast<sal_Int32>(pMasterShapeImporter->getImportedShapesCount());
-    mpShapesFunctor = std::make_shared<ShapeImporter>(mxDrawPage, mxDrawPage, 
mxDrawPagesSupplier, mrContext, nCurrCount, false);
-
-    while (!mpShapesFunctor->isImportDone())
-    {
-        ShapeSharedPtr const pShape(mpShapesFunctor->importShape());
-        if (pShape)
-        {
-            std::string sShapeId = GetInterfaceHash(pShape->getXShape());
-            const auto aIter = maAnimatedShapeVisibilityMap.find(sShapeId);
-            bool bIsAnimated = aIter != maAnimatedShapeVisibilityMap.end();
-            if (!bIsAnimated)
-            {
-                mpLayerManager->addShape(pShape);
-                bDoRendering = true;
-            }
-            else
-            {
-                if (bDoRendering)
-                {
-                    mpDPLastAnimatedShape = pShape;
-                    renderLayerImpl(rDevice, aJsonWriter);
-                }
-                else
-                {
-                    renderAnimatedShapeImpl(rDevice, pShape, aJsonWriter);
-                }
-                msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-                ++mnDPLayerIndex;
-                return;
-            }
-        }
-    }
-    if (bDoRendering)
-    {
-        renderLayerImpl(rDevice, aJsonWriter);
-    }
-    msLastJsonMessage = aJsonWriter.finishAndGetAsOString();
-
-    mbDrawPageRenderingDone = true;
-}
-
-void LOKSlideRenderer::renderAnimatedShapeImpl(VirtualDevice& rDevice,
-                                               const std::shared_ptr<Shape>& 
pShape,
-                                               tools::JsonWriter& rJsonWriter)
-{
-    rJsonWriter.put("type", "animated");
-
-    auto aContentNode = rJsonWriter.startNode("content");
-    std::string sShapeId = GetInterfaceHash(pShape->getXShape());
-    rJsonWriter.put("hash", sShapeId);
-
-    bool bIsInitVisible = maAnimatedShapeVisibilityMap.at(sShapeId);
-    rJsonWriter.put("initVisible", bIsInitVisible);
-    mpLayerManager->addShape(pShape);
-    renderLayerImpl(rDevice, rJsonWriter);
-}
-
-void LOKSlideRenderer::renderImpl(LayerGroupType eLayersSet, unsigned char* 
pBuffer)
-{
-    VclPtr<VirtualDevice> pDevice = 
VclPtr<VirtualDevice>::Create(DeviceFormat::WITH_ALPHA);
-    pDevice->SetBackground(Wallpaper(COL_TRANSPARENT));
-    pDevice->SetOutputSizePixelScaleOffsetAndLOKBuffer(
-        maDeviceSize, Fraction(1.0),
-        Point(), pBuffer);
-
-    pDevice->Erase();
-    OSL_ASSERT(pDevice->GetCanvas().is());
-    mbIsBitmapLayer = false;
-    msLastJsonMessage = ""_ostr;
-    try
-    {
-        switch (eLayersSet)
-        {
-            case LayerGroupType::BACKGROUND: return 
renderBackgroundImpl(*pDevice);
-            case LayerGroupType::MASTER_PAGE: return 
renderMasterPageImpl(*pDevice);
-            case LayerGroupType::DRAW_PAGE: return 
renderDrawPageImpl(*pDevice);
-            case LayerGroupType::TEXT_FIELDS: return 
renderTextFieldsImpl(*pDevice);
-        }
-    }
-    catch (uno::RuntimeException&)
-    {
-        throw;
-    }
-    catch (ShapeLoadFailedException&)
-    {
-        // TODO(E2): Error handling. For now, bail out
-        TOOLS_WARN_EXCEPTION( "slideshow", "SlideImpl::loadShapes(): caught 
ShapeLoadFailedException" );
-        return;
-    }
-    catch (uno::Exception&)
-    {
-        TOOLS_WARN_EXCEPTION( "slideshow", "General Exception");
-        return;
-    }
-}
-
-SlideBitmapSharedPtr LOKSlideRenderer::createLayerBitmap(const 
::cppcanvas::CanvasSharedPtr& pCanvas,
-                                                         const 
::basegfx::B2ISize& rBmpSize ) const
-{
-    ::cppcanvas::BitmapSharedPtr pBitmap(
-        ::cppcanvas::BaseGfxFactory::createBitmap(
-            pCanvas,
-            rBmpSize ) );
-
-    ENSURE_OR_THROW(pBitmap,
-                    "LOKSlideRenderer::createCurrentSlideBitmap(): Cannot 
create page bitmap");
-
-    ::cppcanvas::BitmapCanvasSharedPtr 
pBitmapCanvas(pBitmap->getBitmapCanvas());
-
-    ENSURE_OR_THROW( pBitmapCanvas,
-                    "LOKSlideRenderer::createCurrentSlideBitmap(): Cannot 
create page bitmap canvas" );
-
-    // apply linear part of destination canvas transformation (linear means in 
this context:
-    // transformation without any translational components)
-    ::basegfx::B2DHomMatrix aLinearTransform(maTransformation);
-    aLinearTransform.set( 0, 2, 0.0 );
-    aLinearTransform.set( 1, 2, 0.0 );
-    pBitmapCanvas->setTransformation( aLinearTransform );
-
-    initSlideBackground( pBitmapCanvas, rBmpSize );
-    mpLayerManager->renderTo( pBitmapCanvas );
-
-    return std::make_shared<SlideBitmap>( pBitmap );
-}
-
-void LOKSlideRenderer::renderLayerBitmapImpl(VirtualDevice& rDevice)
-{
-    auto aSize = getSlideSizePixel(basegfx::B2DVector(maSlideSize.getWidth(), 
maSlideSize.getHeight()),
-                                   maTransformation);
-    const basegfx::B2ISize rSlideSize(aSize.getX(), aSize.getY());
-
-    ::cppcanvas::CanvasSharedPtr pCanvas = 
cppcanvas::VCLFactory::createCanvas(rDevice.GetCanvas());
-
-    SlideBitmapSharedPtr pBitmap = createLayerBitmap(pCanvas, rSlideSize);
-
-    // setup a canvas with device coordinate space, the slide
-    // bitmap already has the correct dimension.
-    //    const ::basegfx::B2DPoint aOutPosPixel( rTransformation * 
::basegfx::B2DPoint() );
-    ::cppcanvas::CanvasSharedPtr pDevicePixelCanvas( pCanvas->clone() );
-
-    // render at given output position
-    //    pBitmap->move( aOutPosPixel );
-
-    // clear clip (might have been changed, e.g. from comb
-    // transition)
-    pBitmap->clip( ::basegfx::B2DPolyPolygon() );
-    pBitmap->draw( pDevicePixelCanvas );
-}
-
-void LOKSlideRenderer::collectAnimatedShapes()
-{
-    if (mbSkipAnimations)
-        return;
-
-    if (!mxRootNode.is())
-        return;
-
-    const uno::Sequence< animations::TargetProperties > aProps(
-        TargetPropertiesCreator::createTargetProperties( mxRootNode, true /* 
Initial */ ) );
-
-    for (const auto& rProp : aProps)
-    {
-        uno::Reference<drawing::XShape> xShape(rProp.Target, uno::UNO_QUERY);
-
-        if (!xShape.is())
-        {
-            // not a shape target. Maybe a ParagraphTarget?
-            presentation::ParagraphTarget aParaTarget;
-
-            if (rProp.Target >>= aParaTarget)
-            {
-                // yep, ParagraphTarget found - extract shape
-                // and index
-                xShape = aParaTarget.Shape;
-            }
-        }
-
-        if( xShape.is() )
-        {
-            const uno::Sequence< beans::NamedValue >& rShapeProps( 
rProp.Properties );
-            for (const auto& rShapeProp : rShapeProps)
-            {
-                bool bVisible = false;
-                if (rShapeProp.Name.equalsIgnoreAsciiCase("visibility") &&
-                    extractValue( bVisible,
-                                 rShapeProp.Value,
-                                 nullptr,
-                                 basegfx::B2DVector() ))
-                {
-                    maAnimatedShapeVisibilityMap[GetInterfaceHash(xShape)] = 
bVisible;
-                }
-                else
-                {
-                    OSL_FAIL( "LOKSlideRenderer::collectAnimatedShapes:(): 
Unexpected "
-                             "(and unimplemented) property encountered" );
-                }
-            }
-        }
-    }
-}
-
 class SlideImpl : public Slide,
                   public CursorManager,
                   public ViewEventHandler,
@@ -848,14 +118,6 @@ public:
     // but on canvas-independent basegfx bitmaps
     virtual SlideBitmapSharedPtr getCurrentSlideBitmap( const 
UnoViewSharedPtr& rView ) const override;
 
-    virtual Size createLOKSlideRenderer(int nViewWidth, int nViewHeight,
-                                        bool bRenderBackground,
-                                        bool bRenderMasterPageObjects) 
override;
-
-    virtual bool renderNextLOKSlideLayer(unsigned char* buffer,
-                                         bool& bIsBitmapLayer,
-                                         OString& rJsonMsg) override;
-
 private:
     // ViewEventHandler
     virtual void viewAdded( const UnoViewSharedPtr& rView ) override;
@@ -953,8 +215,6 @@ private:
     SlideAnimations                                     maAnimations;
     PolyPolygonVector                                   maPolygons;
 
-    std::shared_ptr<LOKSlideRenderer> mpLOKRenderer;
-
     RGBColor                                            maUserPaintColor;
     double                                              mdUserPaintStrokeWidth;
     UserPaintOverlaySharedPtr                           mpPaintOverlay;
@@ -1398,43 +658,6 @@ bool SlideImpl::isAnimated()
     return mbHaveAnimations && maAnimations.isAnimated();
 }
 
-Size SlideImpl::createLOKSlideRenderer(int nViewWidth, int nViewHeight,
-                                       bool bRenderBackground, bool 
bRenderMasterPageObjects)
-{
-    if (!mpLOKRenderer)
-    {
-        Size aViewSize(nViewWidth, nViewHeight);
-        Size aSlideSize(getSlideSize().getWidth(), getSlideSize().getHeight());
-        mpLOKRenderer = std::make_shared<LOKSlideRenderer>(aViewSize, 
aSlideSize,
-                                                           bRenderBackground,
-                                                           
bRenderMasterPageObjects,
-                                                           mxDrawPage, 
mxDrawPagesSupplier,
-                                                           mxRootNode, 
maContext, mpLayerManager,
-                                                           true);
-        if (mpLOKRenderer)
-        {
-            return mpLOKRenderer->getDeviceSize();
-        }
-    }
-    return {};
-}
-
-bool SlideImpl::renderNextLOKSlideLayer(unsigned char* buffer, bool& 
bIsBitmapLayer, OString& rJsonMsg)
-{
-    if (mpLOKRenderer)
-    {
-        if (!mpLOKRenderer->isSlideRenderingDone())
-        {
-            mpLOKRenderer->renderNextLayer(buffer);
-            bIsBitmapLayer = mpLOKRenderer->isBitmapLayer();
-            rJsonMsg = mpLOKRenderer->getJsonMessage();
-        }
-
-        return mpLOKRenderer->isSlideRenderingDone();
-    }
-    return true;
-}
-
 SlideBitmapSharedPtr SlideImpl::createCurrentSlideBitmap( const 
UnoViewSharedPtr&   rView,
                                                           const 
::basegfx::B2ISize& rBmpSize ) const
 {
@@ -1873,7 +1096,7 @@ basegfx::B2ISize SlideImpl::getSlideSizeImpl() const
     return basegfx::B2ISize( nDocWidth, nDocHeight );
 }
 
-} // namespace
+} // anonymous namespace
 
 
 SlideSharedPtr createSlide( const uno::Reference< drawing::XDrawPage >&        
 xDrawPage,
diff --git a/slideshow/source/engine/slideshowimpl.cxx 
b/slideshow/source/engine/slideshowimpl.cxx
index f0e91d0bec15..27da8770b43b 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -310,16 +310,6 @@ private:
     virtual void SAL_CALL setShapeCursor(
         uno::Reference<drawing::XShape> const& xShape, sal_Int16 nPointerShape 
) override;
 
-    virtual sal_Bool SAL_CALL createLOKSlideRenderer(
-        sal_Int32& nViewWidth, sal_Int32& nViewHeight,
-        sal_Bool bRenderMasterPage, sal_Bool bRenderBackground,
-        const uno::Reference<drawing::XDrawPage>& xSlide,
-        const uno::Reference<drawing::XDrawPagesSupplier>& xDrawPages,
-        const uno::Reference<animations::XAnimationNode>& xRootNode) override;
-
-    virtual sal_Bool SAL_CALL renderNextLOKSlideLayer(
-        sal_Int64 nBufferPointer, sal_Bool& bIsBitmapLayer, OUString& 
rJsonMsg) override;
-
     // CursorManager
 
 
@@ -1074,68 +1064,6 @@ private:
     bool& mrbSkipSlideTransition;
 };
 
-sal_Bool SlideShowImpl::createLOKSlideRenderer(
-    sal_Int32& nViewWidth, sal_Int32& nViewHeight,
-    sal_Bool bRenderMasterPage, sal_Bool bRenderBackground,
-    uno::Reference<drawing::XDrawPage> const& xDrawPage,
-    uno::Reference<drawing::XDrawPagesSupplier> const& xDrawPages,
-    uno::Reference<animations::XAnimationNode> const&  xRootNode)
-{
-    if (!xDrawPage.is())
-        return false;
-
-    //Retrieve polygons for the current slide
-    PolygonMap::iterator aIter = findPolygons(xDrawPage);
-
-    mpCurrentSlide = createSlide(xDrawPage,
-                                xDrawPages,
-                                xRootNode,
-                                maEventQueue,
-                                maEventMultiplexer,
-                                maScreenUpdater,
-                                maActivitiesQueue,
-                                maUserEventQueue,
-                                *this,
-                                *this,
-                                maViewContainer,
-                                mxComponentContext,
-                                maShapeEventListeners,
-                                maShapeCursors,
-                                (aIter != maPolygons.end()) ? aIter->second :  
PolyPolygonVector(),
-                                maUserPaintColor ? *maUserPaintColor : 
RGBColor(),
-                                maUserPaintStrokeWidth,
-                                !!maUserPaintColor,
-                                mbImageAnimationsAllowed,
-                                mbDisableAnimationZOrder);
-
-    if (!mpCurrentSlide)
-        return false;
-
-    const Size aDeviceSize = 
mpCurrentSlide->createLOKSlideRenderer(nViewWidth, nViewHeight,
-                                                                     
bRenderBackground,
-                                                                     
bRenderMasterPage);
-    nViewWidth = aDeviceSize.getWidth();
-    nViewHeight = aDeviceSize.getHeight();
-
-    return (nViewWidth > 0 && nViewHeight > 0);
-}
-
-sal_Bool SlideShowImpl::renderNextLOKSlideLayer(sal_Int64 nBufferPointer, 
sal_Bool& bIsBitmapLayer, OUString& rJsonMsg)
-{
-    if (!mpCurrentSlide)
-        return true;
-
-    auto pBuffer = reinterpret_cast<unsigned char*>(nBufferPointer);
-    bool bBitmapRendered = false;
-    OString sMsg;
-    bool bDone = mpCurrentSlide->renderNextLOKSlideLayer(pBuffer, 
bBitmapRendered, sMsg);
-
-    bIsBitmapLayer = bBitmapRendered;
-    rJsonMsg = OUString::fromUtf8(sMsg);
-
-    return bDone;
-}
-
 void SlideShowImpl::displaySlide(
     uno::Reference<drawing::XDrawPage> const& xSlide,
     uno::Reference<drawing::XDrawPagesSupplier> const& xDrawPages,
diff --git a/slideshow/source/inc/slide.hxx b/slideshow/source/inc/slide.hxx
index f49a4713d30f..9a7c5ffbdcaf 100644
--- a/slideshow/source/inc/slide.hxx
+++ b/slideshow/source/inc/slide.hxx
@@ -143,14 +143,6 @@ namespace slideshow::internal
             virtual SlideBitmapSharedPtr
                 getCurrentSlideBitmap( const UnoViewSharedPtr& rView ) const = 
0;
 
-            virtual Size createLOKSlideRenderer(int nViewWidth, int 
nViewHeight,
-                                                bool bRenderBackground,
-                                                bool bRenderMasterPageObjects) 
= 0;
-
-            virtual bool renderNextLOKSlideLayer(unsigned char* buffer,
-                                                 bool& bIsBitmapLayer,
-                                                 OString& rJsonMsg) = 0;
-
         protected:
             ~Slide() {}
         };

Reply via email to