You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/Module/GeoSigmaDraw/ActionBackupItem.h

131 lines
2.6 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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 里面存储的才是备份 COnem_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;
};
}