41 Q_PROPERTY(QString pluginId READ pluginId CONSTANT)
45 Q_PROPERTY(
bool isActiveFullScreenEffect READ isActiveFullScreenEffect NOTIFY isActiveFullScreenEffectChanged)
76 void reconfigure(ReconfigureFlags flags)
override;
79 return m_chainPosition;
83 static ScriptedEffect *create(
const QString &effectName,
const QString &pathToScript,
int chainPosition,
const QString &exclusiveCategory);
85 static bool supported();
123 Q_SCRIPTABLE QJSValue readConfig(
const QString &key,
const QJSValue &defaultValue = QJSValue());
125 Q_SCRIPTABLE
int displayWidth()
const;
126 Q_SCRIPTABLE
int displayHeight()
const;
127 Q_SCRIPTABLE
int animationTime(
int defaultTime)
const;
129 Q_SCRIPTABLE
void registerShortcut(
const QString &objectName,
const QString &text,
130 const QString &keySequence,
const QJSValue &callback);
131 Q_SCRIPTABLE
bool registerScreenEdge(
int edge,
const QJSValue &callback);
132 Q_SCRIPTABLE
bool registerRealtimeScreenEdge(
int edge,
const QJSValue &callback);
133 Q_SCRIPTABLE
bool unregisterScreenEdge(
int edge);
134 Q_SCRIPTABLE
bool registerTouchScreenEdge(
int edge,
const QJSValue &callback);
135 Q_SCRIPTABLE
bool unregisterTouchScreenEdge(
int edge);
138 const QJSValue &to,
const QJSValue &from = QJSValue(),
139 uint metaData = 0,
int curve = QEasingCurve::Linear,
int delay = 0,
140 bool fullScreen =
false,
bool keepAlive =
true, uint shaderId = 0);
141 Q_SCRIPTABLE QJSValue animate(
const QJSValue &
object);
144 const QJSValue &to,
const QJSValue &from = QJSValue(),
145 uint metaData = 0,
int curve = QEasingCurve::Linear,
int delay = 0,
146 bool fullScreen =
false,
bool keepAlive =
true, uint shaderId = 0);
147 Q_SCRIPTABLE QJSValue set(
const QJSValue &
object);
149 Q_SCRIPTABLE
bool retarget(quint64 animationId,
const QJSValue &newTarget,
150 int newRemainingTime = -1);
151 Q_SCRIPTABLE
bool retarget(
const QList<quint64> &animationIds,
const QJSValue &newTarget,
152 int newRemainingTime = -1);
153 Q_SCRIPTABLE
bool freezeInTime(quint64 animationId, qint64 frozenTime);
154 Q_SCRIPTABLE
bool freezeInTime(
const QList<quint64> &animationIds, qint64 frozenTime);
156 Q_SCRIPTABLE
bool redirect(quint64 animationId,
Direction direction,
157 TerminationFlags terminationFlags = TerminateAtSource);
158 Q_SCRIPTABLE
bool redirect(
const QList<quint64> &animationIds,
Direction direction,
159 TerminationFlags terminationFlags = TerminateAtSource);
161 Q_SCRIPTABLE
bool complete(quint64 animationId);
162 Q_SCRIPTABLE
bool complete(
const QList<quint64> &animationIds);
164 Q_SCRIPTABLE
bool cancel(quint64 animationId);
165 Q_SCRIPTABLE
bool cancel(
const QList<quint64> &animationIds);
167 Q_SCRIPTABLE QList<int> touchEdgesForAction(
const QString &action)
const;
169 Q_SCRIPTABLE uint addFragmentShader(
ShaderTrait traits,
const QString &fragmentShaderFile = {});
171 Q_SCRIPTABLE
void setUniform(uint shaderId,
const QString &name,
const QJSValue &value);
175 return m_screenEdgeCallbacks;
180 return m_realtimeScreenEdgeCallbacks;
183 QString pluginId()
const;
184 bool isActiveFullScreenEffect()
const;
199 QJSEngine *engine()
const;
200 bool init(
const QString &effectName,
const QString &pathToScript);
204 enum class AnimationType {
209 QJSValue animate_helper(
const QJSValue &
object, AnimationType animationType);
211 GLShader *findShader(uint shaderId)
const;
214 QString m_effectName;
215 QString m_scriptFile;
216 QString m_exclusiveCategory;
217 QHash<int, QJSValueList> m_screenEdgeCallbacks;
218 QHash<int, QJSValueList> m_realtimeScreenEdgeCallbacks;
219 KConfigLoader *m_config;
221 QHash<int, QAction *> m_touchScreenEdgeCallbacks;
222 Effect *m_activeFullScreenEffect =
nullptr;
223 std::map<uint, std::unique_ptr<GLShader>> m_shaders;
224 uint m_nextShaderId{1u};