24 #include <QDomElement>
25 #include "pencilerror.h"
26 #include "pencildef.h"
36 #define ProgressCallback std::function<void()>
57 int id()
const {
return mId; }
58 LAYER_TYPE type()
const {
return meType; }
60 Object* object()
const {
return mObject; }
61 void setObject(
Object* obj);
63 void setName(
QString name) { mName = name; }
64 QString name()
const {
return mName; }
66 void switchVisibility() { mVisible = !mVisible; }
68 bool visible()
const {
return mVisible; }
69 void setVisible(
bool b) { mVisible = b; }
72 virtual void loadDomElement(
const QDomElement& element,
QString dataDirPath, ProgressCallback progressForward) = 0;
78 int getMaxKeyFramePosition()
const;
79 int firstKeyFramePosition()
const;
81 bool keyExists(
int position)
const;
82 int getPreviousKeyFramePosition(
int position)
const;
83 int getNextKeyFramePosition(
int position)
const;
84 int getPreviousFrameNumber(
int position,
bool isAbsolute)
const;
85 int getNextFrameNumber(
int position,
bool isAbsolute)
const;
87 int keyFrameCount()
const {
return static_cast<int>(mKeyFrames.size()); }
89 bool addNewKeyFrameAt(
int position);
90 bool addKeyFrame(
int position,
KeyFrame*);
91 bool removeKeyFrame(
int position);
92 bool swapKeyFrames(
int position1,
int position2);
93 bool moveKeyFrameForward(
int position);
94 bool moveKeyFrameBackward(
int position);
96 KeyFrame* getKeyFrameAt(
int position)
const;
97 KeyFrame* getLastKeyFrameAtPosition(
int position)
const;
98 bool keyExistsWhichCovers(
int frameNumber);
99 KeyFrame *getKeyFrameWhichCovers(
int frameNumber)
const;
100 bool getVisibility()
const {
return mVisible; }
102 void foreachKeyFrame(std::function<
void(
KeyFrame*)>)
const;
104 void setModified(
int position,
bool isModified);
107 bool isFrameSelected(
int position)
const;
108 void setFrameSelected(
int position,
bool isSelected);
109 void toggleFrameSelected(
int position,
bool allowMultiple =
false);
110 void extendSelectionTo(
int position);
111 void selectAllFramesAfter(
int position);
114 bool moveSelectedFrames(
int offset);
117 virtual Status presave(
const QString& sDataFolder) { Q_UNUSED(sDataFolder);
return Status::SAFE; }
119 bool isPaintable()
const;
122 void setId(
int LayerId) { mId = LayerId; }
126 LAYER_TYPE meType = UNDEFINED;
127 Object* mObject =
nullptr;
129 bool mVisible =
true;
132 std::map<int, KeyFrame*, std::greater<int>> mKeyFrames;