Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_raster_keyframe_channel.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Jouni Pentikäinen <joupent@gmail.com>
3 * SPDX-FileCopyrightText: 2020 Emmet O 'Neill <emmetoneill.pdx@gmail.com>
4 * SPDX-FileCopyrightText: 2020 Eoin O 'Neill <eoinoneill1991@gmail.com>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#ifndef _KIS_RASTER_KEYFRAME_CHANNEL_H
10#define _KIS_RASTER_KEYFRAME_CHANNEL_H
11
13
14
23class KRITAIMAGE_EXPORT KisRasterKeyframe : public KisKeyframe
24{
25 Q_OBJECT
26public:
28 KisRasterKeyframe(KisPaintDeviceWSP paintDevice, const int &premadeFrameID, const int &colorLabelId = 0);
29 ~KisRasterKeyframe() override;
30
32 int frameID() const;
33 bool hasContent();
34 QRect contentBounds();
35
40 void writeFrameToDevice(KisPaintDeviceSP writeTarget);
41
42 KisKeyframeSP duplicate(KisKeyframeChannel *newChannel = 0) override;
43
44private:
46
53};
54
55
66class KRITAIMAGE_EXPORT KisRasterKeyframeChannel : public KisKeyframeChannel
67{
68 Q_OBJECT
69public:
73
78 void writeToDevice(int time, KisPaintDeviceSP targetDevice);
79
85 void importFrame(int time, KisPaintDeviceSP sourceDevice, KUndo2Command *parentCommand);
86
88 QRect frameExtents(KisKeyframeSP keyframe);
89
90 QString frameFilename(int frameId) const;
92 void setFilenameSuffix(const QString &suffix);
93
94 QDomElement toXML(QDomDocument doc, const QString &layerFilename) override;
95 void loadXML(const QDomElement &channelNode) override;
96
97 void setOnionSkinsEnabled(bool value);
98 bool onionSkinsEnabled() const;
99
100 KisPaintDeviceWSP paintDevice();
101
102 virtual void insertKeyframe(int time, KisKeyframeSP keyframe, KUndo2Command *parentUndoCmd = nullptr) override;
103 virtual void removeKeyframe(int time, KUndo2Command *parentUndoCmd = nullptr) override;
104
105 void cloneKeyframe(int source, int destination, KUndo2Command *parentUndoCmd = nullptr);
106 bool areClones(int timeA, int timeB);
107 QSet<int> clonesOf(int time);
108 QSet<int> timesForFrameID(int frameID) const;
109 static QSet<int> clonesOf(const KisNode *node, int time);
110
111 void makeUnique(int time, KUndo2Command *parentUndoCmd = nullptr);
112
113
114private:
115 QRect affectedRect(int time) const override;
116
117 void saveKeyframe(KisKeyframeSP keyframe, QDomElement keyframeElement, const QString &layerFilename) override;
118 QPair<int, KisKeyframeSP> loadKeyframe(const QDomElement &keyframeNode) override;
119
120 KisKeyframeSP createKeyframe() override;
121
122 void setFrameFilename(int frameId, const QString &filename);
123 QString chooseFrameFilename(int frameId, const QString &layerFilename);
124
125 struct Private;
126 QScopedPointer<Private> m_d;
127};
128
129#endif
float value(const T *src, size_t ch)
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
Krita's base keyframe class. Mainly contained by KisKeyframeChannels. A core part of Krita's animatio...
virtual KisKeyframeSP duplicate(class KisKeyframeChannel *newChannel=nullptr)=0
The KisRasterKeyframeChannel is a concrete KisKeyframeChannel subclass that stores and manages KisRas...
The KisRasterKeyframe class is a concrete subclass of KisKeyframe that wraps a physical raster image ...
int m_frameID
m_frameID is a handle that references the "physical" frame stored in this keyframe's KisPaintDevice,...
KisRasterKeyframe(const KisRasterKeyframe &rhs)
Definition KoID.h:30
#define bounds(x, a, b)