office-gobmx/slideshow
Philipp Hofer 156da5b553 tdf#123936 Formatting files in module slideshow with clang-format
Change-Id: I108be5e01ed319f42912a6762ebceb97795113ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105708
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2020-11-19 19:28:27 +01:00
..
inc/pch remove some unused includes and update pches 2020-08-27 20:14:43 +02:00
opengl implement PowerPoint 'flash' slide transition (API CHANGE) 2020-05-08 17:37:26 +02:00
qa
source tdf#123936 Formatting files in module slideshow with clang-format 2020-11-19 19:28:27 +01:00
test Fix (some of) fallouts from tools::Long change to 64 bit on _WIN64 2020-11-13 11:16:08 +01:00
util slideshow: create instances with uno constructors 2020-07-16 12:18:44 +02:00
CppunitTest_slideshow.mk add box2d to CppunitTest_slideshow 2020-08-05 23:31:18 +02:00
IwyuFilter_slideshow.yaml replace usage of blacklist with excludelist for IWYU 2020-07-10 02:03:40 +02:00
Library_OGLTrans.mk always define GLM_FORCE_CTOR_INIT when using glm 2020-02-06 21:04:40 +01:00
Library_slideshow.mk make physics based animation effects part of the animation engine 2020-08-09 23:44:00 +02:00
Makefile
manifest.txt drop unbuilt demoshow 2019-07-15 14:00:00 +02:00
Module_slideshow.mk drop unbuilt demoshow 2019-07-15 14:00:00 +02:00
Package_opengl.mk
README document physics animations and related code 2020-08-31 12:25:59 +02:00

The 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 Box2D World. 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.