reman3/Rayman_X/cpa/tempgrp/Edt/inc/edtmodif.hpp

518 lines
15 KiB
C++

/*=========================================================================
*
* EDTModif.hpp : Class Modif*
*
*
* Version 1.0
* Creation date
* Revision date
*
* Shaitan
*=======================================================================*/
#ifdef ACTIVE_EDITOR
#ifndef __EDTMODIF_HPP__
#define __EDTMODIF_HPP__
//**************************************
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
//**************************************
#define TYPE_DELETE 1
#define TYPE_INSERT 2
#define TYPE_MOVE 3
#define TYPE_NAME 4
#define TYPE_PARENT 5
#define TYPE_PASTE 6
#define TYPE_RENAME 7
#define TYPE_STATE 8
#define TYPE_VALIDATE 9
#include "itf/CPAMdf.hpp"
#include "itf/CPASObj.hpp"
#include "itf/objdllb.hpp"
#include "itf/CPALists.hpp"
class EDT_HierarchyEditor;
class EDT_SuperObject;
class EDT_TempModif;
class CPA_Interface;
//CPA2 Stegaru Cristian 98-02
static char szStaticExt [] = {".SPO"};
static char szModifExt [] = {".MDT"};
static char szFinalModifExt [] = {".MDF"};
//End CPA2 Stegaru Cristian 98-02
//#################################################################################
// TO SAVE PARENT MODIFICATION
//#################################################################################
/*===========================================================================
List For DLLs
=========================================================================*/
class EDT_ParentByType : public CObject
{
public:
CPA_ObjectDLLBase *m_poDLL;
CPA_List<EDT_SaveParents> m_stListObjects;
CPA_List<EDT_SaveParents> m_stListProtected;
EDT_ParentByType (CPA_ObjectDLLBase *p_oDLL)
{
m_poDLL = p_oDLL;
m_stListObjects.RemoveAll();
m_stListProtected.RemoveAll();
}
~EDT_ParentByType (void)
{
while (m_stListObjects.GetCount() > 0)
delete m_stListObjects.RemoveTail();
while (m_stListProtected.GetCount() > 0)
delete m_stListProtected.RemoveTail();
}
};
//#################################################################################
// TO SAVE POSITION MODIFICATION
//#################################################################################
/*===========================================================================
List For DLLs
=========================================================================*/
class EDT_PosByType : public CObject
{
public:
CPA_ObjectDLLBase *m_poDLL;
// moved objects
CPA_List<EDT_SavePos> m_stListObjects;
CPA_List<EDT_SaveGlobalPos> m_stListConcerned;
// protected objects
CPA_List<EDT_SavePos> m_stListProtected;
CPA_List<EDT_SaveGlobalPos> m_stListProtectConcerned;
EDT_PosByType (void)
{
m_stListObjects.RemoveAll();
m_stListConcerned.RemoveAll();
m_stListProtected.RemoveAll();
m_stListProtectConcerned.RemoveAll();
}
EDT_PosByType (CPA_ObjectDLLBase *p_oDLL)
{
m_poDLL = p_oDLL;
m_stListObjects.RemoveAll();
m_stListConcerned.RemoveAll();
m_stListProtected.RemoveAll();
m_stListProtectConcerned.RemoveAll();
}
~EDT_PosByType (void)
{
while (!(m_stListObjects.IsEmpty()))
delete m_stListObjects.RemoveTail();
while (!(m_stListConcerned.IsEmpty()))
delete m_stListConcerned.RemoveTail();
while (!(m_stListObjects.IsEmpty()))
delete m_stListObjects.RemoveTail();
while (!(m_stListProtectConcerned.IsEmpty()))
delete m_stListProtectConcerned.RemoveTail();
}
};
//#################################################################################
// CLASS MODIF*
//#################################################################################
/*===========================================================================
* Description: ModifInsert
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifInsert : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
BOOL m_bSelect;
BOOL m_bUpdate;
CPA_List<EDT_SaveParents> m_stListInsert;
EDT_SuperObject *m_pInsertedObject;
EDT_SuperObject *m_pParent;
EDT_SuperObject *m_pBrother;
CString m_csType;
tdstPosition m_stPosition;
// Cut Paste
MTH3D_tdstVector m_stTranslation, m_stLocale;
BOOL m_bUpdatePosition;
BOOL m_bCutSpecial;
// Cut Paste
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifInsert(EDT_HierarchyEditor *pEditor, EDT_SuperObject *pEdObj,
EDT_SuperObject *pParent, tdstPosition *p_stPosition,
EDT_SuperObject *pBrother = NULL, BOOL bUpdateDrawing = TRUE,
BOOL bSelectOnInsertion = TRUE, BOOL pBlock = FALSE,
BOOL bUpdatePosition=FALSE,
BOOL bCutSpecial=FALSE); // Silviu Simen 18 August 1998 Cut/Paste of Special Obj
~EDT_ModifInsert (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
void fn_vFillListForInsertion (EDT_SuperObject *pEdObj, EDT_SuperObject *pParent);
void fn_vSendMessageInsert (tdeTypeModif eType, tdstPosition *p_stPosition);
};
/*===========================================================================
* Description: ModifDelete
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifDelete : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
BOOL m_bUpdate;
BOOL m_bDestroy;
BOOL m_bSelect;
CPA_List<EDT_ParentByType> m_lstModifByType;
CPA_List<EDT_SaveParents> m_stListObjects;
CPA_List<EDT_SaveParents> m_stListForTools;
BOOL m_bDeleted;
CString m_csType;
// Begin Silviu Simen 18 August 1998 Cut/Paste of Special Obj.
BOOL m_bCutSpecial;
// End Silviu Simen 18 August 1998 Cut/Paste of Special Obj.
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifDelete (EDT_HierarchyEditor *pEditor, CPA_List<EDT_ListByDLL> *pSelectByDLL,
CString csType, BOOL bUpdateDrawing = TRUE, BOOL bDestroy = TRUE,
BOOL bSelectOnUndo = TRUE, BOOL pBlock = FALSE,
BOOL bCutSpecial = FALSE); // Silviu Simen Cut/Paste of Special Objs.
EDT_ModifDelete (EDT_HierarchyEditor *pEditor, EDT_SuperObject *pObjectToDelete,
CString csType, BOOL bUpdateDrawing = TRUE, BOOL bDestroy = TRUE,
BOOL bSelectOnUndo = TRUE, BOOL pBlock = FALSE,
BOOL bCutSpecial = FALSE); // Silviu Simen Cut/Paste of Special Objs.
~EDT_ModifDelete (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
EDT_ParentByType * fn_pstFindParentListFromObj (EDT_SuperObject *pEdObj);
void fn_vFillListForDLLs (EDT_SuperObject *pEdObj);
// message
void fn_vSendMessageDelete (tdeTypeModif eType);
};
/*===========================================================================
* Description: ModifPaste
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifPaste : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
BOOL m_bUpdate;
CPA_List<EDT_ParentByType> m_lstModifByType;
CPA_List<EDT_SaveParents> m_stListObjects;
CPA_List<EDT_SaveParents> m_stListForTools;
BOOL m_bDone;
CString m_csType;
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifPaste(EDT_HierarchyEditor *pEditor, CPA_List<EDT_SaveParents> *pListObj,
CString csType, long lNbCopy, BOOL bUpdateDrawing = TRUE);
~EDT_ModifPaste (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
EDT_ParentByType * fn_pstFindParentListFromObj (EDT_SuperObject *pEdObj);
void fn_vFillListForDLLs (EDT_SuperObject *pEdObj);
void fn_vSendMessageCopy (tdeTypeModif eType);
};
/*===========================================================================
* Description: ModifParent
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifParent : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
BOOL m_bUpdate;
CPA_List<EDT_ParentByType> m_lstModifByType;
CPA_List<EDT_SaveParents> m_stListForTools;
CString m_csType;
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifParent(EDT_HierarchyEditor *pEditor, CPA_List<EDT_ListByDLL> *pSelectByDLL,
EDT_SuperObject *pParent, CString csType, BOOL bUpdateDrawing = TRUE);
EDT_ModifParent(EDT_HierarchyEditor *pEditor, CPA_List<EDT_SaveParents> *pListModif, CString csType);
~EDT_ModifParent (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
void fn_vSendMessageParent (tdeTypeModif eType);
EDT_ParentByType * GetOrCreateListByDLL (CPA_ObjectDLLBase *p_oDLL);
};
/*===========================================================================
* Description: ModifMove
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifMove : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
BOOL m_bUpdate;
CPA_List<EDT_PosByType> m_lstModifByType;
EDT_PosByType m_stListForTools;
EDT_ModifParent *m_pModifParent;
CString m_csType;
public:
// paent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifMove(EDT_HierarchyEditor *pEditor, CPA_List<EDT_ListByDLL> *pSelectByDLL,
CString csType, BOOL bUpdateDrawing = TRUE);
~EDT_ModifMove (void);
// actions
BOOL Do (void);
BOOL Undo (void);
BOOL Cancel (void);
// functions
void fn_vSendMessageMove (tdeTypeModif eType);
void fn_vInitListModif (CPA_List<EDT_SaveParents> *pListModif);
void fn_vRegisterPositions (void);
};
/*===========================================================================
* Description: ModifName
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifName : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
CPA_ObjectDLLBase *m_poDLL;
EDT_SuperObject *m_pModifiedObject;
CString m_csInitialName;
CString m_csFinalName;
CString m_csType;
BOOL m_bRenameObject;
BOOL m_bHasObjectName;
public:
// paent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifName(EDT_HierarchyEditor *pEditor, EDT_SuperObject *pModifiedObject, CString csFinalName, BOOL bRenameObject = TRUE);
~EDT_ModifName (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
void fn_vSendMessageName (tdeTypeModif eType);
};
/*===========================================================================
* Description: ModifState
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifState : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
EDT_SuperObject *m_pModifiedObject;
CString m_csTypeModif;
BOOL m_bInitialState;
GEO_tdxHandleToMatrix m_hInitialMatrix;
GEO_tdxHandleToMatrix m_hFinalMatrix;
EDT_SuperObject *m_pInitialParent;
EDT_SuperObject *m_pFinalParent;
CString m_csInitialName;
CString m_csFinalName;
CPA_List<EDT_ParentByType> m_lstParentByType;
CPA_List<EDT_SaveParents> m_stParentForTools;
CPA_List<EDT_PosByType> m_lstPosByType;
EDT_PosByType m_stPosForTools;
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifState(EDT_HierarchyEditor *pEditor, EDT_SuperObject *pModifiedObject,
CString csTypeModif, BOOL bInitialState);
~EDT_ModifState (void);
// actions
BOOL Do (void);
BOOL Undo (void);
// functions
void fn_vInsertInHierarchy (void);
void fn_vRemoveFromHierarchy (void);
EDT_ParentByType * fn_pstFindParentListFromObj (EDT_SuperObject *pEdObj);
void fn_vFillListForDelete (EDT_SuperObject *pEdObj, EDT_SuperObject *pInitialFather, EDT_SuperObject *pFinalFather);
EDT_PosByType * fn_pstFindPosListFromObj (EDT_SuperObject *pEdObj);
void fn_vFillListForMove (EDT_SuperObject *pEdObj);
void fn_vRegisterPositions (void);
void fn_vSendMessageCreate (tdeTypeModif eType);
void fn_vSendMessageDelete (tdeTypeModif eType);
void fn_vSendMessageParent (tdeTypeModif eType);
void fn_vSendMessageMove (tdeTypeModif eType);
void fn_vSendMessageName (tdeTypeModif eType);
};
/*===========================================================================
* Description: ModifState
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class EDT_ModifValidate : public CPA_Modif
{
private:
EDT_HierarchyEditor *m_pEditor;
BOOL m_bFirstTime;
EDT_ModifState *m_pModifState;
EDT_SuperObject *m_pModifiedObject;
EDT_TempModif *m_pTempModif;
CString m_csTypeModif;
BOOL m_bInitialState;
BOOL m_bCreated;
BOOL m_bDeleted;
CString m_csOriginalName;
EDT_SuperObject * m_pOriginalFather;
GEO_tdxHandleToMatrix m_hOriginalPosition;
public:
// parent editor
EDT_HierarchyEditor * GetParentEditor (void) { return m_pEditor; }
CPA_Interface * GetInterface (void);
// creation
EDT_ModifValidate (EDT_HierarchyEditor *pEditor, EDT_SuperObject *pModifiedObject,
CString csTypeModif, BOOL bInitialState);
~EDT_ModifValidate (void);
// actions
BOOL Do (void);
BOOL Undo (void);
};
#endif // __EDTMODIF_HPP__
#endif // ACTIVE_EDITOR