rendering individual elements of drawings ...
Marco Cecchetti
marco.cecchetti at collabora.com
Wed Jul 10 10:01:42 UTC 2024
Hi Armin,
Il 09/07/24 22:26, Michael Meeks ha scritto:
> Hi Armin,
>
> Currently we're in a bit of a rush; but we have some code that can
> render individual elements of a slide; and I believe we're currently
> doing this by rendering via to a GDI meta-file and then re-rendering to
> pixels.
>
> I would expect that we could do this rather better in future by
> rendering with primitives directly to an outputdevice of some kind.
>
> Would appreciate a quick poke at Marco's code to see how easy that
> is to do - at least if it doesn't slow us down coding time-wise =)
>
> Marco - do you have some pointers ?
I'm trying to subdivide a slide in layers and render them separately:
background, master page objects, static shapes, animated shapes, etc.
In order to do so I adapted the rendering code in the slideshow module
which uses GDI meta-file.
For instance in
https://git.libreoffice.org/core/+/refs/heads/distro/collabora/co-24.04/slideshow/source/engine/slide/slideimpl.cxx,
you can see LOKSlideRenderer::createLayerBitmap and
LOKSlideRenderer::renderLayerBitmapImpl methods. In the latter the call
to pBitmap->draw(pDevicePixelCanvas) resolves in executing meta actions
belonging to a gdi meta-file. In the end it is the same done for
rendering the bitmap when the slideshow is running in Impress:
https://git.libreoffice.org/core/+/refs/heads/distro/collabora/co-24.04/slideshow/source/engine/slide/slideimpl.cxx#942.
I'm not sure at which stage this GDI meta-file is generated and if it's
possible to render an XShape instance in another way. In fact the
slideshow module is very isolated wrt the other LibreOffice modules.
Thanks,
Marco
More information about the LibreOffice
mailing list