Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_keyframe_commands.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Emmet O 'Neill <emmetoneill.pdx@gmail.com>
3 * SPDX-FileCopyrightText: 2020 Eoin O 'Neill <eoinoneill1991@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef KIS_KEYFRAME_COMMANDS_H
9#define KIS_KEYFRAME_COMMANDS_H
10
12#include "kundo2command.h"
14#include "kritaimage_export.h"
15
16
18{
19public:
20 KisInsertKeyframeCommand(KisKeyframeChannel *channel, int time, KisKeyframeSP keyframe, KUndo2Command *parentCmd = nullptr);
21
22 void redo() override;
23 void undo() override;
24
25private:
27 int m_time;
29
31};
32
33
35{
36public:
37 KisRemoveKeyframeCommand(KisKeyframeChannel *channel, int time, KUndo2Command* parentCmd = nullptr);
38
39 void redo() override;
40 void undo() override;
41
42private:
44 int m_time;
45
47};
48
49
51{
52public:
54 qreal value,
57 QPointF tangentLeft,
58 QPointF tangentRight,
59 KUndo2Command *parentCmd);
60
62 qreal value,
63 KUndo2Command *parentCmd)
65 keyframe->m_tangentsMode, keyframe->m_leftTangent,
66 keyframe->m_rightTangent, parentCmd) {};
67
70 KUndo2Command *parentCmd)
71 : KisScalarKeyframeUpdateCommand(keyframe, keyframe->m_value, interpMode,
72 keyframe->m_tangentsMode, keyframe->m_leftTangent,
73 keyframe->m_rightTangent, parentCmd) {};
74
77 KUndo2Command *parentCmd)
78 : KisScalarKeyframeUpdateCommand(keyframe, keyframe->m_value, keyframe->m_interpolationMode,
79 tangentMode, keyframe->m_leftTangent,
80 keyframe->m_rightTangent, parentCmd) {};
81
83 QPointF tangentLeft,
84 QPointF tangentRight,
85 KUndo2Command *parentCmd)
86 : KisScalarKeyframeUpdateCommand(keyframe, keyframe->m_value, keyframe->m_interpolationMode,
87 keyframe->m_tangentsMode, tangentLeft,
88 tangentRight, parentCmd) {};
89
90 void redo() override;
91 void undo() override;
92
93 template<typename T>
94 using UndoStore = QPair<T, T>;
95
96private:
103
104};
105
106
107#endif
float value(const T *src, size_t ch)
virtual QTime time() const
KisInsertKeyframeCommand(KisKeyframeChannel *channel, int time, KisKeyframeSP keyframe, KUndo2Command *parentCmd=nullptr)
KisKeyframeChannel * m_channel
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
KisRemoveKeyframeCommand(KisKeyframeChannel *channel, int time, KUndo2Command *parentCmd=nullptr)
KisKeyframeChannel * m_channel
KisScalarKeyframeUpdateCommand(KisScalarKeyframe *keyframe, KisScalarKeyframe::TangentsMode tangentMode, KUndo2Command *parentCmd)
KisScalarKeyframeUpdateCommand(KisScalarKeyframe *keyframe, KisScalarKeyframe::InterpolationMode interpMode, KUndo2Command *parentCmd)
UndoStore< KisScalarKeyframe::TangentsMode > cachedTangentsMode
KisScalarKeyframeUpdateCommand(KisScalarKeyframe *keyframe, qreal value, KUndo2Command *parentCmd)
UndoStore< KisScalarKeyframe::InterpolationMode > cachedInterpolationMode
KisScalarKeyframeUpdateCommand(KisScalarKeyframe *keyframe, QPointF tangentLeft, QPointF tangentRight, KUndo2Command *parentCmd)
KisScalarKeyframeUpdateCommand(KisScalarKeyframe *keyframe, qreal value, KisScalarKeyframe::InterpolationMode interpolationMode, KisScalarKeyframe::TangentsMode tangentMode, QPointF tangentLeft, QPointF tangentRight, KUndo2Command *parentCmd)
The KisScalarKeyframe class is a concrete subclass of KisKeyframe that wraps a scalar value and inter...
InterpolationMode
Controls the type of interpolation between this KisScalarKeyframe and the next.
TangentsMode
Controls the behavior of the left and right tangents on a given keyframe for different curve shapes.