mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 18:32:50 +00:00
38 lines
2.7 KiB
Text
38 lines
2.7 KiB
Text
oxygen-style-animated is a branch of trunk/KDE/kdebase/runtime/kstyles/oxygen that introduces smooth animations for the Oxygen widget style.
|
|
|
|
The code is organized as follow:
|
|
--------------------------------
|
|
|
|
1/ oxygenstyle.h and .cpp derive from QCommonStyle and take care of all the painting.
|
|
All 'primitives' are implemented as separate functions with identical prototypes and mapped to the corresponding QStyle primitive element at initialization style.
|
|
|
|
Some of the painting routines have been moved in oxygenstylehelper, for re-usability.
|
|
Additionaly some code that is common to the widget style and the window decoration resides at kdebase/workspace/libs/oxygen.
|
|
|
|
2/ since kde4.5 oxygen allows to drag and move windows by clicking in their empty areas. This is handled in the standalone 'oxygenwindowmanager' class.
|
|
|
|
3/ Since kde4.4, oxygen styles animates most widgets state changes. The animation code is contained in the ./animations and ./transitions subdirectories.
|
|
|
|
Each animation is structured in the following way:
|
|
For each element (e.g. QScrollBar) to be animated there are two classes:
|
|
|
|
- oxygenscrollbardata: contains the needed information, objects to animate a give QScrollBar instance. This usually consist of one or two QTimeLine, an event filter, and some needed flags + geometrical information.
|
|
|
|
- oxygenscrollbarengine: contains the list of all Data objects registered for each new instance of the widget that is animated.
|
|
This is used by the style to get the relevant data matching a given widget when painting the later.
|
|
|
|
Additionaly, two "factory" classes, oxygenanimations and oxygentransitions, keep track of all the engines and engine setup. They serve as an interface between the animations and the KStyle painting primitives.
|
|
|
|
For the animations located in the ./animations subdirectory, how the informations contained by the Data is used to animate a given widget is def in the oxygen KSTyle class.
|
|
|
|
For the animations located in the ./transitions subdirectory, handling the animation is performed using a temporary "cover" widget, namely Oxygen::TransitionWidget, and does not necessit any modification to the oxygen.cpp style itself.
|
|
|
|
Oxygen-style comes with two standalone applications:
|
|
----------------------------------------------------
|
|
|
|
- oxygen-settings, which offers an exhaustive list of configuration options for both the style and the decoration, in addition to the limited set of options available in systemsettings.
|
|
|
|
- oxygen-demo, which offers a showcase of how widgets are rendered with oxygen, and is used notably for debugging, and regression checks.
|
|
|
|
These applications are not available via kde 'start menu'. They must be typed either in a terminal (e.g. konsole) or via krunner.
|
|
|