This commit is contained in:
romkazvo
2023-08-07 19:29:24 +08:00
commit 34d6c5d489
4832 changed files with 1389451 additions and 0 deletions

155
Editor/LayoutWnd.h Normal file
View File

@@ -0,0 +1,155 @@
#if !defined(AFX_LAYOUTWND_H__9DAFD237_0411_41BB_B7E5_8ED2D6A18670__INCLUDED_)
#define AFX_LAYOUTWND_H__9DAFD237_0411_41BB_B7E5_8ED2D6A18670__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// LayoutWnd.h : header file
//
#include "Viewport.h"
class CViewPane;
/////////////////////////////////////////////////////////////////////////////
// CLayoutWnd window
enum EViewLayout
{
ET_Layout0,
ET_Layout1,
ET_Layout2,
ET_Layout3,
ET_Layout4,
ET_Layout5,
ET_Layout6,
ET_Layout7,
ET_Layout8
};
#define MAX_VIEWPORTS 9
/** Window used as splitter window in Layout.
*/
class CLayoutSplitter : public CSplitterWnd
{
// Construction
DECLARE_DYNCREATE(CLayoutSplitter)
public:
CLayoutSplitter();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLayoutWnd)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CLayoutSplitter();
// Generated message map functions
protected:
//{{AFX_MSG(CLayoutWnd)
afx_msg void OnSize(UINT nType, int cx, int cy);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////
// Ovveride this for flat look.
void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rectArg);
//////////////////////////////////////////////////////////////////////////
void CreateLayoutView( int row,int col,int id,EViewportType viewType,CCreateContext* pContext );
void CreateSplitView( int row,int col,ESplitType splitType,CCreateContext* pContext );
private:
friend class CLayoutWnd;
};
/** Main layout window.
*/
class CLayoutWnd : public CWnd
{
// Construction
DECLARE_DYNCREATE(CLayoutWnd)
public:
CLayoutWnd();
// Attributes
public:
CViewPane *GetViewPane( int id );
//! Assign viewport type to view pane.
void AssignViewport( CViewPane *vp,EViewportType type );
//! Maximize viewport with specified type.
void MaximizeViewport( int paneId );
//! Create specific layout.
void CreateLayout( EViewLayout layout,bool bBindViewports=true,EViewportType defaultView=ET_ViewportCamera );
EViewLayout GetLayout() const { return m_layout; }
//! Save layout window configuration to registry.
void SaveConfig();
//! Load layout window configuration from registry.
bool LoadConfig();
CViewPane* FindViewByType( EViewportType type );
//! Switch 2D viewports.
void Cycle2DViewport();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLayoutWnd)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CLayoutWnd();
// Generated message map functions
protected:
//{{AFX_MSG(CLayoutWnd)
afx_msg void OnSize(UINT nType, int cx, int cy);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Bind viewports to split panes.
void BindViewports();
void UnbindViewports();
void BindViewport( CViewPane *vp,EViewportType type );
void BindViewport( CViewPane *vp,CViewport *pViewport );
void CreateSubSplitView( int row,int col,EViewLayout splitType,CCreateContext* pContext );
void CreateLayoutView( CLayoutSplitter *wndSplitter,int row,int col,int id,EViewportType viewType,CCreateContext* pContext );
private:
bool m_bMaximized;
//! What view type is current maximized.
EViewLayout m_layout;
// ViewPane id to viewport type
EViewportType m_viewType[MAX_VIEWPORTS];
//! Primary split window.
CLayoutSplitter *m_splitWnd;
//! Secondary split window.
CLayoutSplitter *m_splitWnd2;
//! View pane for maximized layout.
CViewPane *m_maximizedView;
// Id of maximized view pane.
int m_maximizedViewId;
public:
afx_msg void OnDestroy();
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LAYOUTWND_H__9DAFD237_0411_41BB_B7E5_8ED2D6A18670__INCLUDED_)