|
|
#pragma once
|
|
|
#include "actionitem.h"
|
|
|
|
|
|
namespace NAction
|
|
|
{
|
|
|
//功能同CActionModifiedItem类
|
|
|
class CActionBackupItem :
|
|
|
public CActionItem
|
|
|
{
|
|
|
public:
|
|
|
CActionBackupItem();
|
|
|
CActionBackupItem(CSigmaDoc * ppDoc, UINT actionType);
|
|
|
CActionBackupItem(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list);
|
|
|
virtual ~CActionBackupItem(void);
|
|
|
|
|
|
std::string GetActionName() const override
|
|
|
{
|
|
|
return typeid(*this).name();
|
|
|
}
|
|
|
|
|
|
// 在这个类中,value 里面存储的才是备份 COne,m_eleList 里面存储的是 CXy 所属 COne 指针
|
|
|
bool IsOwnCOnes() const override
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
virtual void Undo(void);
|
|
|
virtual void Redo(void);
|
|
|
|
|
|
void Backup(POSITION pos);
|
|
|
|
|
|
/**
|
|
|
* 备份更新后的内容
|
|
|
*
|
|
|
*/
|
|
|
void BackupNew();
|
|
|
|
|
|
void accept(CActionVisitor& visitor) override;
|
|
|
|
|
|
friend class BlobSerializer;
|
|
|
|
|
|
protected:
|
|
|
void Backup(const CPositionList& list);
|
|
|
public:
|
|
|
void Backup(COne* pOne);
|
|
|
void Backup(COne* pBakOne, COne* pOne);
|
|
|
int GetCount(void);
|
|
|
int BackupAllElements(void);
|
|
|
void RemoveBackupTail(void);
|
|
|
|
|
|
private:
|
|
|
struct BackupEntry
|
|
|
{
|
|
|
int64_t id = -1;
|
|
|
std::unique_ptr<COne> pOldOne;
|
|
|
std::unique_ptr<COne> pNewOne;
|
|
|
};
|
|
|
|
|
|
void DoOperation(std::unique_ptr<COne> BackupEntry::* member);
|
|
|
|
|
|
std::vector<BackupEntry> m_entries;
|
|
|
};
|
|
|
|
|
|
class CActionBackupProjectionItem :
|
|
|
public CActionItem
|
|
|
{
|
|
|
public:
|
|
|
CActionBackupProjectionItem();
|
|
|
CActionBackupProjectionItem(CSigmaDoc * ppDoc, UINT actionType);
|
|
|
CActionBackupProjectionItem(CSigmaDoc * ppDoc, UINT actionType, CString strOldPro, CString strNewPro);
|
|
|
virtual ~CActionBackupProjectionItem(void);
|
|
|
|
|
|
std::string GetActionName() const override
|
|
|
{
|
|
|
return typeid(*this).name();
|
|
|
}
|
|
|
|
|
|
virtual void Undo(void);
|
|
|
virtual void Redo(void);
|
|
|
|
|
|
void accept(CActionVisitor& visitor) override;
|
|
|
|
|
|
friend class BlobSerializer;
|
|
|
|
|
|
protected:
|
|
|
CString m_strOldProjection;
|
|
|
CString m_strNewProjection;
|
|
|
};
|
|
|
|
|
|
class CActionBackupXYItem :
|
|
|
public CActionItem
|
|
|
{
|
|
|
public:
|
|
|
CActionBackupXYItem();
|
|
|
CActionBackupXYItem(CSigmaDoc * ppDoc, UINT actionType);
|
|
|
virtual ~CActionBackupXYItem(void);
|
|
|
|
|
|
std::string GetActionName() const override
|
|
|
{
|
|
|
return typeid(*this).name();
|
|
|
}
|
|
|
|
|
|
virtual void Undo(void);
|
|
|
virtual void Redo(void);
|
|
|
void ResetTreeLayerPtr(void);
|
|
|
|
|
|
void accept(CActionVisitor& visitor) override;
|
|
|
|
|
|
friend class BlobSerializer;
|
|
|
protected:
|
|
|
CXy* m_pPrevXY = nullptr;
|
|
|
};
|
|
|
|
|
|
class CAtionBackupEditCurveInName : public CActionBackupItem
|
|
|
{
|
|
|
public:
|
|
|
CAtionBackupEditCurveInName();
|
|
|
CAtionBackupEditCurveInName(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list);
|
|
|
|
|
|
std::string GetActionName() const override
|
|
|
{
|
|
|
return typeid(*this).name();
|
|
|
}
|
|
|
|
|
|
virtual void Undo(void);
|
|
|
virtual void Redo(void);
|
|
|
|
|
|
void accept(CActionVisitor& visitor) override;
|
|
|
};
|
|
|
}
|