Files
Caolán McNamara 115d0f78c6 Resolves: tdf#172918 allow a media link the user inserts in this session
The document-wide link update permission is decided when the document is
loaded. But media files that the users interactively inserts should be
automatically allowed.

Remember on the media object that the user picked the reference and
allow it on its own, the same way a presentation sound the user picks is
allowed. A reference that arrived with the document still needs the
document-wide permission.

since:

commit f0768394c14f928d47547408fc1195368be81f86
Date:   Tue Jul 14 19:12:01 2026 +0100

    put slideshow media links under link control

see also:

commit 0aa870b7b5a6bda50bab50c7a0a41d28fdf4f6ab
Date:   Wed Jun 17 09:37:23 2026 +0000

    bring external presentation sounds under link management

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/7939
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
(cherry picked from commit 17c0a99a0886b397d5682b87209e34c01fdcd44f)
Change-Id: I711fee12416e3e5e91fc07999ea62df32684b625
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211277
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-21 12:17:42 +02:00
..
2025-09-05 19:45:45 +02:00
…
…
…
…

Impress Slideshow Engine

3D Transitions

The 3D transitions are slideshow transition engine using OpenGL and are located in slideshow/source/engine/OGLTrans/. They were initially written by GSOC student Shane.M.Mathews. Radek has later polished the code a bit, added few new 3D transitions, added infrastructure for vertex and fragment shaders. Wrote few transitions with fragment shader too.

Physics Animation Effects

Physics animation effects are simulated by external 2d physics engine library Box2D. They don't directly call Box2D functions but instead use the wrapper in:

  • slideshow/source/inc/box2dtools.hxx
  • slideshow/source/engine/box2dtools.cxx

The wrapper has two corresponding classes to manage the Box2D world and Box2D bodies.

When a physics animation starts, a Box2DWorld is initiated and populated with every shape that is part of the foreground (which are shapes that do not belong to the master slide and not a background shape).

After creation until the end of the slide (not the whole slideshow) the Box2D World isn't destroyed and reused. But the bodies that represent the shapes in the slide get destroyed when there's a point in time that there's no physics animation in progress. And recreated when another physics animation starts.

If there are multiple physics animations in parallel only one of them takes the role of stepping through the simulation.

If there are other animation effects that go in parallel which change the shape position, rotation, or visibility - they also report the change to Box2DWorld. These updates are collected in a queue in Box2DWorld and processed before stepping through the simulation. To achieve convincing results these updates are performed by setting the Box2D body's linear velocity or angular velocity instead of setting directly it's position or rotation.