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/ActionModifiedItem.h

84 lines
1.8 KiB
C

1 month ago
#pragma once
#include "actionitem.h"
namespace NAction
{
//<2F><><EFBFBD><EFBFBD>ͬCActionBackupItem<65><6D>
class CActionModifiedItem : public CActionItem
{
public:
struct ModifiedEntry
{
int64_t id = -1;
std::unique_ptr<COne> pOldOne = nullptr;
std::unique_ptr<COne> pNewOne = nullptr;
};
CActionModifiedItem();
CActionModifiedItem(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list);
CActionModifiedItem(CSigmaDoc * ppDoc, UINT actionType);
virtual ~CActionModifiedItem(void);
std::string GetActionName() const override
{
return typeid(*this).name();
}
bool IsOwnCOnes() const override
{
return true;
}
virtual void Undo(void);
virtual void Redo(void);
void accept(CActionVisitor& visitor) override;
virtual bool BackupOldItem(POSITION pos, COne* pOne);
void BackupOldItem(const CPositionList& list);
void BackupNewItem();
int GetCount();
friend class BlobSerializer;
protected:
virtual void PerformOperation(std::unique_ptr<COne> ModifiedEntry::* member);
virtual void CloneOne(COne* pDestOne, COne* pSourceOne);
virtual void AfterRedoUndo(COne* pDestOne);
private:
void BackupOldOne(COne* pOne);
void CloneOneAndInvalidate(COne* pOne, const COne* pActionOne);
std::vector<ModifiedEntry> m_entries;
};
//Ϊ<>˼<EFBFBD><CBBC><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5>ڴ棬<DAB4>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CActionModifiedMesh :
public CActionModifiedItem
{
public:
CActionModifiedMesh(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list);
CActionModifiedMesh(CSigmaDoc * ppDoc, UINT actionType);
CActionModifiedMesh();
virtual ~CActionModifiedMesh(void);
std::string GetActionName() const override
{
return typeid(*this).name();
}
void accept(CActionVisitor& visitor) override;
protected:
virtual void CloneOne(COne* pDestOne, COne* pSourceOne);
virtual void AfterRedoUndo(COne* pDestOne);
};
};//namespace