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.

95 lines
1.8 KiB
C

1 month ago
#pragma once
#include "OMExport.h"
#include "XJObject.h"
#include "OMUndoRedo.h"
#include <assert.h>
#include <map>
#include <vector>
class CXJObjectManager;
class OMPeriodicLattice;
enum {MAX_MANAGER_NUM = 2000};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern "C" XJ_OM_EXPORT CXJObjectManager* GetObjectManager(int index = 0);
class XJ_OM_EXPORT CXJObjectManager
{
public:
//<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
static CXJObjectManager* GetInstance();
~CXJObjectManager();
//<2F><>ȡ<EFBFBD><C8A1>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
OMPeriodicLattice* GetPeriodicLattice();
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CXJObject* CreateObject(EXJObjectType type);
CXJObject* GetObjectByKey(int key);
//undo/redo
void StartCommand();
void EndCommand();
void AddUndoData(const BBox& bbox,
const std::vector<uint64_t>& idxList,
const std::vector<double>& valList);
//<2F><><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void AddMeshDataInfo(double isopStep, int markStep, double zMin, double zMax, double isoplethMin, double isoplethMax);
void Undo();
void Redo();
void ClearUndoRedo();
unsigned int GetUndoCurStep();
unsigned int GetUndoCount();
private:
CXJObjectManager();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CXJObject* CreateBaseObject(EXJObjectType type, bool istempObj = false);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ψһ<CEA8><D2BB>int<6E><74><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
int CreateOmKey();
private:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
static CXJObjectManager* m_pInstance;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>
std::map<int, CXJObject*> m_mapObjects;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OMPeriodicLattice* m_periodicLattice;
//undo<64><6F>redo
OMUndoRedo* m_pUndoRedo;
};
class XJ_OM_EXPORT CXJObserver
{
public:
CXJObserver(){};
virtual~CXJObserver(void){};
public:
//virtual int Update(int key, EXJObjectUpdateType updateType) = 0;
void SetManageIndex(int managerIndex){m_managerIndex = managerIndex;}
int GetManagerIndex() {return m_managerIndex;}
protected:
int m_managerIndex;
};