/*=========================================================================*/ /* DEVMulti.hpp : MultiDevice which manage the Device.*/ /* This is a part of the PCA project.*/ /**/ /* Version 1.0*/ /* Creation date 26/06/96*/ /* Revision date*/ /**/ /* (c) Ubi Studios 1996*/ /**/ /* DO NOT MODIFY THAT FILE. IF SOMETHING NEEDS TO BE CHANGE, PLEASE CONTACT*/ /* OLIVIER DIDELOT OR MARC VILLEMAIN.*/ /*=========================================================================*/ #ifndef __DEVMULTI_HPP__ #define __DEVMULTI_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 /****************************************/ #include "CPAMdf.hpp" #include "DEVDevic.hpp" #include "CPAWorld.hpp" class CPA_Contact; class CPA_Interface; class FRMBaseMenu; class CPA_ProjectDoc; class CPA_KeyActionConfiguration; #define CPA_MSG_DRAWOBJECT WM_USER + 0x6500 #define CPA_MSG_DRAWOBJECTEXCEPT0 WM_USER + 0x6501 #define MD_ONEDEVICE (1) #define MD_NOTRANSLATIONX (1<<2) #define MD_NOTRANSLATIONY (1<<3) #define MD_NOTRANSLATIONZ (1<<4) #define MD_NOTRANSLATION (1<<5) #define MD_NOROTATIONX (1<<6) #define MD_NOROTATIONY (1<<7) #define MD_NOROTATIONZ (1<<8) #define MD_NOROTATION (1<<9) #define MD_NOZOOMX (1<<10) #define MD_NOZOOMY (1<<11) #define MD_VIEW2D (1<<12) #define MAX_DEVICE (10+1) /* Maximum number of Device.*/ typedef enum {MultiDevice3D = 1,MultiDevice2D, SingleDevice3D, SingleDevice2D } tdeMultiDeviceType; /*---------------------------------------------------------------------*/ class CPA_EXPORT DEV_MultiDevice : public CView { protected: DEV_MultiDevice(); DECLARE_DYNCREATE(DEV_MultiDevice) public: DEV_MultiDevice(int); virtual ~DEV_MultiDevice(); /*--------------------------------------------------------------------------------*/ /* VARIABLE MEMBERS*/ /*--------------------------------------------------------------------------------*/ BOOL mbOnDestroy; /* Is MultiDevice is Destroy.*/ protected: short mFlags; /* Flags defining behaviour of MultiDevice.*/ #ifdef ACTIVE_EDITOR DEV_Device *mpDevice[MAX_DEVICE]; /* List of Devices.*/ DEV_Device mDevice[MAX_DEVICE]; BOOL mActivDevice[MAX_DEVICE]; /* List of active Devices.*/ long m_lFocusDevice; /* Number of the device who has the focus.*/ long m_lFocusPane; /* Number of the pane who has the focus. */ public: CWnd *m_p_oMultiToDraw; BOOL mbForceDrawing; char m_cIsAdditional; /* Additional multi device ?*/ private: CPA_EditManager *m_p_oEditManager; /* For undo*/ CPA_Contact *m_p_oContact; /* Address of contact object.*/ CPA_Interface *m_p_oInterface; /* Adress of Interface*/ BOOL m_bActive; protected: CWnd *m_p_oParent; /* Parent of multidevice*/ #else DEV_Device mDeviceAlone; /* When there is only one Device.*/ BOOL mActivDeviceAlone; /* Is the device is active.*/ #endif /* ACTIVE_EDITOR*/ /*--------------------------------------------------------------------------------*/ /* GET-FUNCTIONS*/ /*--------------------------------------------------------------------------------*/ public: CPA_ProjectDoc *GetDocument(); int GetFlags() { return mFlags; } DEV_Device *GetDevice(int); DEV_Device *GetFocusDevice(); DEV_Device *GetFocusDevice2(); #ifdef ACTIVE_EDITOR FRMBaseMenu *GetParentFrame() { return (FRMBaseMenu *) GetParent()->GetParent(); } #else CFrameWnd *GetParentFrame() { return (CFrameWnd *) GetParent(); } #endif #ifdef ACTIVE_EDITOR void Activate() { m_bActive = TRUE;}; void Disactivate() { m_bActive = FALSE;}; BOOL IsActive() { return m_bActive; }; CPA_EditManager *GetEditManager(); CPA_Contact *GetContact(); CPA_Interface *GetInterface(); long GetNumFocusDevice() { return m_lFocusDevice; } protected: DEV_MultiDevice3D *GetPane_0_0(); private: UINT GetNextNumDevice(); #endif /* ACTIVE_EDITOR*/ /*--------------------------------------------------------------------------------*/ /* SET-FUNCTIONS*/ /*--------------------------------------------------------------------------------*/ public: void SetFlags(int flag) { mFlags = (short) flag; }; void SetBackgroundColor(COLORREF Color); void SetBackgroundColor(char Red, char Green, char Blue); void GetBackgroundColor(char *Red, char *Green, char *Blue); #ifdef ACTIVE_EDITOR void SetEditManager(CPA_EditManager *p_oMng); void SetContact(CPA_Contact *p_oContact); void SetInterface (CPA_Interface *p_oInterface); void SetFocusPane(long lPane); void SetActivDevice(int num, BOOL activ) { mActivDevice[num] = activ; }; void SetFocusDevice(int); private: BOOL SetDevice(DEV_Device *pDevice, UINT num); #endif /* ACTIVE_EDITOR*/ /*--------------------------------------------------------------------------------*/ /* TEST-FUNCTIONS*/ /*--------------------------------------------------------------------------------*/ public: BOOL TestFlags(int flag) { return mFlags & flag; }; BOOL IsView2D() { return (mFlags & MD_VIEW2D); }; #ifdef ACTIVE_EDITOR BOOL IsDevice(DEV_Device *); BOOL IsActivDevice(int num) { return mActivDevice[num]; }; #endif /* ACTIVE_EDITOR*/ /*--------------------------------------------------------------------------------*/ /* ACTION-FUNCTIONS*/ /*--------------------------------------------------------------------------------*/ public: void FreezeAllButOne(UINT Number); void FreezeAll(); void UnfreezeAll(); void Init(); DEV_Device* OpenNewDevice(int _iLeft = -1, int _iTop = -1, int _iWidth = -1, int _iHeight = -1); void CloseAllDevices(); private: void OnOpenDeviceBackground(); void DelFlags(int flag) { mFlags &= !flag; }; protected: void AddFlags(int flag) { mFlags |= flag; }; #ifdef ACTIVE_EDITOR public: void UpdateColorTitle(void); virtual long InitButtonsViewport(long) { return 0; }; virtual void DrawObject(void) {}; virtual void DrawEditorObject(void) {}; virtual void DrawObjectExcept0(void) {}; #endif /* ACTIVE_EDITOR*/ /* Overrides*/ /* ClassWizard generated virtual function overrides*/ /*{{AFX_VIRTUAL(DEV_MultiDevice)*/ public: virtual void OnDraw(CDC* pDC); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); /*}}AFX_VIRTUAL*/ /*--------------------------------------------------------------------------------*/ /* MESSAGE MAP FUNCTIONS*/ /*--------------------------------------------------------------------------------*/ protected: /*{{AFX_MSG(DEV_MultiDevice)*/ afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg BOOL OnNotifyEx( UINT id, NMHDR * pNotifyStruct, LRESULT * result ); #ifdef ACTIVE_EDITOR public: afx_msg void OnDeviceTileHorz(); afx_msg void OnDeviceTileVert(); afx_msg void OnDeviceCascade(); afx_msg void OnOpenDevice(); afx_msg void OnCloseDevice(); afx_msg void OnCloseAllDevice(); afx_msg void OnMaximizeDevice(void); afx_msg void OnRestoreDevice(void); afx_msg LONG OnDrawObject(UINT, LONG); afx_msg LONG OnDrawObjectExcept0(UINT, LONG); #endif /* ACTIVE_EDITOR*/ /*}}AFX_MSG*/ DECLARE_MESSAGE_MAP() }; inline CPA_ProjectDoc* DEV_MultiDevice::GetDocument() { return (CPA_ProjectDoc*)m_pDocument; } #endif /* __DEVMULTI_HPP__*/