Issue 116637 - Replace metafiles with drawinglayer primitives for rendering the slideshow.
Summary: Replace metafiles with drawinglayer primitives for rendering the slideshow.
Alias: None
Product: Impress
Classification: Application
Component: code (show other issues)
Version: DEV300m95
Hardware: All All
: P3 Trivial (vote)
Target Milestone: ---
Assignee: AOO issues mailing list
QA Contact:
Depends on: 116983
  Show dependency tree
Reported: 2011-01-26 14:27 UTC by groucho266
Modified: 2017-05-20 11:08 UTC (History)
5 users (show)

See Also:
Latest Confirmation in: ---
Developer Difficulty: ---


Note You need to log in before you can comment on or make changes to this issue.
Description groucho266 2011-01-26 14:27:29 UTC
The slideshow is rendered via metafiles with all the inherent problems.  Among
them are:

- Many types of information is not represented directly by metafile elements but
has to be encoded in comments.

- No direct access to character bounding boxes.

Using drawinglayer primitives instead has many advantages like

- Code reuse of edit view and presentation reduces display differences.

- More direct access to shape properties allows improvements of display quality
(Characters can be displayed by filling their outline paths.  This allows size
animations that are more smooth.)

- Some old hacks can be eliminated.  One example for this are the chart OLE
objects.  They provide a metafile whose resolution may or may not correspond to
the display of the presentation.  In order to improve the char display quality
these metafiles where re-created before displayed by the slideshow.
Comment 1 groucho266 2011-01-26 15:00:15 UTC
Changes are (mostly) done in drawinglayer and slideshow.

In drawinglayer the new CanvasProces class can render drawinglayer primitives to
an XCanvas.

In slideshow there is a new directory slideshow/source/engine/primitives that
contains tools to ease the handling primitives (corresponding header files can
be found in slideshow/source/inc/primitives.)  One of the new classes is
PrimitiveNode which wraps a single primitives and makes the tree structure of
primitives more easy to handle.

The changes to the existing slide show code basically replace in DocTreeNode the
use of indices into metafile actions with references to PrimitiveNodes.
Comment 2 groucho266 2011-02-16 13:30:21 UTC
Submitted issue 116983 for master page content missing from primitives that are
created by service for pages.
Comment 3 groucho266 2011-02-16 13:31:10 UTC
Changing issue type to enhancement.
Comment 4 Regina Henschel 2012-10-12 12:45:55 UTC
Hi "",
your comments sounds as if you have already worked on it. You mention a directory slideshow/source/engine/primitives and slideshow/source/inc/primitives. But I do not find any of them in the current code. Please, was is the actual state of the work?
Comment 5 Armin Le Grand 2013-06-17 10:17:00 UTC
ALG: Hi groucho266, I am also very interested in your work and success (I am the guy who did the primitives ;-). What exactly are you doing there? Maybe I can support you, I also plan to change slideshow, but also PDF export to primitives over time (where slideshow is possible today, others are not yet since the only app currently completely rendering on primitives is Draw/Impress).
Some comments:
- Why wrap primitives? They are uno objects, thus already refcounted and han be handed over UNO API.
- Why own headers in slideshow? This is a no-go, please use the includes from drawinglayer. If not possible, please describe your reasons not doing so.
- Missing MasterPageContent: There is a task already (submitted by Andre) for this, I am the owner and I can do this best probably.
- Renderer: I am thinking about system-dependent renderers for primitives already, let's avoid double work. The PrimitiveRenderers are also UNO objects, thus making them accessible in a central place and using them for all purposes (the pixelrenderer, Metafilerenderer can stay on it's current implementation) would be much better.

Looking forward to your stuff ;-)
Comment 6 Ariel Constenla-Haile 2013-06-17 14:13:52 UTC
(In reply to Armin Le Grand from comment #5)
> ALG: Hi groucho266

according to bug 118160 comment 15 groucho266 seems to be Andre
Comment 7 Armin Le Grand 2013-06-18 08:40:11 UTC
ALG: Hi Ariel, thanks! I asked and got a yes ;-)
Comment 8 Marcus 2017-05-20 11:08:59 UTC
Reset assigne to the default "".