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

1 month ago
#pragma once
#include "actionitem.h"
namespace NAction
{
//<2F><><EFBFBD><EFBFBD>ͬCActionModifiedItem<65><6D>
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();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2>DZ<EFBFBD><C7B1><EFBFBD> COne<6E><65>m_eleList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD> CXy <20><><EFBFBD><EFBFBD> COne ָ<><D6B8>
bool IsOwnCOnes() const override
{
return true;
}
virtual void Undo(void);
virtual void Redo(void);
void Backup(POSITION pos);
/**
* <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
*/
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;
};
}