** Date Started: Jan 2001
**
** This is part of the CTSim program
-** Copyright (c) 1983-2001 Kevin Rosenberg
-**
-** $Id: graph3dview.h,v 1.2 2001/01/30 10:58:13 kevin Exp $
+** Copyright (c) 1983-2009 Kevin Rosenberg
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
class Graph3dFileCanvas;
-class Graph3dFileView : public wxView
+class Graph3dFileView : public wxView
{
- friend Graph3dFileCanvas;
+ friend class Graph3dFileCanvas;
private:
- DECLARE_DYNAMIC_CLASS(Graph3dFileView)
+ DECLARE_DYNAMIC_CLASS(Graph3dFileView)
DECLARE_EVENT_TABLE()
-
- wxMenu* m_pFileMenu;
- GLfloat m_dXRotate;
- GLfloat m_dYRotate;
- GLboolean m_bUseVertexArrays;
- GLboolean m_bDoubleBuffer;
- GLboolean m_bSmooth;
- GLboolean m_bLighting;
- void Draw();
- void DrawSurface();
- void InitMaterials();
- void InitGL();
+ wxMenu* m_pFileMenu;
+ wxMenu *m_pViewMenu;
+ wxStatusBar* m_pStatusBar;
Graph3dFileCanvas* m_pCanvas;
- Graph3dFileCanvas *CreateCanvas (wxFrame* parent);
+ GLfloat m_dXRotate;
+ GLfloat m_dYRotate;
+ GLfloat m_dZRotate;
+ bool m_bDoubleBuffer;
+ bool m_bSmooth;
+ bool m_bWireframe;
+ bool m_bLighting;
+ bool m_bColor;
+ bool m_bColorScaleMinSet;
+ bool m_bColorScaleMaxSet;
+ enum {
+ DISPLAYLIST_COLOR = 1,
+ DISPLAYLIST_NO_COLOR = 2,
+ };
+
+ double m_dGraphMin;
+ double m_dGraphMax;
+ double m_dColorScaleMin;
+ double m_dColorScaleMax;
+ wxGLContext *m_pGLContext;
#if CTSIM_MDI
wxDocMDIChildFrame* m_pFrame;
wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
#endif
- wxWindow* getFrameForChild()
+ void Draw();
+ void DrawSurface();
+ void CreateDisplayList();
+ void InitMaterials();
+ void InitGL();
+
+ Graph3dFileCanvas *CreateCanvas (wxFrame* parent);
+
+ wxWindow* getFrameForChild()
#if CTSIM_MDI
{ return theApp->getMainFrame(); }
#else
{ return m_pFrame; }
#endif
+ void intensityToColor (double dIntensity, GLfloat* vecColor);
+
public:
Graph3dFileView();
virtual ~Graph3dFileView();
void OnUpdate(wxView *sender, wxObject *hint = NULL);
bool OnClose (bool deleteWindow = true);
void OnProperties (wxCommandEvent& event);
+ void OnLighting (wxCommandEvent& event);
+ void OnWireframe (wxCommandEvent& event);
+ void OnColor (wxCommandEvent& event);
+ void OnSmooth (wxCommandEvent& event);
+ void OnScaleSet (wxCommandEvent& event);
+ void OnScaleAuto (wxCommandEvent& event);
+ void OnScaleFull (wxCommandEvent& event);
+
+ void setInitialClientSize();
#if CTSIM_MDI
wxDocMDIChildFrame* getFrame() { return m_pFrame; }
#else
wxDocChildFrame* getFrame() { return m_pFrame; }
#endif
-
- Graph3dFileDocument* GetDocument()
+ Graph3dFileCanvas* getCanvas() { return m_pCanvas; }
+ Graph3dFileDocument* GetDocument()
{ return dynamic_cast<Graph3dFileDocument*>(wxView::GetDocument()); }
};
Graph3dFileView* m_pView;
public:
- Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0, int* gl_attrib = NULL);
+ Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent,
+ int* attribList,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0);
virtual ~Graph3dFileCanvas();
- virtual void OnDraw(wxDC& dc);
+ void OnPaint(wxPaintEvent& event);
+ virtual wxSize GetBestSize() const;
void OnSize(wxSizeEvent& event);
void OnEraseBackground(wxEraseEvent& event);
void OnChar(wxKeyEvent& event);