Date: prev next · Thread: first prev next last
2020 Archives by date, by thread · List index


Hi Noel,

On Mon, Apr 13, 2020 at 7:46 PM Noel Grandin <noelgrandin@gmail.com> wrote:

Hi

I notice when performance tuning that our drawinglayer stuff spends quite
some time converting back and forth between XPrimitive2D and BasePrimitive
stuff and copying sequence->vector and vector->sequence.

Now as far as I can see (analysis below), the stuff exposed in our UNO
layer is not usable from extensions because it doesn't tie into anything
useful, so nothing should change as far as that goes.

The benefit is that it becomes easier to optimise the copying and moving
around of this stuff if it is C++ layers all the way down, with no UNO
stuck in the middle of it.

First stage of this change here:
https://gerrit.libreoffice.org/c/core/+/92107


Yeah, that looks great to me, but I don't like that dynamic / static
loading of svgio library (like we already do in graphicfilter). Ideally
svgio shouldn't need to depend on vcl - it just creates the primitives from
the svg file, so vcl could just import svgio normally. For that also
drawinglayer needs to be free from vcl dependency, so it is not a simple
thing to do. I'm experimenting with this in feature/drawinglayercore branch
[1], where I made a drawinglayercore library (like svx and svxcore, which
is not ideal but necessary for simplicity), which will only have the core
drawinglayer stuff and basic primitives and basegfx as the dependency.

[1]
https://cgit.freedesktop.org/libreoffice/core/commit/?h=feature/drawinglayercore&id=3abc1847fb81c358737e1d4443f3e6bf83c7691d

Anyway, an alternative to this would also be to create a
XPrimtiive2DContainer UNO interface, which would allow to "transport" the
Primitive2DContainer unmodified and wouldn't require that we convert, only
on demand convert that to Sequence<XPrimitive2D>. Not sure if this solution
is any better...

Regards, Noel


Regards, Tomaž

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.