|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
|
|
|