The KWin::TimeLine class was only a small wrapper around QTimeLine
without adding anything to QTimeLine what is not present in QTimeLine.
The initial idea was to make it possible to provide more curve shapes.
This is now obsoleted by Qt shipping more useful curves with QTimeLine.
So let's clean up a little bit and use QTimeLine directly instead of
the small wrapper.
All effects are adjusted to use QTimeLine directly.
EffectsHandlerImpl just forwards the signals from TabBox. In order
to have a valid pointer to the TabBox, the TabBox is now initialized
before compositing in Workspace.
Rotation is now only handled by the QMatrix4x4 m_rotationMatrix,
so no more need for display lists. Resulting in a cleaner code without
differences between OpenGL 1.x and 2.x/GLES.
This includes quite some refactoring. For the cube cap a VBO is used
instead of glLists and all the required transformations are moved into
paintCap() which makes paintScreen more clean.
Currently the mirroring of bottom texture is still missing and cylinder
and sphere caps are not yet ported to using VBO.
I wouldn't be surprised if it is broken for legacy GL atm.
Currently working:
* cube slide
* basic cube
* rotations
* reflections
Not working:
* Cube Inside effects
* Reflection plane (needs to be done in a shader)
* cube caps
* sphere/cylinder
* filled in areas in multi desktop
Rendering of the EffectFrame is moved into the scene as Scene::EffectFrame with a concrete implementation in SceneXrender and SceneOpenGL.
A factory method for an EffectFrame is added to the EffectsHandler, which is used by the effects.
Next step: pass the EffectFrame through all effects, so that effects can transform, blur, invert whatever it.
svn path=/trunk/KDE/kdebase/workspace/; revision=1151271
There are two small todos: when mixing manual (mouse) rotation with cursor key rotation or zooming the reflection becomes wrong.
FEATURE: 178611
svn path=/trunk/KDE/kdebase/workspace/; revision=962205
* it looks strange
* it changes the projection matrix which makes the code ugly
* it never worked with cylinder or sphere
* it was broken in trunk anyway
svn path=/trunk/KDE/kdebase/workspace/; revision=940977
Plasma frame object. There are two ways to use this class: The first is
in "static" mode which gives the frame a set geometry and will not
change, the second is an automatic mode that creates the smallest
possible frame around the specified contents. Contents can either be
normal text and/or a QPixmap, useful for displaying the caption and icon
of the currently highlighed window.
Known bugs:
- Does not detect Plasma theme changes, known to be in the Plasma
library.
- Slight graphical glitches, known to be in Qt 4.5.0 RC1.
Untested:
- What happens when there is no Plasma theme installed.
svn path=/trunk/KDE/kdebase/workspace/; revision=929324
* Code restructuring and clean-up
* Use of glLists to store the rotation and painting of the cube. That way things are only calculated when something changed. Painting the cube is still required in each frame as it would break all other effects.
* Use face culling to paint the cube in the correct sequence.
* Move loading of all settings to cube effect. In preparation of getting rid of cylinder and sphere classes
Known regression: cylinder and sphere caps are partly broken.
BUG: 171235
svn path=/trunk/KDE/kdebase/workspace/; revision=922023
its own directory, cleaned up the effect config macros and renamed
"MakeTransparent" to "Translucency" so that it matches its visible name.
svn path=/trunk/KDE/kdebase/workspace/; revision=921749