File indexing completed on 2024-06-23 04:26:34

0001 /*
0002  *  Copyright (c) 2020 Saurabh Kumar <saurabhk660@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KISADDREMOVESTORYBOARDCOMMAND_H
0008 #define KISADDREMOVESTORYBOARDCOMMAND_H
0009 
0010 #include "kundo2command.h"
0011 #include "kis_command_ids.h"
0012 #include "kis_types.h"
0013 
0014 class StoryboardModel;
0015 
0016 //For addition of Storyboards.
0017 class KisAddStoryboardCommand : public KUndo2Command
0018 {
0019 public:
0020     KisAddStoryboardCommand(int position, StoryboardItemSP item, StoryboardModel *model, KUndo2Command *parent = 0);
0021     ~KisAddStoryboardCommand();
0022 
0023     void redo() override;
0024     void undo() override;
0025     void updateItem();
0026 
0027 private:
0028     int m_position;
0029     StoryboardItemSP m_item;
0030     StoryboardItemSP m_modelItem;
0031     StoryboardModel *m_model;
0032 };
0033 
0034 //For removal of Storyboards.
0035 class KisRemoveStoryboardCommand : public KUndo2Command
0036 {
0037 public:
0038     KisRemoveStoryboardCommand(int position, StoryboardItemSP item, StoryboardModel *model, KUndo2Command *parent = 0);
0039     ~KisRemoveStoryboardCommand();
0040     void redo() override;
0041     void undo() override;
0042 
0043 private:
0044     int m_position;
0045     StoryboardItemSP m_item;
0046     StoryboardModel *m_model;
0047 };
0048 
0049 class KisDuplicateStoryboardCommand : public KUndo2Command
0050 {
0051 public:
0052     KisDuplicateStoryboardCommand(int position, StoryboardModel *model, KUndo2Command *parent = 0);
0053     ~KisDuplicateStoryboardCommand();
0054 
0055     void redo() override;
0056     void undo() override;
0057 
0058 private:
0059     int m_position;
0060     StoryboardItemSP m_duplicate;
0061     StoryboardModel *m_model;
0062     QScopedPointer<KUndo2Command> m_addCommand;
0063     QScopedPointer<KUndo2Command> m_keyframeCommands;
0064 };
0065 
0066 //For moving of Storyboards.
0067 class KisMoveStoryboardCommand : public KUndo2Command
0068 {
0069 public:
0070     KisMoveStoryboardCommand(int from, int to, int count, StoryboardModel *model, KUndo2Command *parent = 0);
0071     ~KisMoveStoryboardCommand();
0072     void redo() override;
0073     void undo() override;
0074 
0075 private:
0076     int m_from;
0077     int m_count;
0078     int m_to;
0079     StoryboardModel *m_model;
0080 };
0081 
0082 class KisVisualizeStoryboardCommand : public KUndo2Command
0083 {
0084 public:
0085     KisVisualizeStoryboardCommand(int fromTime, int toSceneIndex, StoryboardModel* model, KisImageSP image, KUndo2Command *parent = 0);
0086     ~KisVisualizeStoryboardCommand();
0087     void redo() override;
0088     void undo() override;
0089 
0090 private:
0091     int m_fromTime;
0092     int m_toSceneIndex;
0093     StoryboardModel *m_model;
0094     KisImageSP m_image;
0095 
0096 };
0097 
0098 class KisStoryboardChildEditCommand : public KUndo2Command
0099 {
0100 public:
0101     KisStoryboardChildEditCommand(QVariant oldValue, QVariant newValue, int parentRow, int childRow, StoryboardModel *model, KUndo2Command *parent = 0);
0102     ~KisStoryboardChildEditCommand(){}
0103     void redo() override;
0104     void undo() override;
0105 
0106     int id() const override { return KisCommandUtils::ChangeStoryboardChild; }
0107     bool mergeWith(const KUndo2Command *other) override;
0108 
0109 private:
0110     QVariant m_oldValue;
0111     QVariant m_newValue;
0112     int m_parentRow;
0113     int m_childRow;
0114     StoryboardModel *m_model;
0115 };
0116 
0117 #endif