16#include <KGlobalAccel>
17#include <KLocalizedString>
20#include <QStandardPaths>
24Q_LOGGING_CATEGORY(KWIN_INVERT,
"kwin_effect_invert", QtWarningMsg)
26static void ensureResources()
29 Q_INIT_RESOURCE(invert);
41 QAction *a =
new QAction(
this);
42 a->setObjectName(QStringLiteral(
"Invert"));
43 a->setText(i18n(
"Toggle Invert Effect"));
44 KGlobalAccel::self()->setDefaultShortcut(a, QList<QKeySequence>() << (Qt::CTRL | Qt::META | Qt::Key_I));
45 KGlobalAccel::self()->setShortcut(a, QList<QKeySequence>() << (Qt::CTRL | Qt::META | Qt::Key_I));
48 QAction *b =
new QAction(
this);
49 b->setObjectName(QStringLiteral(
"InvertWindow"));
50 b->setText(i18n(
"Toggle Invert Effect on Window"));
51 KGlobalAccel::self()->setDefaultShortcut(b, QList<QKeySequence>() << (Qt::CTRL | Qt::META | Qt::Key_U));
52 KGlobalAccel::self()->setShortcut(b, QList<QKeySequence>() << (Qt::CTRL | Qt::META | Qt::Key_U));
55 QAction *c =
new QAction(
this);
56 c->setObjectName(QStringLiteral(
"Invert Screen Colors"));
57 c->setText(i18n(
"Invert Screen Colors"));
58 KGlobalAccel::self()->setDefaultShortcut(c, QList<QKeySequence>());
59 KGlobalAccel::self()->setShortcut(c, QList<QKeySequence>());
73bool InvertEffect::isInvertable(
EffectWindow *window)
const
75 return m_allWindows != m_windows.contains(window);
78void InvertEffect::invert(EffectWindow *window)
80 if (m_valid && !m_inited) {
88void InvertEffect::uninvert(EffectWindow *window)
99 if (!m_shader->isValid()) {
100 qCCritical(KWIN_INVERT) <<
"The shader failed to load!";
109 if (isInvertable(w)) {
116 m_windows.removeOne(w);
121 m_allWindows = !m_allWindows;
125 if (isInvertable(window)) {
155 return m_valid && (m_allWindows || !m_windows.isEmpty());
165#include "moc_invert.cpp"
Representation of a window used by/for Effect classes.
Q_SCRIPTABLE void addRepaintFull()
void windowClosed(KWin::EffectWindow *w)
QList< EffectWindow * > stackingOrder
CompositingType compositingType
KWin::EffectWindow * activeWindow
void windowAdded(KWin::EffectWindow *w)
Q_SCRIPTABLE void addRepaintFull()
void slotWindowAdded(KWin::EffectWindow *w)
void slotWindowClosed(KWin::EffectWindow *w)
bool provides(Feature) override
bool isActive() const override
void toggleScreenInversion()
void unredirect(EffectWindow *window)
void redirect(EffectWindow *window)
void setShader(EffectWindow *window, GLShader *shader)
std::unique_ptr< GLShader > generateShaderFromFile(ShaderTraits traits, const QString &vertexFile=QString(), const QString &fragmentFile=QString())
static ShaderManager * instance()