24 #include <QDomElement>
25 #include "pencilerror.h"
35 #define ProgressCallback std::function<void()>
55 int id()
const {
return mId; }
56 LAYER_TYPE type()
const {
return meType; }
58 Object* object()
const {
return mObject; }
59 void setObject(
Object* obj);
61 void setName(
QString name) { mName = name; }
62 QString name()
const {
return mName; }
64 void switchVisibility() { mVisible = !mVisible; }
66 bool visible()
const {
return mVisible; }
67 void setVisible(
bool b) { mVisible = b; }
76 virtual void loadDomElement(
const QDomElement& element,
QString dataDirPath, ProgressCallback progressForward) = 0;
82 int getMaxKeyFramePosition()
const;
83 int firstKeyFramePosition()
const;
85 bool keyExists(
int position)
const;
86 int getPreviousKeyFramePosition(
int position)
const;
87 int getNextKeyFramePosition(
int position)
const;
88 int getPreviousFrameNumber(
int position,
bool isAbsolute)
const;
89 int getNextFrameNumber(
int position,
bool isAbsolute)
const;
91 int keyFrameCount()
const {
return static_cast<int>(mKeyFrames.size()); }
92 int selectedKeyFrameCount()
const {
return mSelectedFrames_byPosition.
count(); }
93 bool hasAnySelectedFrames()
const {
return !mSelectedFrames_byLast.
empty() && !mSelectedFrames_byPosition.
empty(); }
100 bool addNewKeyFrameAt(
int position);
101 void addOrReplaceKeyFrame(
int position,
KeyFrame* pKeyFrame);
102 virtual bool addKeyFrame(
int position,
KeyFrame* pKeyFrame);
103 virtual bool removeKeyFrame(
int position);
104 bool swapKeyFrames(
int position1,
int position2);
105 bool moveKeyFrame(
int position,
int offset);
106 KeyFrame* getKeyFrameAt(
int position)
const;
107 KeyFrame* getLastKeyFrameAtPosition(
int position)
const;
108 bool keyExistsWhichCovers(
int frameNumber);
109 KeyFrame *getKeyFrameWhichCovers(
int frameNumber)
const;
111 void foreachKeyFrame(std::function<
void(
KeyFrame*)>)
const;
113 void setModified(
int position,
bool isModified)
const;
116 bool isFrameSelected(
int position)
const;
117 void setFrameSelected(
int position,
bool isSelected);
118 void toggleFrameSelected(
int position,
bool allowMultiple =
false);
119 void extendSelectionTo(
int position);
120 void selectAllFramesAfter(
int position);
145 bool moveSelectedFrames(
int offset);
146 QList<int> getSelectedFramesByPos()
const {
return mSelectedFrames_byPosition; }
156 virtual Status presave(
const QString& sDataFolder) { Q_UNUSED(sDataFolder);
return Status::SAFE; }
158 bool isPaintable()
const;
171 void setId(
int LayerId) { mId = LayerId; }
176 void removeFromSelectionList(
int position);
178 LAYER_TYPE meType = UNDEFINED;
179 Object* mObject =
nullptr;
181 bool mVisible =
true;
184 std::map<int, KeyFrame*, std::greater<int>> mKeyFrames;
bool insertExposureAt(int position)
Will insert an empty frame (exposure) after the given position.
QList< int > dirtyFrames() const
Returns a list of dirty frame positions.
bool newSelectionOfConnectedFrames(int position)
Make a selection from specified position until a blank spot appears The search is only looking forwar...
void setExposureForSelectedFrames(int offset)
Add or subtract exposure from selected frames.
bool canMoveSelectedFramesToOffset(int offset) const
Predetermines whether the frames can be moved to a new position depending on the offset.
int count(const T &value) const const
QList< int > selectedKeyFramesPositions() const
Get selected keyframe positions sorted by position.
void markFrameAsDirty(const int frameNumber)
Mark the frame position as dirty.
void clearDirtyFrames()
Clear the list of dirty keyframes.
bool reverseOrderOfSelection()
Reverse order of selected frames.
QList< int > selectedKeyFramesByLast() const
Get selected keyframe positions based on the order they were selected.