Implement a wobbly like effect for kwin.
svn path=/trunk/KDE/kdebase/workspace/; revision=798476
This commit is contained in:
parent
a6e32ded65
commit
0b6bb6a95f
10 changed files with 2568 additions and 0 deletions
|
@ -109,6 +109,7 @@ if(KWIN_HAVE_OPENGL_COMPOSITING)
|
|||
sharpen.cpp
|
||||
snow.cpp
|
||||
trackmouse.cpp
|
||||
wobblywindows.cpp
|
||||
)
|
||||
install( FILES
|
||||
blur.desktop
|
||||
|
@ -123,6 +124,7 @@ if(KWIN_HAVE_OPENGL_COMPOSITING)
|
|||
sharpen.desktop
|
||||
snow.desktop
|
||||
trackmouse.desktop
|
||||
wobblywindows.desktop
|
||||
DESTINATION ${SERVICES_INSTALL_DIR}/kwin )
|
||||
install( FILES
|
||||
data/trackmouse.png
|
||||
|
@ -161,6 +163,8 @@ if(KWIN_HAVE_OPENGL_COMPOSITING)
|
|||
snow_config.cpp
|
||||
snow_config.ui
|
||||
trackmouse_config.cpp
|
||||
wobblywindows_config.cpp
|
||||
wobblywindows_config.ui
|
||||
)
|
||||
install( FILES
|
||||
coverswitch_config.desktop
|
||||
|
@ -173,6 +177,7 @@ if(KWIN_HAVE_OPENGL_COMPOSITING)
|
|||
showfps_config.desktop
|
||||
snow_config.desktop
|
||||
trackmouse_config.desktop
|
||||
wobblywindows_config.desktop
|
||||
DESTINATION ${SERVICES_INSTALL_DIR}/kwin )
|
||||
endif(KWIN_HAVE_OPENGL_COMPOSITING)
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "sharpen_config.h"
|
||||
#include "snow_config.h"
|
||||
#include "trackmouse_config.h"
|
||||
#include "wobblywindows_config.h"
|
||||
#ifdef KWIN_HAVE_XRENDER_COMPOSITING
|
||||
#include "showfps_config.h"
|
||||
#endif
|
||||
|
@ -73,6 +74,7 @@ KWIN_EFFECT_CONFIG_FACTORY
|
|||
|
||||
#define GL_RENDER_PLUGINS \
|
||||
registerPlugin<KWin::ShowFpsEffectConfig> ("showfps"); \
|
||||
registerPlugin<KWin::WobblyWindowsEffectConfig> ("wobblywindows"); \
|
||||
|
||||
#ifdef KWIN_HAVE_OPENGL_COMPOSITING
|
||||
K_PLUGIN_FACTORY_DEFINITION(EffectFactory,
|
||||
|
|
1130
effects/wobblywindows.cpp
Normal file
1130
effects/wobblywindows.cpp
Normal file
File diff suppressed because it is too large
Load diff
17
effects/wobblywindows.desktop
Normal file
17
effects/wobblywindows.desktop
Normal file
|
@ -0,0 +1,17 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Wobbly Windows
|
||||
Icon=kwin-effect-wavywindows
|
||||
|
||||
Type=Service
|
||||
ServiceTypes=KWin/Effect
|
||||
X-KDE-PluginInfo-Author=Cédric Borgese
|
||||
X-KDE-PluginInfo-Email=cedric.borgese@gmail.com
|
||||
X-KDE-PluginInfo-Name=kwin4_effect_wobblywindows
|
||||
X-KDE-PluginInfo-Version=0.0.1
|
||||
X-KDE-PluginInfo-Category=Appearance
|
||||
X-KDE-PluginInfo-Depends=
|
||||
X-KDE-PluginInfo-License=GPL
|
||||
X-KDE-PluginInfo-EnabledByDefault=false
|
||||
X-KDE-Library=kwin4_effect_builtins
|
||||
X-KDE-Ordering=80
|
128
effects/wobblywindows.h
Normal file
128
effects/wobblywindows.h
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*****************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2008 Cédric Borgese <cedric.borgese@gmail.com>
|
||||
|
||||
You can Freely distribute this program under the GNU General Public
|
||||
License. See the file "COPYING" for the exact licensing terms.
|
||||
******************************************************************/
|
||||
|
||||
#ifndef WOBBLYWINDOWS_H
|
||||
#define WOBBLYWINDOWS_H
|
||||
|
||||
// Include with base class for effects.
|
||||
#include <kwineffects.h>
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
/**
|
||||
* Effect which wobble windows
|
||||
**/
|
||||
class WobblyWindowsEffect : public Effect
|
||||
{
|
||||
public:
|
||||
|
||||
enum GridFilter
|
||||
{
|
||||
NoFilter,
|
||||
FourRingLinearMean,
|
||||
MeanWithMean,
|
||||
MeanWithMedian
|
||||
};
|
||||
|
||||
|
||||
WobblyWindowsEffect();
|
||||
virtual ~WobblyWindowsEffect();
|
||||
|
||||
virtual void prePaintScreen( ScreenPrePaintData& data, int time );
|
||||
virtual void prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time );
|
||||
virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
|
||||
virtual void postPaintScreen();
|
||||
virtual void windowUserMovedResized( EffectWindow* c, bool first, bool last );
|
||||
virtual void windowClosed( EffectWindow* c );
|
||||
|
||||
// Wobbly model parameters
|
||||
void setRaideur(qreal raideur);
|
||||
void setAmortissement(qreal amortissement);
|
||||
void setVelocityThreshold(qreal velocityThreshold);
|
||||
void setMoveFactor(qreal factor);
|
||||
|
||||
void setVelocityFilter(GridFilter filter);
|
||||
void setAccelerationFilter(GridFilter filter);
|
||||
GridFilter velocityFilter() const;
|
||||
GridFilter accelerationFilter() const;
|
||||
|
||||
struct Pair
|
||||
{
|
||||
qreal x;
|
||||
qreal y;
|
||||
};
|
||||
|
||||
private:
|
||||
|
||||
bool updateWindowWobblyDatas(EffectWindow* w, qreal time);
|
||||
|
||||
struct WindowWobblyInfos
|
||||
{
|
||||
Pair* origin;
|
||||
Pair* position;
|
||||
Pair* velocity;
|
||||
Pair* acceleration;
|
||||
Pair* buffer;
|
||||
|
||||
// if true, the point is constraint to its "normal" destination
|
||||
// given by the window position.
|
||||
// if false, the point is free (i.e. use the physics system to move it)
|
||||
bool* constraint;
|
||||
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
unsigned int count;
|
||||
|
||||
Pair* bezierSurface;
|
||||
unsigned int bezierWidth;
|
||||
unsigned int bezierHeight;
|
||||
unsigned int bezierCount;
|
||||
|
||||
bool onConstrain;
|
||||
};
|
||||
|
||||
QHash< const EffectWindow*, WindowWobblyInfos > windows;
|
||||
|
||||
QRect m_updateRegion;
|
||||
|
||||
qreal m_raideur;
|
||||
qreal m_amortissement;
|
||||
qreal m_move_factor;
|
||||
|
||||
// the default tesselation for windows
|
||||
// use qreal instead of int as I really often need
|
||||
// these values as real to do divisions.
|
||||
qreal m_xTesselation;
|
||||
qreal m_yTesselation;
|
||||
|
||||
GridFilter m_velocityFilter;
|
||||
GridFilter m_accelerationFilter;
|
||||
|
||||
qreal m_minVelocity;
|
||||
qreal m_maxVelocity;
|
||||
qreal m_stopVelocity;
|
||||
qreal m_minAcceleration;
|
||||
qreal m_maxAcceleration;
|
||||
qreal m_stopAcceleration;
|
||||
|
||||
void initWobblyInfo(WindowWobblyInfos& wwi, QRect geometry) const;
|
||||
void freeWobblyInfo(WindowWobblyInfos& wwi) const;
|
||||
|
||||
WobblyWindowsEffect::Pair computeBezierPoint(const WindowWobblyInfos& wwi, Pair point) const;
|
||||
|
||||
static void fourRingLinearMean(Pair** datas, WindowWobblyInfos& wwi);
|
||||
static void meanWithMean(Pair** datas, WindowWobblyInfos& wwi);
|
||||
static void meanWithMedian(Pair** datas, WindowWobblyInfos& wwi);
|
||||
};
|
||||
|
||||
} // namespace KWin
|
||||
|
||||
#endif // WOBBLYWINDOWS_H
|
503
effects/wobblywindows_config.cpp
Normal file
503
effects/wobblywindows_config.cpp
Normal file
|
@ -0,0 +1,503 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2008 Cédric Borgese <cedric.borgese@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#include "wobblywindows_config.h"
|
||||
#include "wobblywindows_constants.h"
|
||||
|
||||
#include <kwineffects.h>
|
||||
|
||||
#include <klocale.h>
|
||||
#include <kdebug.h>
|
||||
#include <KActionCollection>
|
||||
#include <kaction.h>
|
||||
#include <KGlobalAccel>
|
||||
#include <kconfiggroup.h>
|
||||
|
||||
#include <QGridLayout>
|
||||
#ifndef KDE_USE_FINAL
|
||||
KWIN_EFFECT_CONFIG_FACTORY
|
||||
#endif
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
WobblyWindowsEffectConfig::WobblyWindowsEffectConfig(QWidget* parent, const QVariantList& args) :
|
||||
KCModule(EffectFactory::componentData(), parent, args)
|
||||
{
|
||||
m_ui.setupUi(this);
|
||||
|
||||
connect(m_ui.spRaideur, SIGNAL(valueChanged(double)), this, SLOT(slotSpRaideur(double)));
|
||||
connect(m_ui.slRaideur, SIGNAL(sliderMoved(int)), this, SLOT(slotSlRaideur(int)));
|
||||
connect(m_ui.spAmortissement, SIGNAL(valueChanged(double)), this, SLOT(slotSpAmortissement(double)));
|
||||
connect(m_ui.slAmortissement, SIGNAL(sliderMoved(int)), this, SLOT(slotSlAmortissement(int)));
|
||||
connect(m_ui.spMovFactor, SIGNAL(valueChanged(double)), this, SLOT(slotSpMovFactor(double)));
|
||||
connect(m_ui.slMovFactor, SIGNAL(sliderMoved(int)), this, SLOT(slotSlMovFactor(int)));
|
||||
|
||||
connect(m_ui.cbGridFilter, SIGNAL(activated(int)), this, SLOT(slotGridParameterSelected(int)));
|
||||
|
||||
connect(m_ui.rbNone, SIGNAL(toggled(bool)), this, SLOT(slotRbNone(bool)));
|
||||
connect(m_ui.rbRingMean, SIGNAL(toggled(bool)), this, SLOT(slotRbRingMean(bool)));
|
||||
connect(m_ui.rbMeanMean, SIGNAL(toggled(bool)), this, SLOT(slotRbMeanMean(bool)));
|
||||
connect(m_ui.rbMeanMedian, SIGNAL(toggled(bool)), this, SLOT(slotRbMeanMedian(bool)));
|
||||
|
||||
connect(m_ui.spMinVel, SIGNAL(valueChanged(double)), this, SLOT(slotSpMinVel(double)));
|
||||
connect(m_ui.slMinVel, SIGNAL(sliderMoved(int)), this, SLOT(slotSlMinVel(int)));
|
||||
connect(m_ui.spMaxVel, SIGNAL(valueChanged(double)), this, SLOT(slotSpMaxVel(double)));
|
||||
connect(m_ui.slMaxVel, SIGNAL(sliderMoved(int)), this, SLOT(slotSlMaxVel(int)));
|
||||
connect(m_ui.spStopVel, SIGNAL(valueChanged(double)), this, SLOT(slotSpStopVel(double)));
|
||||
connect(m_ui.slStopVel, SIGNAL(sliderMoved(int)), this, SLOT(slotSlStopVel(int)));
|
||||
connect(m_ui.spMinAcc, SIGNAL(valueChanged(double)), this, SLOT(slotSpMinAcc(double)));
|
||||
connect(m_ui.slMinAcc, SIGNAL(sliderMoved(int)), this, SLOT(slotSlMinAcc(int)));
|
||||
connect(m_ui.spMaxAcc, SIGNAL(valueChanged(double)), this, SLOT(slotSpMaxAcc(double)));
|
||||
connect(m_ui.slMaxAcc, SIGNAL(sliderMoved(int)), this, SLOT(slotSlMaxAcc(int)));
|
||||
connect(m_ui.spStopAcc, SIGNAL(valueChanged(double)), this, SLOT(slotSpStopAcc(double)));
|
||||
connect(m_ui.slStopAcc, SIGNAL(sliderMoved(int)), this, SLOT(slotSlStopAcc(int)));
|
||||
|
||||
load();
|
||||
}
|
||||
|
||||
WobblyWindowsEffectConfig::~WobblyWindowsEffectConfig()
|
||||
{
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::load()
|
||||
{
|
||||
KCModule::load();
|
||||
|
||||
KConfigGroup conf = EffectsHandler::effectConfig("Wobbly");
|
||||
qreal raideur = conf.readEntry("Raideur", RAIDEUR);
|
||||
qreal amortissement = conf.readEntry("Amortissement", AMORTISSEMENT);
|
||||
qreal move_factor = conf.readEntry("MoveFactor", MOVEFACTOR);
|
||||
|
||||
m_ui.spRaideur->setValue(raideur);
|
||||
m_ui.slRaideur->setSliderPosition(raideur*50);
|
||||
|
||||
m_ui.spAmortissement->setValue(amortissement);
|
||||
m_ui.slAmortissement->setSliderPosition(amortissement*100);
|
||||
|
||||
m_ui.spMovFactor->setValue(move_factor);
|
||||
m_ui.slMovFactor->setValue(move_factor*100);
|
||||
|
||||
int xTesselation = conf.readEntry("XTesselation", XTESSELATION);
|
||||
int yTesselation = conf.readEntry("YTesselation", YTESSELATION);
|
||||
|
||||
m_ui.spHNodes->setValue(xTesselation);
|
||||
m_ui.spVNodes->setValue(yTesselation);
|
||||
|
||||
//squareRootMasterAcceleration = conf.readEntry("SquareRootMasterAcceleration", false);
|
||||
|
||||
QString velFilter = conf.readEntry("VelocityFilter", VELOCITYFILTER);
|
||||
if (velFilter == "NoFilter")
|
||||
{
|
||||
velocityFilter = NoFilter;
|
||||
}
|
||||
else if (velFilter == "FourRingLinearMean")
|
||||
{
|
||||
velocityFilter = FourRingLinearMean;
|
||||
}
|
||||
else if (velFilter == "MeanWithMean")
|
||||
{
|
||||
velocityFilter = MeanWithMean;
|
||||
}
|
||||
else if (velFilter == "MeanWithMedian")
|
||||
{
|
||||
velocityFilter = MeanWithMedian;
|
||||
}
|
||||
else
|
||||
{
|
||||
velocityFilter = FourRingLinearMean;
|
||||
kDebug() << "Unknown config value for VelocityFilter : " << velFilter;
|
||||
}
|
||||
|
||||
|
||||
QString accFilter = conf.readEntry("AccelerationFilter", ACCELERATIONFILTER);
|
||||
if (accFilter == "NoFilter")
|
||||
{
|
||||
accelerationFilter = NoFilter;
|
||||
}
|
||||
else if (accFilter == "FourRingLinearMean")
|
||||
{
|
||||
accelerationFilter = FourRingLinearMean;
|
||||
}
|
||||
else if (accFilter == "MeanWithMean")
|
||||
{
|
||||
accelerationFilter = MeanWithMean;
|
||||
}
|
||||
else if (accFilter == "MeanWithMedian")
|
||||
{
|
||||
accelerationFilter = MeanWithMedian;
|
||||
}
|
||||
else
|
||||
{
|
||||
accelerationFilter = NoFilter;
|
||||
kDebug() << "Unknown config value for accelerationFilter : " << accFilter;
|
||||
}
|
||||
|
||||
qreal minVel = conf.readEntry("MinVelocity", MINVELOCITY);
|
||||
qreal maxVel = conf.readEntry("MaxVelocity", MAXVELOCITY);
|
||||
qreal stopVel = conf.readEntry("StopVelocity", STOPVELOCITY);
|
||||
qreal minAcc = conf.readEntry("MinAcceleration", MINACCELERATION);
|
||||
qreal maxAcc = conf.readEntry("MaxAcceleration", MAXACCELERATION);
|
||||
qreal stopAcc = conf.readEntry("StopAcceleration", STOPACCELERATION);
|
||||
|
||||
m_ui.spMinVel->setValue(minVel);
|
||||
m_ui.slMinVel->setSliderPosition(minVel*100);
|
||||
m_ui.spMaxVel->setValue(maxVel);
|
||||
m_ui.slMaxVel->setSliderPosition(maxVel/10);
|
||||
m_ui.spStopVel->setValue(stopVel);
|
||||
m_ui.slStopVel->setSliderPosition(stopVel*10);
|
||||
m_ui.spMinAcc->setValue(minAcc);
|
||||
m_ui.slMinAcc->setSliderPosition(minAcc*100);
|
||||
m_ui.spMaxAcc->setValue(maxAcc);
|
||||
m_ui.slMaxAcc->setSliderPosition(maxAcc/10);
|
||||
m_ui.spStopAcc->setValue(stopAcc);
|
||||
m_ui.slStopAcc->setSliderPosition(stopAcc*10);
|
||||
|
||||
emit changed(false);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::save()
|
||||
{
|
||||
KConfigGroup conf = EffectsHandler::effectConfig("Wobbly");
|
||||
|
||||
conf.writeEntry("Raideur", m_ui.spRaideur->value());
|
||||
conf.writeEntry("Amortissement", m_ui.spAmortissement->value());
|
||||
conf.writeEntry("MoveFactor", m_ui.spMovFactor->value());
|
||||
|
||||
conf.writeEntry("XTesselation", m_ui.spHNodes->value());
|
||||
conf.writeEntry("YTesselation", m_ui.spVNodes->value());
|
||||
|
||||
switch (velocityFilter)
|
||||
{
|
||||
case NoFilter:
|
||||
conf.writeEntry("VelocityFilter", "NoFilter");
|
||||
break;
|
||||
|
||||
case FourRingLinearMean:
|
||||
conf.writeEntry("VelocityFilter", "FourRingLinearMean");
|
||||
break;
|
||||
|
||||
case MeanWithMean:
|
||||
conf.writeEntry("VelocityFilter", "MeanWithMean");
|
||||
break;
|
||||
|
||||
case MeanWithMedian:
|
||||
conf.writeEntry("VelocityFilter", "MeanWithMedian");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (accelerationFilter)
|
||||
{
|
||||
case NoFilter:
|
||||
conf.writeEntry("AccelerationFilter", "NoFilter");
|
||||
break;
|
||||
|
||||
case FourRingLinearMean:
|
||||
conf.writeEntry("AccelerationFilter", "FourRingLinearMean");
|
||||
break;
|
||||
|
||||
case MeanWithMean:
|
||||
conf.writeEntry("AccelerationFilter", "MeanWithMean");
|
||||
break;
|
||||
|
||||
case MeanWithMedian:
|
||||
conf.writeEntry("AccelerationFilter", "MeanWithMedian");
|
||||
break;
|
||||
}
|
||||
|
||||
conf.writeEntry("MinVelocity", m_ui.spMinVel->value());
|
||||
conf.writeEntry("MaxVelocity", m_ui.spMaxVel->value());
|
||||
conf.writeEntry("StopVelocity", m_ui.spStopVel->value());
|
||||
conf.writeEntry("MinAcceleration", m_ui.spMinAcc->value());
|
||||
conf.writeEntry("MaxAcceleration", m_ui.spMaxAcc->value());
|
||||
conf.writeEntry("StopAcceleration", m_ui.spStopAcc->value());
|
||||
|
||||
conf.sync();
|
||||
|
||||
emit changed(false);
|
||||
EffectsHandler::sendReloadMessage("kwin4_effect_wobblywindows");
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::defaults()
|
||||
{
|
||||
m_ui.spRaideur->setValue(RAIDEUR);
|
||||
m_ui.slRaideur->setSliderPosition(RAIDEUR*50);
|
||||
|
||||
m_ui.spAmortissement->setValue(AMORTISSEMENT);
|
||||
m_ui.slAmortissement->setSliderPosition(AMORTISSEMENT*100);
|
||||
|
||||
m_ui.spMovFactor->setValue(MOVEFACTOR);
|
||||
m_ui.slMovFactor->setValue(MOVEFACTOR*100);
|
||||
|
||||
m_ui.spHNodes->setValue(XTESSELATION);
|
||||
m_ui.spVNodes->setValue(YTESSELATION);
|
||||
|
||||
velocityFilter = FourRingLinearMean;
|
||||
accelerationFilter = NoFilter;
|
||||
slotGridParameterSelected(m_ui.cbGridFilter->currentIndex());
|
||||
|
||||
m_ui.spMinVel->setValue(MINVELOCITY);
|
||||
m_ui.slMinVel->setSliderPosition(MINVELOCITY*100);
|
||||
|
||||
m_ui.spMaxVel->setValue(MAXVELOCITY);
|
||||
m_ui.slMaxVel->setSliderPosition(MAXVELOCITY/10);
|
||||
|
||||
m_ui.spStopVel->setValue(STOPVELOCITY);
|
||||
m_ui.slStopVel->setSliderPosition(STOPVELOCITY*10);
|
||||
|
||||
m_ui.spMinAcc->setValue(MINACCELERATION);
|
||||
m_ui.slMinAcc->setSliderPosition(MINACCELERATION*100);
|
||||
|
||||
m_ui.spMaxAcc->setValue(MAXACCELERATION);
|
||||
m_ui.slMaxAcc->setSliderPosition(MAXACCELERATION/10);
|
||||
|
||||
m_ui.spStopAcc->setValue(STOPACCELERATION);
|
||||
m_ui.slStopAcc->setSliderPosition(STOPACCELERATION*10);
|
||||
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpRaideur(double value)
|
||||
{
|
||||
m_ui.slRaideur->setSliderPosition(value*50);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlRaideur(int value)
|
||||
{
|
||||
m_ui.spRaideur->setValue(value/50.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpAmortissement(double value)
|
||||
{
|
||||
m_ui.slAmortissement->setSliderPosition(value*100);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlAmortissement(int value)
|
||||
{
|
||||
m_ui.spAmortissement->setValue(qreal(value)/100.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpMovFactor(double value)
|
||||
{
|
||||
m_ui.slMovFactor->setValue(value*100);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlMovFactor(int value)
|
||||
{
|
||||
m_ui.spMovFactor->setValue(qreal(value)/100.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
// filters
|
||||
|
||||
void WobblyWindowsEffectConfig::slotRbNone(bool toggled)
|
||||
{
|
||||
if (toggled)
|
||||
{
|
||||
if (m_ui.cbGridFilter->currentIndex() == 0) // velocity
|
||||
{
|
||||
velocityFilter = NoFilter;
|
||||
}
|
||||
else if (m_ui.cbGridFilter->currentIndex() == 1) // acceleration
|
||||
{
|
||||
accelerationFilter = NoFilter;
|
||||
}
|
||||
}
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotRbRingMean(bool toggled)
|
||||
{
|
||||
if (toggled)
|
||||
{
|
||||
if (m_ui.cbGridFilter->currentIndex() == 0) // velocity
|
||||
{
|
||||
velocityFilter = FourRingLinearMean;
|
||||
}
|
||||
else if (m_ui.cbGridFilter->currentIndex() == 1) // acceleration
|
||||
{
|
||||
accelerationFilter = FourRingLinearMean;
|
||||
}
|
||||
}
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotRbMeanMean(bool toggled)
|
||||
{
|
||||
if (toggled)
|
||||
{
|
||||
if (m_ui.cbGridFilter->currentIndex() == 0) // velocity
|
||||
{
|
||||
velocityFilter = MeanWithMean;
|
||||
}
|
||||
else if (m_ui.cbGridFilter->currentIndex() == 1) // acceleration
|
||||
{
|
||||
accelerationFilter = MeanWithMean;
|
||||
}
|
||||
}
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotRbMeanMedian(bool toggled)
|
||||
{
|
||||
if (toggled)
|
||||
{
|
||||
if (m_ui.cbGridFilter->currentIndex() == 0) // velocity
|
||||
{
|
||||
velocityFilter = MeanWithMedian;
|
||||
}
|
||||
else if (m_ui.cbGridFilter->currentIndex() == 1) // acceleration
|
||||
{
|
||||
accelerationFilter = MeanWithMedian;
|
||||
}
|
||||
}
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotGridParameterSelected(int index)
|
||||
{
|
||||
if (index == 0) // velocity
|
||||
{
|
||||
switch (velocityFilter)
|
||||
{
|
||||
case NoFilter:
|
||||
m_ui.rbNone->setChecked(true);
|
||||
break;
|
||||
|
||||
case FourRingLinearMean:
|
||||
m_ui.rbRingMean->setChecked(true);
|
||||
break;
|
||||
|
||||
case MeanWithMean:
|
||||
m_ui.rbMeanMean->setChecked(true);
|
||||
break;
|
||||
|
||||
case MeanWithMedian:
|
||||
m_ui.rbMeanMedian->setChecked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (index == 1) // acceleration
|
||||
{
|
||||
switch (accelerationFilter)
|
||||
{
|
||||
case NoFilter:
|
||||
m_ui.rbNone->setChecked(true);
|
||||
break;
|
||||
|
||||
case FourRingLinearMean:
|
||||
m_ui.rbRingMean->setChecked(true);
|
||||
break;
|
||||
|
||||
case MeanWithMean:
|
||||
m_ui.rbMeanMean->setChecked(true);
|
||||
break;
|
||||
|
||||
case MeanWithMedian:
|
||||
m_ui.rbMeanMedian->setChecked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
// thresholds
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpMinVel(double value)
|
||||
{
|
||||
m_ui.slMinVel->setSliderPosition(value*100);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlMinVel(int value)
|
||||
{
|
||||
m_ui.spMinVel->setValue(qreal(value)/100.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpMaxVel(double value)
|
||||
{
|
||||
m_ui.slMaxVel->setSliderPosition(value/10);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlMaxVel(int value)
|
||||
{
|
||||
m_ui.spMaxVel->setValue(value*10.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpStopVel(double value)
|
||||
{
|
||||
m_ui.slStopVel->setSliderPosition(value*10);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlStopVel(int value)
|
||||
{
|
||||
m_ui.spStopVel->setValue(value/10.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpMinAcc(double value)
|
||||
{
|
||||
m_ui.slMinAcc->setSliderPosition(value*100);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlMinAcc(int value)
|
||||
{
|
||||
m_ui.spMinAcc->setValue(value/100.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpMaxAcc(double value)
|
||||
{
|
||||
m_ui.slMaxAcc->setSliderPosition(value/10);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlMaxAcc(int value)
|
||||
{
|
||||
m_ui.spMaxAcc->setValue(value*10.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSpStopAcc(double value)
|
||||
{
|
||||
m_ui.slStopAcc->setSliderPosition(value*10);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
void WobblyWindowsEffectConfig::slotSlStopAcc(int value)
|
||||
{
|
||||
m_ui.spStopAcc->setValue(value/10.0);
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#include "wobblywindows_config.moc"
|
10
effects/wobblywindows_config.desktop
Normal file
10
effects/wobblywindows_config.desktop
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
X-KDE-ServiceTypes=KCModule
|
||||
|
||||
X-KDE-Library=kcm_kwin4_effect_builtins
|
||||
X-KDE-ParentComponents=kwin4_effect_wobblywindows
|
||||
X-KDE-PluginKeyword=wobblywindows
|
||||
|
||||
Name=Wobbly Windows
|
||||
|
93
effects/wobblywindows_config.h
Normal file
93
effects/wobblywindows_config.h
Normal file
|
@ -0,0 +1,93 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2008 Cédric Borgese <cedric.borgese@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#ifndef KWIN_WOBBLY_CONFIG_H
|
||||
#define KWIN_WOBBLY_CONFIG_H
|
||||
|
||||
#define KDE3_SUPPORT
|
||||
#include <kcmodule.h>
|
||||
#undef KDE3_SUPPORT
|
||||
|
||||
#include "ui_wobblywindows_config.h"
|
||||
|
||||
class KActionCollection;
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class WobblyWindowsEffectConfig : public KCModule
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit WobblyWindowsEffectConfig(QWidget* parent = 0, const QVariantList& args = QVariantList());
|
||||
~WobblyWindowsEffectConfig();
|
||||
|
||||
public slots:
|
||||
virtual void save();
|
||||
virtual void load();
|
||||
virtual void defaults();
|
||||
|
||||
private:
|
||||
enum GridFilter
|
||||
{
|
||||
NoFilter,
|
||||
FourRingLinearMean,
|
||||
MeanWithMean,
|
||||
MeanWithMedian
|
||||
};
|
||||
|
||||
private slots:
|
||||
|
||||
void slotSpRaideur(double);
|
||||
void slotSlRaideur(int);
|
||||
void slotSpAmortissement(double);
|
||||
void slotSlAmortissement(int);
|
||||
void slotSpMovFactor(double);
|
||||
void slotSlMovFactor(int);
|
||||
|
||||
void slotGridParameterSelected(int);
|
||||
void slotRbNone(bool);
|
||||
void slotRbRingMean(bool);
|
||||
void slotRbMeanMean(bool);
|
||||
void slotRbMeanMedian(bool);
|
||||
|
||||
void slotSpMinVel(double);
|
||||
void slotSlMinVel(int);
|
||||
void slotSpMaxVel(double);
|
||||
void slotSlMaxVel(int);
|
||||
void slotSpStopVel(double);
|
||||
void slotSlStopVel(int);
|
||||
void slotSpMinAcc(double);
|
||||
void slotSlMinAcc(int);
|
||||
void slotSpMaxAcc(double);
|
||||
void slotSlMaxAcc(int);
|
||||
void slotSpStopAcc(double);
|
||||
void slotSlStopAcc(int);
|
||||
|
||||
private:
|
||||
Ui::WobblyWindowsEffectConfigForm m_ui;
|
||||
|
||||
GridFilter velocityFilter;
|
||||
GridFilter accelerationFilter;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
642
effects/wobblywindows_config.ui
Normal file
642
effects/wobblywindows_config.ui
Normal file
|
@ -0,0 +1,642 @@
|
|||
<ui version="4.0" >
|
||||
<class>KWin::WobblyWindowsEffectConfigForm</class>
|
||||
<widget class="QWidget" name="KWin::WobblyWindowsEffectConfigForm" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>553</width>
|
||||
<height>383</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<string>WobblyWindows</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QTabWidget" name="tabWidget" >
|
||||
<property name="currentIndex" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab" >
|
||||
<attribute name="title" >
|
||||
<string>Grid Parameters</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QGroupBox" name="groupBox" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Grid Minimal Tesselation</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="label" >
|
||||
<property name="text" >
|
||||
<string>Horizontal Nodes :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QSpinBox" name="spHNodes" >
|
||||
<property name="minimum" >
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>20</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="label_2" >
|
||||
<property name="text" >
|
||||
<string>Vertical Nodes :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QSpinBox" name="spVNodes" >
|
||||
<property name="minimum" >
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>20</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item rowspan="2" row="0" column="1" >
|
||||
<widget class="QGroupBox" name="groupBox_4" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Grid Parameters</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="label_3" >
|
||||
<property name="text" >
|
||||
<string>Raideur :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2" >
|
||||
<widget class="QDoubleSpinBox" name="spRaideur" >
|
||||
<property name="maximum" >
|
||||
<double>2.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.020000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>0.500000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3" >
|
||||
<widget class="QSlider" name="slRaideur" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>25</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3" >
|
||||
<widget class="Line" name="line" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" >
|
||||
<widget class="QLabel" name="label_4" >
|
||||
<property name="text" >
|
||||
<string>Amortissement :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="2" >
|
||||
<widget class="QDoubleSpinBox" name="spAmortissement" >
|
||||
<property name="maximum" >
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>0.940000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="3" >
|
||||
<widget class="QSlider" name="slAmortissement" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>94</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="3" >
|
||||
<widget class="Line" name="line_4" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" >
|
||||
<widget class="QLabel" name="label_6" >
|
||||
<property name="text" >
|
||||
<string>Move Factor :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="2" >
|
||||
<widget class="QDoubleSpinBox" name="spMovFactor" >
|
||||
<property name="maximum" >
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="3" >
|
||||
<widget class="QSlider" name="slMovFactor" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QGroupBox" name="groupBox_5" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Grid Filter</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QComboBox" name="cbGridFilter" >
|
||||
<item>
|
||||
<property name="text" >
|
||||
<string>Velocity</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text" >
|
||||
<string>Acceleration</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbNone" >
|
||||
<property name="text" >
|
||||
<string>None</string>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbRingMean" >
|
||||
<property name="text" >
|
||||
<string>Ring Mean</string>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbMeanMean" >
|
||||
<property name="text" >
|
||||
<string>Mean With Mean</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbMeanMedian" >
|
||||
<property name="text" >
|
||||
<string>Mean With Median</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2" >
|
||||
<attribute name="title" >
|
||||
<string>Thresholds</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QGroupBox" name="groupBox_2" >
|
||||
<property name="title" >
|
||||
<string>Velocity</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="label_5" >
|
||||
<property name="text" >
|
||||
<string>Min Velocity</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2" colspan="2" >
|
||||
<widget class="QDoubleSpinBox" name="spMinVel" >
|
||||
<property name="maximum" >
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>0.500000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slMinVel" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="4" >
|
||||
<widget class="Line" name="line_2" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" >
|
||||
<widget class="QLabel" name="label_7" >
|
||||
<property name="text" >
|
||||
<string>Max Velocity</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="2" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="3" >
|
||||
<widget class="QDoubleSpinBox" name="spMaxVel" >
|
||||
<property name="maximum" >
|
||||
<double>1000.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>10.000000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>500.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slMaxVel" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="4" >
|
||||
<widget class="Line" name="line_3" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" >
|
||||
<widget class="QLabel" name="label_10" >
|
||||
<property name="text" >
|
||||
<string>Velocity Stop</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1" colspan="2" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="3" >
|
||||
<widget class="QDoubleSpinBox" name="spStopVel" >
|
||||
<property name="maximum" >
|
||||
<double>10.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.100000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>3.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slStopVel" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>30</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QGroupBox" name="groupBox_3" >
|
||||
<property name="title" >
|
||||
<string>Acceleration</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="label_8" >
|
||||
<property name="text" >
|
||||
<string>Min Acceleration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="3" >
|
||||
<widget class="QDoubleSpinBox" name="spMinAcc" >
|
||||
<property name="maximum" >
|
||||
<double>1.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>0.100000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slMinAcc" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="4" >
|
||||
<widget class="Line" name="line_5" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2" >
|
||||
<widget class="QLabel" name="label_9" >
|
||||
<property name="text" >
|
||||
<string>Max Acceleration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="3" >
|
||||
<widget class="QDoubleSpinBox" name="spMaxAcc" >
|
||||
<property name="maximum" >
|
||||
<double>1000.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>10.000000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>500.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slMaxAcc" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="4" >
|
||||
<widget class="Line" name="line_6" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2" >
|
||||
<widget class="QLabel" name="label_11" >
|
||||
<property name="text" >
|
||||
<string>Acceleration Stop</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2" >
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>21</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="3" >
|
||||
<widget class="QDoubleSpinBox" name="spStopAcc" >
|
||||
<property name="maximum" >
|
||||
<double>10.000000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep" >
|
||||
<double>0.100000000000000</double>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<double>8.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="4" >
|
||||
<widget class="QSlider" name="slStopAcc" >
|
||||
<property name="maximum" >
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value" >
|
||||
<number>80</number>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
38
effects/wobblywindows_constants.h
Normal file
38
effects/wobblywindows_constants.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2008 Cédric Borgese <cedric.borgese@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
static const qreal RAIDEUR = 0.06;
|
||||
static const qreal AMORTISSEMENT = 0.92;
|
||||
static const qreal MOVEFACTOR = 0.1;
|
||||
|
||||
static const int XTESSELATION = 20;
|
||||
static const int YTESSELATION = 20;
|
||||
|
||||
static const qreal MINVELOCITY = 0.0;
|
||||
static const qreal MAXVELOCITY = 1000.0;
|
||||
static const qreal STOPVELOCITY = 3.0;
|
||||
static const qreal MINACCELERATION = 0.0;
|
||||
static const qreal MAXACCELERATION = 1000.0;
|
||||
static const qreal STOPACCELERATION = 5.0;
|
||||
|
||||
static const char* VELOCITYFILTER = "FourRingLinearMean";
|
||||
static const char* ACCELERATIONFILTER = "FourRingLinearMean";
|
Loading…
Reference in a new issue