358 lines
11 KiB
C++
358 lines
11 KiB
C++
//ROMTEAM WorldEditor
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
// File : EToolBar.cpp
|
|
// Author : Cristian S
|
|
// Date : 97.11
|
|
// Description :
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
//ROMTEAM WorldEditor (Cristian Stegaru 11/97)
|
|
#include "3DGe_res.h" // main symbols
|
|
//ENDROMTEAM WorldEditor (Cristian Stegaru)
|
|
#include "EToolBar.h"
|
|
#include "ITView.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
static UINT BASED_CODE ToolBarButtons[] =
|
|
{
|
|
// same order as in the bitmap 'IDR_EDIT_TOOLBAR'
|
|
ID_EDIT_SLIDER,
|
|
ID_SEPARATOR,
|
|
ID_STATIC_NAME,
|
|
ID_EDIT_NAME,
|
|
ID_STATIC_XNB,
|
|
ID_EDIT_XNB,
|
|
ID_STATIC_YNB,
|
|
ID_EDIT_YNB,
|
|
ID_SEPARATOR,
|
|
ID_BT_NEW,
|
|
ID_BT_SAVE,
|
|
ID_BT_HIDE,
|
|
ID_BT_UNDO,
|
|
ID_BT_REDO,
|
|
ID_BT_ONTOP,
|
|
ID_BT_EXIT
|
|
};
|
|
|
|
#define SLIDER_INDEX 0
|
|
#define SLIDER_BITMAP 0
|
|
#define SLIDER_WIDTH 100
|
|
#define SLIDER_HEIGHT 150
|
|
|
|
#define STATIC_NAME_INDEX 2
|
|
#define STATIC_NAME_BITMAP 1
|
|
#define STATIC_NAME_WIDTH 50
|
|
#define STATIC_NAME_HEIGHT 20
|
|
|
|
#define EDIT_NAME_INDEX 3
|
|
#define EDIT_NAME_BITMAP 2
|
|
#define EDIT_NAME_WIDTH 80
|
|
#define EDIT_NAME_HEIGHT 20
|
|
|
|
#define STATIC_XNB_INDEX 4
|
|
#define STATIC_XNB_BITMAP 3
|
|
#define STATIC_XNB_WIDTH 40
|
|
#define STATIC_XNB_HEIGHT 20
|
|
|
|
#define EDIT_XNB_INDEX 5
|
|
#define EDIT_XNB_BITMAP 4
|
|
#define EDIT_XNB_WIDTH 40
|
|
#define EDIT_XNB_HEIGHT 20
|
|
|
|
#define STATIC_YNB_INDEX 6
|
|
#define STATIC_YNB_BITMAP 5
|
|
#define STATIC_YNB_WIDTH 40
|
|
#define STATIC_YNB_HEIGHT 20
|
|
|
|
#define EDIT_YNB_INDEX 7
|
|
#define EDIT_YNB_BITMAP 6
|
|
#define EDIT_YNB_WIDTH 40
|
|
#define EDIT_YNB_HEIGHT 20
|
|
|
|
#define EDIT_ONTOP_INDEX 14
|
|
#define EDIT_HIDE_INDEX 11
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CEditorToolBar, CToolBar)
|
|
//{{AFX_MSG_MAP(CEditorToolBar)
|
|
ON_WM_HSCROLL()
|
|
ON_WM_LBUTTONDBLCLK()
|
|
ON_WM_LBUTTONDOWN()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
#define DEFAULT_X 15
|
|
#define DEFAULT_Y 15
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : CEditorToolBar constructor
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
CEditorToolBar::CEditorToolBar ()
|
|
{
|
|
m_iXNb = DEFAULT_X;
|
|
m_iYNb = DEFAULT_Y;
|
|
m_csName.LoadString (IDS_DEFAULT_ITNAME);
|
|
}
|
|
|
|
CEditorToolBar::~CEditorToolBar ()
|
|
{
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : Init
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
BOOL CEditorToolBar::Init (CWnd *pParent)
|
|
{
|
|
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY;
|
|
if (!Create (pParent, dwStyle, IDW_TOOLBAR) || !LoadBitmap(IDR_EDIT_TOOLBAR))
|
|
return FALSE;
|
|
|
|
if(!SetButtons(ToolBarButtons, sizeof(ToolBarButtons)/sizeof(UINT)))
|
|
return FALSE;
|
|
|
|
CRect sliderRect (-SLIDER_WIDTH, -SLIDER_HEIGHT, 0, 0);
|
|
CRect staticNameRect (-STATIC_NAME_WIDTH, -STATIC_NAME_HEIGHT, 0, 0);
|
|
CRect editNameRect (-EDIT_NAME_WIDTH, -EDIT_NAME_HEIGHT, 0, 0);
|
|
CRect xnbRect (-STATIC_XNB_WIDTH, -STATIC_XNB_HEIGHT, 0, 0);
|
|
CRect ynbRect (-STATIC_YNB_WIDTH, -STATIC_YNB_HEIGHT, 0, 0);
|
|
|
|
DWORD dwStaticStyle = WS_CHILD | SS_CENTER;
|
|
DWORD dwEditStyle = WS_CHILD | ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP | WS_BORDER;
|
|
DWORD dwSliderStyle = WS_CHILD | TBS_HORZ | TBS_NOTICKS;
|
|
|
|
if (!m_stName.Create ("Name:", dwStaticStyle, staticNameRect, this, IDC_STATIC_NAME) ||
|
|
!m_stXNb.Create ("XNb:", dwStaticStyle, xnbRect, this, IDC_STATIC_XNB) ||
|
|
!m_stYNb.Create ("YNb:", dwStaticStyle, ynbRect, this, IDC_STATIC_YNB) ||
|
|
!m_edName.Create (dwEditStyle, editNameRect, this, IDC_EDIT_NAME) ||
|
|
!m_edXNb.Create (dwEditStyle, xnbRect, this, IDC_EDIT_XNB) ||
|
|
!m_edYNb.Create (dwEditStyle, ynbRect, this, IDC_EDIT_YNB) ||
|
|
!m_Slider.Create (dwSliderStyle, sliderRect, this, IDC_SLIDER))
|
|
return FALSE;
|
|
|
|
SetButtonInfo(STATIC_NAME_INDEX, IDC_STATIC_NAME, TBBS_SEPARATOR, STATIC_NAME_WIDTH);
|
|
SetButtonInfo(STATIC_XNB_INDEX, IDC_STATIC_XNB, TBBS_SEPARATOR, STATIC_XNB_WIDTH);
|
|
SetButtonInfo(STATIC_YNB_INDEX, IDC_STATIC_YNB, TBBS_SEPARATOR, STATIC_YNB_WIDTH);
|
|
SetButtonInfo(EDIT_NAME_INDEX, IDC_EDIT_NAME, TBBS_SEPARATOR, EDIT_NAME_WIDTH);
|
|
SetButtonInfo(EDIT_XNB_INDEX, IDC_EDIT_XNB, TBBS_SEPARATOR, EDIT_XNB_WIDTH);
|
|
SetButtonInfo(EDIT_YNB_INDEX, IDC_EDIT_YNB, TBBS_SEPARATOR, EDIT_YNB_WIDTH);
|
|
SetButtonInfo(SLIDER_INDEX, IDC_SLIDER, TBBS_SEPARATOR, SLIDER_WIDTH);
|
|
|
|
UINT uID = 0, uStyle = 0;
|
|
int iImage = 0;
|
|
GetButtonInfo (EDIT_ONTOP_INDEX, uID, uStyle, iImage);
|
|
SetButtonInfo (EDIT_ONTOP_INDEX, uID, uStyle | TBBS_CHECKBOX, iImage);
|
|
|
|
GetButtonInfo (EDIT_HIDE_INDEX, uID, uStyle, iImage);
|
|
SetButtonInfo (EDIT_HIDE_INDEX, uID, uStyle | TBBS_CHECKBOX, iImage);
|
|
|
|
if (NULL != m_stName.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(STATIC_NAME_INDEX, rect);
|
|
|
|
m_stName.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_stName.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_stXNb.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(STATIC_XNB_INDEX, rect);
|
|
|
|
m_stXNb.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_stXNb.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_stYNb.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(STATIC_YNB_INDEX, rect);
|
|
|
|
m_stYNb.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_stYNb.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_edName.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(EDIT_NAME_INDEX, rect);
|
|
|
|
m_edName.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_edName.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_edXNb.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(EDIT_XNB_INDEX, rect);
|
|
|
|
m_edXNb.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_edXNb.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_edYNb.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(EDIT_YNB_INDEX, rect);
|
|
|
|
m_edYNb.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_edYNb.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
if (NULL != m_Slider.m_hWnd)
|
|
{
|
|
CRect rect;
|
|
GetItemRect(SLIDER_INDEX, rect);
|
|
|
|
m_Slider.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
|
|
m_Slider.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
UpdateData (FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : OnHScroll
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
void CEditorToolBar::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
|
{
|
|
int min, max;
|
|
CSliderCtrl *sl = (CSliderCtrl*)pScrollBar;
|
|
sl->GetRange(min, max);
|
|
GetView ()->SetLinearity((float)sl->GetPos()/(max-min));
|
|
CToolBar::OnHScroll(nSBCode, nPos, pScrollBar);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : GetView
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
CIndexedTriangleView* CEditorToolBar::GetView ()
|
|
{
|
|
CWnd *pDockBar = GetParent ();
|
|
ASSERT (pDockBar);
|
|
CFrameWnd *pFrameWnd = (CFrameWnd*)pDockBar->GetParent ();
|
|
ASSERT (pFrameWnd);
|
|
return (CIndexedTriangleView*)pFrameWnd->GetActiveView();
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : OnLButtonDblClk
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
void CEditorToolBar::OnLButtonDblClk(UINT nFlags, CPoint point)
|
|
{
|
|
//don't allow floating toolbar
|
|
CWnd::OnLButtonDblClk(nFlags, point);
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : OnLButtonDown
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
void CEditorToolBar::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
//don't allow floating toolbar
|
|
CWnd::OnLButtonDown(nFlags, point);
|
|
}
|
|
|
|
|
|
#define MAX_CHARS 30
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : UpdateData
|
|
// Date : November 1997
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
void CEditorToolBar::UpdateData (BOOL bGet/* = TRUE*/)
|
|
{
|
|
CString csXNb, csYNb;
|
|
if (bGet)
|
|
{
|
|
GetDlgItem (IDC_EDIT_XNB)->GetWindowText (csXNb);
|
|
m_iXNb = atoi (csXNb);
|
|
GetDlgItem (IDC_EDIT_YNB)->GetWindowText (csYNb);
|
|
m_iYNb = atoi (csYNb);
|
|
GetDlgItem (IDC_EDIT_NAME)->GetWindowText (m_csName);
|
|
//ANNECY Shaitan Correction 03/03/98 {
|
|
while (((m_iXNb + 1)*(m_iYNb +1)) >= 2500)
|
|
{
|
|
if (m_iXNb > m_iYNb)
|
|
m_iXNb--;
|
|
else
|
|
m_iYNb--;
|
|
}
|
|
UpdateData(FALSE);
|
|
//ENDANNECY Shaitan Correction }
|
|
}
|
|
else
|
|
{
|
|
itoa (m_iXNb, csXNb.GetBuffer (MAX_CHARS), 10);
|
|
GetDlgItem (IDC_EDIT_XNB)->SetWindowText (csXNb);
|
|
itoa (m_iYNb, csYNb.GetBuffer (MAX_CHARS), 10);
|
|
GetDlgItem (IDC_EDIT_YNB)->SetWindowText (csYNb);
|
|
GetDlgItem (IDC_EDIT_NAME)->SetWindowText (m_csName);
|
|
}
|
|
}
|
|
|