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