Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAnimTimelineFramesModel.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __TIMELINE_FRAMES_MODEL_H
8#define __TIMELINE_FRAMES_MODEL_H
9
10
11#include <QScopedPointer>
12#include <QFileInfo>
13
14#include "kritaanimationdocker_export.h"
15#include "kis_node_model.h"
16#include "kis_types.h"
17#include "kis_node.h"
19
20class KisNodeDummy;
24
25
26
32
33inline bool operator==(const TimelineSelectionEntry& lhs, const TimelineSelectionEntry& rhs){
34 return (lhs.time == rhs.time) && (lhs.channel == rhs.channel) && (lhs.keyframe == rhs.keyframe);
35}
36
38{
39 return reinterpret_cast<quint64>(key.channel) * reinterpret_cast<quint64>(key.keyframe.data()) * key.time;
40}
41
42
43
44
46{
47 Q_OBJECT
48
49public:
51 UndefinedPolicy = 0,
54 CloneFramesPolicy
55 };
56
57public:
58 KisAnimTimelineFramesModel(QObject *parent);
60
61 bool hasConnectionToCanvas() const;
62
63 void setDummiesFacade(KisDummiesFacadeBase *dummiesFacade,
64 KisImageSP image,
65 KisNodeDisplayModeAdapter *displayModeAdapter);
66
67 bool canDropFrameData(const QMimeData *data, const QModelIndex &index);
68 bool insertOtherLayer(int index, int dstRow);
69 int activeLayerRow() const;
70
71 bool createFrame(const QModelIndexList &dstIndex);
72 bool copyFrame(const QModelIndex &dstIndex);
73 void makeClonesUnique(const QModelIndexList &indices);
74
75 bool insertFrames(int dstColumn, const QList<int> &dstRows, int count, int timing = 1);
76 bool insertHoldFrames(const QModelIndexList &selectedIndexes, int insertCount);
77
78 QString audioChannelFileName() const;
79 void setAudioChannelFileName(const QFileInfo &fileName);
80
81 bool isAudioMuted() const;
82 void setAudioMuted(bool value);
83
84 qreal audioVolume() const;
85 void setAudioVolume(qreal value);
86
87 void setDocumentClipRangeStart(int column);
88 void setDocumentClipRangeEnd(int column);
89
90 void clearEntireCache();
91 void setActiveLayerSelectedTimes(const QSet<int>& times);
92
93 void setLastClickedIndex(const QModelIndex &index);
94
95 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
96 QVariant data(const QModelIndex &index, int role) const override;
97 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
98 QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
99 bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override;
100
101 Qt::DropActions supportedDragActions() const override;
102 Qt::DropActions supportedDropActions() const override;
103 QStringList mimeTypes() const override;
104 QMimeData *mimeData(const QModelIndexList &indexes) const override;
105 QMimeData *mimeDataExtended(const QModelIndexList &indexes, const QModelIndex &baseIndex, MimeCopyPolicy copyPolicy) const;
106 bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
107 bool dropMimeDataExtended(const QMimeData *data, Qt::DropAction action, const QModelIndex &parent, bool *dataMoved = 0);
108
109 Qt::ItemFlags flags(const QModelIndex &index) const override;
110
111 bool insertRows(int row, int count, const QModelIndex &parent) override;
112 bool removeRows(int row, int count, const QModelIndex &parent) override;
113
122
123 // metatype is added by the original implementation
126
129
132 virtual KisLayerSP addPaintLayer() const = 0;
133 virtual void removeNode(KisNodeSP node) const = 0;
134 virtual bool setNodeProperties(KisNodeSP node, KisImageSP image, KisBaseNode::PropertyList properties) const = 0;
135 };
136
141 void setNodeManipulationInterface(NodeManipulationInterface *iface);
142 KisNodeSP nodeAt(QModelIndex index) const override;
143
144protected:
145 QMap<QString, KisKeyframeChannel *> channelsAt(QModelIndex index) const override;
146 KisKeyframeChannel* channelByID(QModelIndex index, const QString &id) const override;
147
148private Q_SLOTS:
149 void slotDummyChanged(KisNodeDummy *dummy);
150 void slotImageContentChanged();
151 void processUpdateQueue();
152
153public Q_SLOTS:
154 void slotCurrentNodeChanged(KisNodeSP node);
155
156Q_SIGNALS:
159 void sigEnsureRowVisible(int row);
160 void requestTransferSelectionBetweenRows(int rowFrom, int rowTo);
162
163private:
164 struct Private;
165 const QScopedPointer<Private> m_d;
166};
167
168#endif /* __TIMELINE_FRAMES_MODEL_H */
float value(const T *src, size_t ch)
uint qHash(const TimelineSelectionEntry &key)
bool operator==(const TimelineSelectionEntry &lhs, const TimelineSelectionEntry &rhs)
unsigned int uint
void requestCurrentNodeChanged(KisNodeSP node)
void requestTransferSelectionBetweenRows(int rowFrom, int rowTo)
TimelineNodeListKeeper::OtherLayer OtherLayer
const QScopedPointer< Private > m_d
void sigEnsureRowVisible(int row)
TimelineNodeListKeeper::OtherLayersList OtherLayersList
KisBaseNode::PropertyList PropertyList
The KisCanvasAnimationState class stores all of the canvas-specific animation state.
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
The KisRasterKeyframeChannel is a concrete KisKeyframeChannel subclass that stores and manages KisRas...
bool setData(const QModelIndex &index, const QVariant &value, int role) override
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
virtual KisNodeSP nodeAt(QModelIndex index) const =0
virtual KisKeyframeChannel * channelByID(QModelIndex index, const QString &id) const =0
QVariant data(const QModelIndex &index, int role) const override
bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override
virtual QMap< QString, KisKeyframeChannel * > channelsAt(QModelIndex index) const =0
void slotDummyChanged(KisNodeDummy *dummy)
virtual void removeNode(KisNodeSP node) const =0
virtual bool setNodeProperties(KisNodeSP node, KisImageSP image, KisBaseNode::PropertyList properties) const =0
KisRasterKeyframeChannel * channel