office-gobmx/slideshow
Noel Grandin cfb2a587bc rename BitmapEx::GetAlpha to GetAlphaMask
to ease the reading of code related to an upcoming patch to convert
transparency to alpha, since there is already a GetAlpha in Color.

Change-Id: I1af0f8f6dd94acfe4673c8556c7aff6c20da3f7a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145209
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-01-11 08:57:13 +00:00
..
inc/pch Drop comphelper::OWeakTypeObject, use cppu::WeakImplHelper<> instead 2022-11-21 19:35:40 +01:00
opengl
qa CppunitTest_slideshow_engine: inherit from UnoApiTest 2022-11-22 12:49:06 +01:00
source rename BitmapEx::GetAlpha to GetAlphaMask 2023-01-11 08:57:13 +00:00
test basegfx: replace typedef with a class B2DSize based on Size2D 2022-09-11 17:16:59 +02:00
util
CppunitTest_slideshow.mk add box2d to CppunitTest_slideshow 2020-08-05 23:31:18 +02:00
CppunitTest_slideshow_engine.mk CppunitTest_slideshow_engine: inherit from UnoApiTest 2022-11-22 12:49:06 +01:00
IwyuFilter_slideshow.yaml Recheck modules s[f-t]* with IWYU 2022-03-01 08:21:00 +01:00
Library_OGLTrans.mk Generally determine Rdb content from gb_*_set_componentfile calls 2021-12-10 08:14:24 +01:00
Library_slideshow.mk tdf#149969 slideshow: handle loop from the animation of a media shape 2022-09-02 12:30:49 +02:00
Makefile re-base on ALv2 code. Includes: 2012-07-11 18:12:35 +01:00
manifest.txt drop unbuilt demoshow 2019-07-15 14:00:00 +02:00
Module_slideshow.mk tdf#149969 slideshow: handle loop from the animation of a media shape 2022-09-02 12:30:49 +02:00
Package_opengl.mk slideshow: Add shadows to the Vortex transition 2016-02-09 17:02:46 +00:00
README.md Updated README.md files to represent current code / use Markdown format 2021-04-07 17:47:16 +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.