www.pudn.com > cad3d.zip > SceneWindow.h


/***************************************************************************
                          SceneWindow.h  -  description
                             -------------------
    begin                : Sat Mar 16 2002
    copyright            : (C) 2002 by Martin Marinov
    email                : martin_marinov@hotmail.com
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef __SceneWindow_h__
#define __SceneWindow_h__

#include 
#include "GuiHandlers/GuiHandlerView.h"

class CSceneView;
class CModel;
  
class CSceneWindow : 	public wxGLCanvas,
						public CGuiHandlerView
{
protected:
	void						Print3DPosition(const C3DPoint& rPt);
	void						PrintFps(double dFps);
	
	void 						ToggleModTypeHiddenState(uint nId);

public:
	CSceneWindow(	CSceneView& rSceneView, wxWindow* pParent,
					const wxPoint& rPosition, const wxSize& rSize);
	virtual ~CSceneWindow();

	//event handlers
   	void 						OnSize(wxSizeEvent& rEvent);
	void 						OnEraseBackground(wxEraseEvent& rEvent);
	void 						OnPaint(wxPaintEvent& rEvent);
	//event handlers - mouse
	void						OnLButtonDown(wxMouseEvent& rEvent);
	void						OnLButtonUp(wxMouseEvent& rEvent);
	void						OnMouseMove(wxMouseEvent& rEvent);
    void 						OnRButtonDown(wxMouseEvent& rEvent);

	//event handlers - primitives commands
	void						OnNewPrimitive(wxCommandEvent& rEvent);
	//event handlers - viewport commands
	void						OnViewportTop(wxCommandEvent& rEvent);
	void						OnViewportBottom(wxCommandEvent& rEvent);
	void						OnViewportLeft(wxCommandEvent& rEvent);
	void						OnViewportRight(wxCommandEvent& rEvent);
	void						OnViewportFront(wxCommandEvent& rEvent);
	void						OnViewportBack(wxCommandEvent& rEvent);
	void						OnViewportPerspective(wxCommandEvent& rEvent);
	void						OnViewportAcsonometric(wxCommandEvent& rEvent);
	void 						OnViewport0(wxCommandEvent& rEvent);
	void 						OnViewport1(wxCommandEvent& rEvent);
	void 						OnViewport2(wxCommandEvent& rEvent);
	void 						OnViewport3(wxCommandEvent& rEvent);
	void 						OnViewportPan(wxCommandEvent& rEvent);
	void 						OnViewportZoom(wxCommandEvent& rEvent);
	void 						OnViewportRotate(wxCommandEvent& rEvent);
	void 						OnViewportToggle(wxCommandEvent& rEvent);
	void 						OnActionCancel(wxCommandEvent& rEvent);
	void 						OnActionFinish(wxCommandEvent& rEvent);
	//event handlers - edit commands
	void						OnEditSelect(wxCommandEvent& rEvent);
	void						OnEditModify(wxCommandEvent& rEvent);
	void						OnEditDelete(wxCommandEvent& rEvent);
	void						OnEditRotate(wxCommandEvent& rEvent);
	//event handles - mesh commands	
	void						OnMeshEditVertices(wxCommandEvent& rEvent);
	void						OnMeshEditEdges(wxCommandEvent& rEvent);
	void						OnMeshEditFaces(wxCommandEvent& rEvent);
	void						OnMeshAddVertices(wxCommandEvent& rEvent);
	void						OnMeshAddFaces(wxCommandEvent& rEvent);
	void						OnMeshReverseFaces(wxCommandEvent& rEvent);
	void						OnMeshSelect(wxCommandEvent& rEvent);
	//event handles - mesh hide commands	
	void						OnMeshHideUnhidePrimitives(wxCommandEvent& rEvent);
	void						OnMeshHideUnhideVertices(wxCommandEvent& rEvent);
	void						OnMeshHideUnhideEdges(wxCommandEvent& rEvent);
	void						OnMeshHideUnhideFaces(wxCommandEvent& rEvent);
	
/*
#ifdef __WXGTK__		
	virtual void 				OnInternalIdle();
#endif
*/
	//ICadView implementation
	virtual	CWinRect			GetViewRect() const;
	virtual void				InvalidateView();


private:
    DECLARE_EVENT_TABLE()
	DECLARE_CLASS(CSceneWindow)
};


#endif//__SceneWindow_h__