reman3/Rayman_X/cpa/tempgrp/ITF/devviewp.cpp

246 lines
7.1 KiB
C++

/*=========================================================================
* DEVViewp.cpp : Implementation of Viewport.
* This is a part of the PCA project.
*
* Version 1.0
* Creation date 26/06/96
* Revision date
*
*
* (c) Ubi Studios 1996
*=======================================================================*/
#include "stdafx.h"
#include "acp_base.h"
#include "itf/customid.h"
#include "itf/CPARes.h"
#include "itf/DEVViewp.hpp"
#include "itf/DEVMulti.hpp"
#include "itf/CPACont.hpp"
#include "itf/CPAProj.hpp"
#define M_DegToRad(A) ((A)*0.01745329)
//=========================================================================
//=========================================================================
DEV_ViewPort::DEV_ViewPort()
{
}
DEV_ViewPort::~DEV_ViewPort()
{
}
//=========================================================================
//=========================================================================
DEV_MultiDevice * DEV_ViewPort::GetParentMultiDevice()
{
return (DEV_MultiDevice *) GetDevice()->GetWindowParent();
}
//=========================================================================
DEV_MultiDevice2D * DEV_ViewPort::GetParentMultiDevice2D()
{
return (DEV_MultiDevice2D *) GetDevice()->GetWindowParent();
}
//=========================================================================
DEV_MultiDevice3D * DEV_ViewPort::GetParentMultiDevice3D()
{
return (DEV_MultiDevice3D *) GetDevice()->GetWindowParent();
}
//=========================================================================
#ifdef ACTIVE_EDITOR
CPA_Contact * DEV_ViewPort::GetParentContact()
{
return GetParentMultiDevice()->GetContact();
}
#endif
//=========================================================================
#ifdef ACTIVE_EDITOR
FRMBaseMenu * DEV_ViewPort::GetParentFrame()
{
return GetParentMultiDevice()->GetParentFrame();
}
#else
CFrameWnd *DEV_ViewPort::GetParentFrame()
{
return GetParentMultiDevice()->GetParentFrame();
}
#endif
#ifdef ACTIVE_EDITOR
//=========================================================================
CPA_DialogBar * DEV_ViewPort::GetParentDialogBar()
{
#ifdef ACTIVE_EDITOR
if(!GetParentMultiDevice()->GetParent()->IsKindOf(RUNTIME_CLASS(FRMSplitter)))
{
return NULL;
}
#endif
return &GetParentFrame()->m_oGeneralDialogBar;
}
#endif
//=========================================================================
//=========================================================================
BEGIN_MESSAGE_MAP(DEV_ViewPort, CWnd)
//{{AFX_MSG_MAP(DEV_ViewPort)
ON_WM_WINDOWPOSCHANGING()
ON_WM_PAINT()
#ifdef ACTIVE_EDITOR
ON_WM_CREATE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
ON_WM_RBUTTONDBLCLK()
ON_WM_MOUSEMOVE()
ON_WM_KEYDOWN()
ON_WM_KEYUP()
ON_UPDATE_COMMAND_UI_RANGE(C_CustomIDStart, C_EDTPopUpMenuIDEnd, OnUpdateCommandUIRange)
// ON_COMMAND_RANGE(C_CustomIDUserStart, C_CustomIDUserEnd, OnCommandRange)
#endif // ACTIVE_EDITOR
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//=========================================================================
//=========================================================================
void DEV_ViewPort::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
CWnd::OnWindowPosChanging(lpwndpos);
lpwndpos->flags = SWP_NOZORDER | SWP_NOMOVE;
}
/////////////////////////////////////////////////////////////////////////////
//
// TO TRANSMIT MESSAGES TO CONTACT
//
/////////////////////////////////////////////////////////////////////////////
#ifdef ACTIVE_EDITOR
//---------------------------------------------------------------------------
int DEV_ViewPort::OnCreate( LPCREATESTRUCT lpCS)
{
int iResult = CWnd::OnCreate(lpCS);
m_p_oDevice = (DEV_Device*)GetParent();
return iResult;
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnLButtonDown(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnLButtonDown(nFlags, NULL, 0, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnLButtonUp(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnLButtonUp(nFlags, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnLButtonDblClk(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnLButtonDblClk(nFlags, NULL, 0, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnRButtonDown(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnRButtonDown(nFlags, NULL, 0, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnRButtonUp(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnRButtonUp(nFlags, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnRButtonDblClk(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnRButtonDblClk(nFlags, NULL, 0, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnMouseMove(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
if(GetParentContact())
GetParentContact()->_OnMouseMove(nFlags, NULL, NULL);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(GetParentContact())
GetParentContact()->_OnKeyDown(nChar, nRepCnt, nFlags);
}
//---------------------------------------------------------------------------
void DEV_ViewPort::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(GetParentContact())
GetParentContact()->_OnKeyUp(nChar, nRepCnt, nFlags);
}
//---------------------------------------------------------------------------
BOOL DEV_ViewPort::OnCommand(WPARAM wParam, LPARAM lParam)
{
UINT IDCmdMsg = LOWORD(wParam);
if(GetParentContact())
{
if(GetParentContact()->_OnCommand(IDCmdMsg))
return TRUE;
}
return CWnd::OnCommand(wParam,lParam);
}
//---------------------------------------------------------------------------
/*
void DEV_ViewPort::OnCommandRange(UINT uiId)
{
if(GetParentContact())
GetParentContact()->_OnCommand(uiId);
}
*/
//---------------------------------------------------------------------------
void DEV_ViewPort::OnUpdateCommandUIRange(CCmdUI *pCmdUI)
{
if(GetParentContact())
GetParentContact()->_OnUpdateCommandUI(pCmdUI);
}
#endif // ACTIVE_EDITOR
//---------------------------------------------------------------------------
void DEV_ViewPort::OnPaint()
{
CWnd::OnPaint();
if (GLI_lWhatIsGLI() == GLI_C_VersionGlide)
{
/////////////////////////////////////////////////////
// First paint of a view : We run engine thread.
// We are then sure that all draw surface have been
// initialised.
static char s_cFirstPaint = 0;
if((s_cFirstPaint == 0) && (M_GetMainApp()->m_p_oEngineThread))
{
VERIFY(M_GetMainApp()->m_p_oEngineThread->ResumeThread() <= 1);
s_cFirstPaint = 1;
}
}
}