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.

82 lines
1.4 KiB
C

1 month ago
#pragma once
#include "PeriodicLattice.h"
#include <vector>
#include <map>
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct CommandInfo
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//CommandType type;
//<2F><><EFBFBD>з<EFBFBD>Χ
BBox bbox;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
std::vector<uint64_t> idxList;
//<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
std::vector<double> valList;
};
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>
struct MeshDataInfo
{
double isopStep; //<2F><>ֵ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
int markStep; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
double zMin;
double zMax;
double isoplethMin; //<2F><>С<EFBFBD><D0A1>ֵ<EFBFBD><D6B5>
double isoplethMax; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
};
//<2F><><EFBFBD><EFBFBD>Object<63><74>View<65>е<EFBFBD>Undo/Redo
class OMUndoRedo
{
public:
OMUndoRedo(void);
~OMUndoRedo(void);
void Start();
void Add(const BBox& bbox, const std::vector<uint64_t>& idxList, const std::vector<double>& valList);
void AddMeshInfo(double isopStep, int markStep, double zMin, double zMax, double isoplethMin, double isoplethMax);
void End();
void Undo();
void Redo();
unsigned int GetUndoCurStep();
unsigned int GetUndoCount();
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>undo<64>б<EFBFBD><D0B1>Լ<EFBFBD><D4BC>ڴ<EFBFBD>
void ClearUndoList();
private:
//<2F><><EFBFBD><EFBFBD>undo<64><6F>Ϣ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
std::vector<CommandInfo*> m_vInfos;
std::vector<MeshDataInfo*> m_vDataInfos;
//ָ<><D6B8><EFBFBD><EFBFBD>ǰVector<6F>ж<EFBFBD>Ӧ<EFBFBD><D3A6>Index
uint32_t m_curStep;
//ָ<><D6B8><EFBFBD><EFBFBD>ǰVector<6F><72> MeshDataInfo <20><>Ӧ<EFBFBD><D3A6>Index
uint32_t m_curDataStep;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
uint64_t m_numData;
//<2F><>ʱ
CommandInfo* m_pCmdinfo;
MeshDataInfo* m_pDataInfo;
//<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>undo
bool m_bWoring;
std::map<uint64_t, double> m_data;
};