Commit graph

31 commits

Author SHA1 Message Date
Martin Gräßlin
18cccad806 Introduce a templated animationTime overload for the KConfigXT case
This method can be used to get the animationTime in case a configuration
class generated through KConfigXT is used. In general the configuration
stores the magic value 0 for a property "duration". This magic value
indicates that a hard-coded default value should be used.

So the common logic to test the stored value for 0 and then either pass
the stored value or the default value to animationTime is encapsulated
in this method in a generic way.

A MyEffect can use it in the following way:
animationTime<MyEffectConfig>(200);

BUG: 310646
FIXED-IN: 4.10
REVIEW: 107460
2012-11-25 20:19:31 +01:00
Martin Gräßlin
6d2dfe06e7 Introduce dedicated OpenGL1 and OpenGL2 compositing types
The CompositingType enum turns into flags and two new values are
introduced: OpenGL1Compositing and OpenGL2Compositing.

Those new values are or-ed to OpenGLCompositing so that a simple check
for the flag OpenGLCompositing works in case of one of those two new
values. To make the generic check for OpenGL compositing easier a method
in EffectsHandler is introduced to just check for this.

The scenes now return either OpenGL1Compositing or OpenGL2Compositing
depending on which Scene implementation. None returns OpenGLCompositing.
2012-09-29 15:33:57 +02:00
Francesco Cecconi
062f5ff66b Use KConfigXT in Cube/CubeSlide effect
REVIEW: 106403
2012-09-14 10:39:27 +02:00
Martin Gräßlin
c7262e8bd3 Getter/setters for opacity, saturation and brightness in WindowPaintData
The public member variables for opacity, saturation and brightness
are removed in favor for getter and setters. The variables are
moved into a private class. Those are now qreal instead of double.

To make usage inside the effects easier a multiply method is added
which multiplies the current value with passed in factor and returns
the new value in a functional programming style.

This commit is the top-most of a patch series to refactor
ScreenPaintData and WindowPaintData. Other related commits are:
* 0811772
* ebdc7ec
* 2c8dd8d
* 7699726
* 68e0201
* 611cb09

REVIEW: 105141
BUG: 303314
FIXED-IN: 4.10
2012-07-19 18:25:48 +02:00
Martin Gräßlin
dd067b075b Split out common part of ScreenPaintData and WindowPaintData
New common d-pointered class PaintData is added which cannot
be instantiated.
2012-07-19 18:25:03 +02:00
Martin Gräßlin
a2b0d42916 Replace translation by QVector3D in Screen/Window PaintData 2012-07-19 18:25:03 +02:00
Martin Gräßlin
966047ccd2 Replace custom RotationData with QGraphicsRotation 2012-07-19 18:25:03 +02:00
Philipp Knechtges
93b2674313 kwin: dropping several gl(Push|Pop)(Attrib|Matrix) calls
This makes kwin in OpenGL2 mode more coherent with kwin_gles.
Despite some fullscreen effects they should now make the same
(pure) OpenGL calls.

REVIEW: 103804
2012-04-19 21:01:46 +02:00
Martin Gräßlin
2007a7eab8 Use namespaced parameters in signals
Required to get scripting bindings working.
2012-03-12 21:37:40 +01:00
Martin Gräßlin
fe4329a252 Only call active effects in the effect chain
Each effect is able to declare itself as currently being active,
that is transforming windows or painting or screen or doing anything
during the current rendered frame.

This change eliminates the hottest path inside KWin identified by
callgrind.

REVIEW: 102449
2011-08-29 07:06:58 +02:00
Montel Laurent
62c5a5e276 normalize signal/slots 2011-08-17 23:51:55 +02:00
Martin Gräßlin
f213b7da70 Drop KWin::TimeLine from kwineffects
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.
2011-03-14 22:50:05 +01:00
Martin Gräßlin
32c903b05b Rework signals for move/resize windows
First a signal is emitted when the user starts a move/resize operation.
During the move/resize operation each geometry change emits an update signal.
Last but not least a finish signal is emitted.

This eliminates the specific method for geometry updates in drawbound resize
mode.
2011-03-13 12:41:30 +01:00
Martin Gräßlin
eeb10c69d5 Signal for windowUserMovedResize
In core a new signal is added for maximizedState change of client.
Other function calls remain as direct calls for the moment.
2011-02-28 21:03:13 +01:00
Martin Gräßlin
c3a076b6a5 EffectsHandler emits desktopChanged signal
The first signal used between EffectsHandler and Effects.
The signal is actually emitted by the EffectsHandlerImpl and only
the interested effects connect to this signal.
EffectsHandlerImpl itself is also notified by a signal from Workspace,
allowing to remove one of the many if (effects) checks.
2011-02-25 20:41:10 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Martin Gräßlin
82b8faadab Welcome back Cube effect
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
2011-01-30 14:12:01 +01:00
Martin Gräßlin
633d80001f Add new role, so that fullscreen effects can enforce blurring of windows they know to be translucent and on a fixed position.
Used in cube animation for all sticky windows and in desktop grid for the add/remove desktops window.

svn path=/trunk/KDE/kdebase/workspace/; revision=1137489
2010-06-13 07:36:40 +00:00
Martin Gräßlin
c3476f0345 Add a new option to cube animation to trigger rotating the cube while moving a window towards the screen edge.
The cube starts to rotate before the desktop switches due to active desktop border change. This gives the impression that you drag the cube by moving the window. Of course option is only useful when switching desktop on screen edge is enabled and so this feature is disabled by default.

svn path=/trunk/KDE/kdebase/workspace/; revision=1072640
2010-01-10 15:51:02 +00:00
Martin Gräßlin
e6a90e1a6f Unmanaged windows are always kept in place like panels during the cube switch animation.
That's a small hack to get the desktop switch on screen display to not rotate and by that useable when cube is used.

svn path=/trunk/KDE/kdebase/workspace/; revision=1034981
2009-10-14 07:22:11 +00:00
Martin Gräßlin
c1d4d65ff4 Don't start cube animation if number of desktops has been reduced.
BUG: 196317

svn path=/trunk/KDE/kdebase/workspace/; revision=982057
2009-06-14 20:31:08 +00:00
Martin Gräßlin
f9b3022553 Correcting error introduced with last commit. AnimationTime() has to be used when reading the value from config file to work correctly.
svn path=/trunk/KDE/kdebase/workspace/; revision=973940
2009-05-28 09:13:14 +00:00
Martin Gräßlin
9766a94216 Adjust animation time in cube switch: the complete animation has a fixed time, not the single steps. That fixes a regression compared to 4.2.
svn path=/trunk/KDE/kdebase/workspace/; revision=971743
2009-05-23 11:51:38 +00:00
Martin Gräßlin
1a4b08b36a Add an option to not follow the pager layout in cube switch animation. That brings back the behaviour of cube switch in 4.2.
svn path=/trunk/KDE/kdebase/workspace/; revision=963304
2009-05-04 13:24:55 +00:00
Martin Gräßlin
75346f126b Rotate windows on all desktops by default. Keeping them in place brakes the stacking order during animation.
BUG: 185019

svn path=/trunk/KDE/kdebase/workspace/; revision=928985
2009-02-20 14:04:41 +00:00
Martin Gräßlin
6a671fa2f2 Change the timeline curve shape depending on the number of rotations. If there is only one rotation it is an EaseInOut curve, if there are more than one rotations first is an EaseIn, last an EaseOut all other Linear curves.
svn path=/trunk/KDE/kdebase/workspace/; revision=928255
2009-02-19 09:31:58 +00:00
Martin Gräßlin
05a97d39c8 Adding windows overlapping edges to cube slide animation. Overlapping windows from target desktop are faded in and windows from source desktop are faded out. This looks really good for slow animation speed but for normal speed it's kind of flashy. So perhaps I'll add an option to turn it off...
svn path=/trunk/KDE/kdebase/workspace/; revision=927999
2009-02-18 19:14:47 +00:00
Martin Gräßlin
5e94274eb6 We cannot use glLists for painting the cube. It's causing black windows.
BUG: 183905

svn path=/trunk/KDE/kdebase/workspace/; revision=927767
2009-02-18 11:58:36 +00:00
Martin Gräßlin
7243d7132e Correctly recalculate pending rotations if desktop is changed during animation.
BUG: 183925

svn path=/trunk/KDE/kdebase/workspace/; revision=927417
2009-02-17 12:47:18 +00:00
Lucas Murray
dd28e15a1b Allow desktop effects to access the new DesktopLayout class. Replaced
all code that used calcDesktopLayout() so the function could be removed.
Minor changes to the DesktopLayout class itself.

svn path=/trunk/KDE/kdebase/workspace/; revision=925930
2009-02-14 14:49:46 +00:00
Martin Gräßlin
f7f5bc8326 Split cube mode and animation of desktop switching in separate effects: say hello to CubeSlide effect.
svn path=/trunk/KDE/kdebase/workspace/; revision=922342
2009-02-06 18:53:16 +00:00