Loading 3d-viewer/3d_canvas.cpp +18 −30 Original line number Diff line number Diff line Loading @@ -71,24 +71,14 @@ END_EVENT_TABLE() EDA_3D_CANVAS::EDA_3D_CANVAS( EDA_3D_FRAME* parent, int* attribList ) : #if wxCHECK_VERSION( 2, 7, 0 ) wxGLCanvas( parent, -1, attribList, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE ) #else wxGLCanvas( parent, -1, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE ) #endif { m_init = false; m_gllist = 0; m_Parent = parent; m_ortho = false; #if wxCHECK_VERSION( 2, 7, 0 ) // Explicitly create a new rendering context instance for this canvas. m_glRC = new wxGLContext( this ); #endif DisplayStatus(); } Loading @@ -98,10 +88,7 @@ EDA_3D_CANVAS::~EDA_3D_CANVAS() { ClearLists(); m_init = false; #if wxCHECK_VERSION( 2, 7, 0 ) delete m_glRC; #endif } Loading Loading @@ -129,24 +116,24 @@ void EDA_3D_CANVAS::SetView3D( int keycode ) switch( keycode ) { case WXK_LEFT: g_Draw3d_dx -= delta_move; m_draw3dOffset.x -= delta_move; break; case WXK_RIGHT: g_Draw3d_dx += delta_move; m_draw3dOffset.x += delta_move; break; case WXK_UP: g_Draw3d_dy += delta_move; m_draw3dOffset.y += delta_move; break; case WXK_DOWN: g_Draw3d_dy -= delta_move; m_draw3dOffset.y -= delta_move; break; case WXK_HOME: g_Parm_3D_Visu.m_Zoom = 1.0; g_Draw3d_dx = g_Draw3d_dy = 0; m_draw3dOffset.x = m_draw3dOffset.y = 0; trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); break; Loading @@ -171,7 +158,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode ) case 'r': case 'R': g_Draw3d_dx = g_Draw3d_dy = 0; m_draw3dOffset.x = m_draw3dOffset.y = 0; for( ii = 0; ii < 4; ii++ ) g_Parm_3D_Visu.m_Rot[ii] = 0.0; Loading Loading @@ -313,9 +300,9 @@ void EDA_3D_CANVAS::OnMouseMove( wxMouseEvent& event ) /* Current zoom and an additional factor are taken into account * for the amount of panning. */ const double PAN_FACTOR = 8.0 * g_Parm_3D_Visu.m_Zoom; g_Draw3d_dx -= PAN_FACTOR * m_draw3dOffset.x -= PAN_FACTOR * ( g_Parm_3D_Visu.m_Beginx - event.GetX() ) / size.x; g_Draw3d_dy -= PAN_FACTOR * m_draw3dOffset.y -= PAN_FACTOR * (event.GetY() - g_Parm_3D_Visu.m_Beginy) / size.y; } Loading Loading @@ -461,14 +448,14 @@ void EDA_3D_CANVAS::DisplayStatus() { wxString msg; msg.Printf( wxT( "dx %3.2f" ), g_Draw3d_dx ); m_Parent->SetStatusText( msg, 1 ); msg.Printf( wxT( "dx %3.2f" ), m_draw3dOffset.x ); Parent()->SetStatusText( msg, 1 ); msg.Printf( wxT( "dy %3.2f" ), g_Draw3d_dy ); m_Parent->SetStatusText( msg, 2 ); msg.Printf( wxT( "dy %3.2f" ), m_draw3dOffset.y ); Parent()->SetStatusText( msg, 2 ); msg.Printf( wxT( "View: %3.1f" ), 45 * g_Parm_3D_Visu.m_Zoom ); m_Parent->SetStatusText( msg, 3 ); Parent()->SetStatusText( msg, 3 ); } Loading Loading @@ -496,7 +483,8 @@ void EDA_3D_CANVAS::InitGL() { m_init = true; g_Parm_3D_Visu.m_Zoom = 1.0; ZBottom = 1.0; ZTop = 10.0; m_ZBottom = 1.0; m_ZTop = 10.0; glDisable( GL_CULL_FACE ); // show back faces Loading Loading @@ -549,7 +537,7 @@ void EDA_3D_CANVAS::InitGL() // position viewer glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 0.0F, 0.0F, -( ZBottom + ZTop) / 2 ); glTranslatef( 0.0F, 0.0F, -( m_ZBottom + m_ZTop) / 2 ); // clear color and depth buffers glClearColor( g_Parm_3D_Visu.m_BgColor.m_Red, Loading Loading @@ -595,7 +583,7 @@ void EDA_3D_CANVAS::SetLights() */ void EDA_3D_CANVAS::TakeScreenshot( wxCommandEvent& event ) { wxFileName fn( m_Parent->m_Parent->GetScreen()->GetFileName() ); wxFileName fn( Parent()->Parent()->GetScreen()->GetFileName() ); wxString FullFileName; wxString file_ext, mask; bool fmt_is_jpeg = false; Loading @@ -607,7 +595,7 @@ void EDA_3D_CANVAS::TakeScreenshot( wxCommandEvent& event ) { file_ext = fmt_is_jpeg ? wxT( "jpg" ) : wxT( "png" ); mask = wxT( "*." ) + file_ext; FullFileName = m_Parent->m_Parent->GetScreen()->GetFileName(); FullFileName = Parent()->Parent()->GetScreen()->GetFileName(); fn.SetExt( file_ext ); FullFileName = EDA_FileSelector( _( "3D Image filename:" ), wxEmptyString, Loading 3d-viewer/3d_draw.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ void EDA_3D_CANVAS::Redraw( bool finish ) GLfloat mat[4][4]; // Translate motion first, so rotations don't mess up the orientation... glTranslatef( g_Draw3d_dx, g_Draw3d_dy, 0.0F ); glTranslatef( m_draw3dOffset.x, m_draw3dOffset.y, 0.0F ); build_rotmatrix( mat, g_Parm_3D_Visu.m_Quat ); glMultMatrixf( &mat[0][0] ); Loading Loading @@ -145,7 +145,7 @@ void EDA_3D_CANVAS::Redraw( bool finish ) GLuint EDA_3D_CANVAS::CreateDrawGL_List() { PCB_BASE_FRAME* pcbframe = m_Parent->m_Parent; PCB_BASE_FRAME* pcbframe = Parent()->Parent(); BOARD* pcb = pcbframe->GetBoard(); TRACK* track; SEGZONE* segzone; Loading 3d-viewer/3d_frame.cpp +3 −8 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ #include <wxstruct.h> Info_3D_Visu g_Parm_3D_Visu; double g_Draw3d_dx; double g_Draw3d_dy; double ZBottom; double ZTop; double DataScale3D; // 3D conversion units. Loading @@ -40,7 +36,6 @@ EDA_3D_FRAME::EDA_3D_FRAME( PCB_BASE_FRAME* parent, const wxString& title, long { m_FrameName = wxT( "Frame3D" ); m_Canvas = NULL; m_Parent = parent; m_HToolBar = NULL; m_VToolBar = NULL; m_InternalUnits = 10000; // Internal units = 1/10000 inch Loading Loading @@ -101,9 +96,9 @@ void EDA_3D_FRAME::OnCloseWindow( wxCloseEvent& Event ) { SaveSettings(); if( m_Parent ) if( Parent() ) { m_Parent->m_Draw3DFrame = NULL; Parent()->m_Draw3DFrame = NULL; } Destroy(); Loading Loading @@ -177,7 +172,7 @@ void EDA_3D_FRAME::Process_Zoom( wxCommandEvent& event ) g_Parm_3D_Visu.m_Rot[ii] = 0.0; g_Parm_3D_Visu.m_Zoom = 1.0; g_Draw3d_dx = g_Draw3d_dy = 0; m_Canvas->SetOffset(0.0, 0.0); trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); break; Loading 3d-viewer/3d_toolbar.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -132,7 +132,7 @@ void EDA_3D_FRAME::ReCreateMenuBar() bool full_options = true; // If called from the display frame of CvPcb, only some options are relevant if( m_Parent->GetName() == wxT( "CmpFrame" ) ) if( Parent()->GetName() == wxT( "CmpFrame" ) ) // Called from CvPcb: do not display all options full_options = false; Loading 3d-viewer/3d_viewer.h +22 −20 Original line number Diff line number Diff line Loading @@ -167,26 +167,27 @@ public: Info_3D_Visu(); class EDA_3D_CANVAS : public wxGLCanvas { public: EDA_3D_FRAME* m_Parent; private: bool m_init; GLuint m_gllist; /// Tracks whether to use Orthographic or Perspective projection // TODO: Does this belong here, or in EDA_3D_FRAME ??? bool m_ortho; #if wxCHECK_VERSION( 2, 7, 0 ) wxGLContext* m_glRC; #endif wxRealPoint m_draw3dOffset; // offset to draw the 3 mesh. double m_ZBottom; // position of the back layer double m_ZTop; // position of the front layer public: EDA_3D_CANVAS( EDA_3D_FRAME* parent, int* attribList = 0 ); ~EDA_3D_CANVAS(); EDA_3D_FRAME* Parent() { return (EDA_3D_FRAME*)GetParent(); } void ClearLists(); // Event functions: void OnPaint( wxPaintEvent& event ); void OnEraseBackground( wxEraseEvent& event ); void OnChar( wxKeyEvent& event ); Loading @@ -195,13 +196,13 @@ public: void OnRightClick( wxMouseEvent& event ); void OnPopUpMenu( wxCommandEvent& event ); void TakeScreenshot( wxCommandEvent& event ); void OnEnterWindow( wxMouseEvent& event ); // Display functions GLuint DisplayCubeforTest(); // Just a test function void SetView3D( int keycode ); void DisplayStatus(); void Redraw( bool finish = false ); GLuint DisplayCubeforTest(); void OnEnterWindow( wxMouseEvent& event ); void Render(); /** Loading @@ -211,6 +212,11 @@ public: GLuint CreateDrawGL_List(); void InitGL(); void SetLights(); void SetOffset(double aPosX, double aPosY) { m_draw3dOffset.x = aPosX; m_draw3dOffset.y = aPosY; } void Draw3D_Track( TRACK* track ); /** Loading Loading @@ -263,8 +269,6 @@ public: class EDA_3D_FRAME : public wxFrame { public: PCB_BASE_FRAME* m_Parent; private: wxString m_FrameName; // name used for writing and reading setup. It is "Frame3D" EDA_3D_CANVAS* m_Canvas; Loading @@ -284,6 +288,7 @@ public: m_auimgr.UnInit(); }; PCB_BASE_FRAME* Parent() { return (PCB_BASE_FRAME*)GetParent(); } void Exit3DFrame( wxCommandEvent& event ); void OnCloseWindow( wxCloseEvent& Event ); void ReCreateMenuBar(); Loading Loading @@ -331,9 +336,6 @@ void SetGLColor( int color ); void Set_Object_Data( std::vector< S3D_Vertex >& aVertices ); extern Info_3D_Visu g_Parm_3D_Visu; extern double g_Draw3d_dx, g_Draw3d_dy; extern double ZBottom, ZTop; extern double DataScale3D; // 3D scale units. extern int gl_attrib[]; #endif /* __3D_VIEWER_H__ */ Loading
3d-viewer/3d_canvas.cpp +18 −30 Original line number Diff line number Diff line Loading @@ -71,24 +71,14 @@ END_EVENT_TABLE() EDA_3D_CANVAS::EDA_3D_CANVAS( EDA_3D_FRAME* parent, int* attribList ) : #if wxCHECK_VERSION( 2, 7, 0 ) wxGLCanvas( parent, -1, attribList, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE ) #else wxGLCanvas( parent, -1, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE ) #endif { m_init = false; m_gllist = 0; m_Parent = parent; m_ortho = false; #if wxCHECK_VERSION( 2, 7, 0 ) // Explicitly create a new rendering context instance for this canvas. m_glRC = new wxGLContext( this ); #endif DisplayStatus(); } Loading @@ -98,10 +88,7 @@ EDA_3D_CANVAS::~EDA_3D_CANVAS() { ClearLists(); m_init = false; #if wxCHECK_VERSION( 2, 7, 0 ) delete m_glRC; #endif } Loading Loading @@ -129,24 +116,24 @@ void EDA_3D_CANVAS::SetView3D( int keycode ) switch( keycode ) { case WXK_LEFT: g_Draw3d_dx -= delta_move; m_draw3dOffset.x -= delta_move; break; case WXK_RIGHT: g_Draw3d_dx += delta_move; m_draw3dOffset.x += delta_move; break; case WXK_UP: g_Draw3d_dy += delta_move; m_draw3dOffset.y += delta_move; break; case WXK_DOWN: g_Draw3d_dy -= delta_move; m_draw3dOffset.y -= delta_move; break; case WXK_HOME: g_Parm_3D_Visu.m_Zoom = 1.0; g_Draw3d_dx = g_Draw3d_dy = 0; m_draw3dOffset.x = m_draw3dOffset.y = 0; trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); break; Loading @@ -171,7 +158,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode ) case 'r': case 'R': g_Draw3d_dx = g_Draw3d_dy = 0; m_draw3dOffset.x = m_draw3dOffset.y = 0; for( ii = 0; ii < 4; ii++ ) g_Parm_3D_Visu.m_Rot[ii] = 0.0; Loading Loading @@ -313,9 +300,9 @@ void EDA_3D_CANVAS::OnMouseMove( wxMouseEvent& event ) /* Current zoom and an additional factor are taken into account * for the amount of panning. */ const double PAN_FACTOR = 8.0 * g_Parm_3D_Visu.m_Zoom; g_Draw3d_dx -= PAN_FACTOR * m_draw3dOffset.x -= PAN_FACTOR * ( g_Parm_3D_Visu.m_Beginx - event.GetX() ) / size.x; g_Draw3d_dy -= PAN_FACTOR * m_draw3dOffset.y -= PAN_FACTOR * (event.GetY() - g_Parm_3D_Visu.m_Beginy) / size.y; } Loading Loading @@ -461,14 +448,14 @@ void EDA_3D_CANVAS::DisplayStatus() { wxString msg; msg.Printf( wxT( "dx %3.2f" ), g_Draw3d_dx ); m_Parent->SetStatusText( msg, 1 ); msg.Printf( wxT( "dx %3.2f" ), m_draw3dOffset.x ); Parent()->SetStatusText( msg, 1 ); msg.Printf( wxT( "dy %3.2f" ), g_Draw3d_dy ); m_Parent->SetStatusText( msg, 2 ); msg.Printf( wxT( "dy %3.2f" ), m_draw3dOffset.y ); Parent()->SetStatusText( msg, 2 ); msg.Printf( wxT( "View: %3.1f" ), 45 * g_Parm_3D_Visu.m_Zoom ); m_Parent->SetStatusText( msg, 3 ); Parent()->SetStatusText( msg, 3 ); } Loading Loading @@ -496,7 +483,8 @@ void EDA_3D_CANVAS::InitGL() { m_init = true; g_Parm_3D_Visu.m_Zoom = 1.0; ZBottom = 1.0; ZTop = 10.0; m_ZBottom = 1.0; m_ZTop = 10.0; glDisable( GL_CULL_FACE ); // show back faces Loading Loading @@ -549,7 +537,7 @@ void EDA_3D_CANVAS::InitGL() // position viewer glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 0.0F, 0.0F, -( ZBottom + ZTop) / 2 ); glTranslatef( 0.0F, 0.0F, -( m_ZBottom + m_ZTop) / 2 ); // clear color and depth buffers glClearColor( g_Parm_3D_Visu.m_BgColor.m_Red, Loading Loading @@ -595,7 +583,7 @@ void EDA_3D_CANVAS::SetLights() */ void EDA_3D_CANVAS::TakeScreenshot( wxCommandEvent& event ) { wxFileName fn( m_Parent->m_Parent->GetScreen()->GetFileName() ); wxFileName fn( Parent()->Parent()->GetScreen()->GetFileName() ); wxString FullFileName; wxString file_ext, mask; bool fmt_is_jpeg = false; Loading @@ -607,7 +595,7 @@ void EDA_3D_CANVAS::TakeScreenshot( wxCommandEvent& event ) { file_ext = fmt_is_jpeg ? wxT( "jpg" ) : wxT( "png" ); mask = wxT( "*." ) + file_ext; FullFileName = m_Parent->m_Parent->GetScreen()->GetFileName(); FullFileName = Parent()->Parent()->GetScreen()->GetFileName(); fn.SetExt( file_ext ); FullFileName = EDA_FileSelector( _( "3D Image filename:" ), wxEmptyString, Loading
3d-viewer/3d_draw.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ void EDA_3D_CANVAS::Redraw( bool finish ) GLfloat mat[4][4]; // Translate motion first, so rotations don't mess up the orientation... glTranslatef( g_Draw3d_dx, g_Draw3d_dy, 0.0F ); glTranslatef( m_draw3dOffset.x, m_draw3dOffset.y, 0.0F ); build_rotmatrix( mat, g_Parm_3D_Visu.m_Quat ); glMultMatrixf( &mat[0][0] ); Loading Loading @@ -145,7 +145,7 @@ void EDA_3D_CANVAS::Redraw( bool finish ) GLuint EDA_3D_CANVAS::CreateDrawGL_List() { PCB_BASE_FRAME* pcbframe = m_Parent->m_Parent; PCB_BASE_FRAME* pcbframe = Parent()->Parent(); BOARD* pcb = pcbframe->GetBoard(); TRACK* track; SEGZONE* segzone; Loading
3d-viewer/3d_frame.cpp +3 −8 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ #include <wxstruct.h> Info_3D_Visu g_Parm_3D_Visu; double g_Draw3d_dx; double g_Draw3d_dy; double ZBottom; double ZTop; double DataScale3D; // 3D conversion units. Loading @@ -40,7 +36,6 @@ EDA_3D_FRAME::EDA_3D_FRAME( PCB_BASE_FRAME* parent, const wxString& title, long { m_FrameName = wxT( "Frame3D" ); m_Canvas = NULL; m_Parent = parent; m_HToolBar = NULL; m_VToolBar = NULL; m_InternalUnits = 10000; // Internal units = 1/10000 inch Loading Loading @@ -101,9 +96,9 @@ void EDA_3D_FRAME::OnCloseWindow( wxCloseEvent& Event ) { SaveSettings(); if( m_Parent ) if( Parent() ) { m_Parent->m_Draw3DFrame = NULL; Parent()->m_Draw3DFrame = NULL; } Destroy(); Loading Loading @@ -177,7 +172,7 @@ void EDA_3D_FRAME::Process_Zoom( wxCommandEvent& event ) g_Parm_3D_Visu.m_Rot[ii] = 0.0; g_Parm_3D_Visu.m_Zoom = 1.0; g_Draw3d_dx = g_Draw3d_dy = 0; m_Canvas->SetOffset(0.0, 0.0); trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); break; Loading
3d-viewer/3d_toolbar.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -132,7 +132,7 @@ void EDA_3D_FRAME::ReCreateMenuBar() bool full_options = true; // If called from the display frame of CvPcb, only some options are relevant if( m_Parent->GetName() == wxT( "CmpFrame" ) ) if( Parent()->GetName() == wxT( "CmpFrame" ) ) // Called from CvPcb: do not display all options full_options = false; Loading
3d-viewer/3d_viewer.h +22 −20 Original line number Diff line number Diff line Loading @@ -167,26 +167,27 @@ public: Info_3D_Visu(); class EDA_3D_CANVAS : public wxGLCanvas { public: EDA_3D_FRAME* m_Parent; private: bool m_init; GLuint m_gllist; /// Tracks whether to use Orthographic or Perspective projection // TODO: Does this belong here, or in EDA_3D_FRAME ??? bool m_ortho; #if wxCHECK_VERSION( 2, 7, 0 ) wxGLContext* m_glRC; #endif wxRealPoint m_draw3dOffset; // offset to draw the 3 mesh. double m_ZBottom; // position of the back layer double m_ZTop; // position of the front layer public: EDA_3D_CANVAS( EDA_3D_FRAME* parent, int* attribList = 0 ); ~EDA_3D_CANVAS(); EDA_3D_FRAME* Parent() { return (EDA_3D_FRAME*)GetParent(); } void ClearLists(); // Event functions: void OnPaint( wxPaintEvent& event ); void OnEraseBackground( wxEraseEvent& event ); void OnChar( wxKeyEvent& event ); Loading @@ -195,13 +196,13 @@ public: void OnRightClick( wxMouseEvent& event ); void OnPopUpMenu( wxCommandEvent& event ); void TakeScreenshot( wxCommandEvent& event ); void OnEnterWindow( wxMouseEvent& event ); // Display functions GLuint DisplayCubeforTest(); // Just a test function void SetView3D( int keycode ); void DisplayStatus(); void Redraw( bool finish = false ); GLuint DisplayCubeforTest(); void OnEnterWindow( wxMouseEvent& event ); void Render(); /** Loading @@ -211,6 +212,11 @@ public: GLuint CreateDrawGL_List(); void InitGL(); void SetLights(); void SetOffset(double aPosX, double aPosY) { m_draw3dOffset.x = aPosX; m_draw3dOffset.y = aPosY; } void Draw3D_Track( TRACK* track ); /** Loading Loading @@ -263,8 +269,6 @@ public: class EDA_3D_FRAME : public wxFrame { public: PCB_BASE_FRAME* m_Parent; private: wxString m_FrameName; // name used for writing and reading setup. It is "Frame3D" EDA_3D_CANVAS* m_Canvas; Loading @@ -284,6 +288,7 @@ public: m_auimgr.UnInit(); }; PCB_BASE_FRAME* Parent() { return (PCB_BASE_FRAME*)GetParent(); } void Exit3DFrame( wxCommandEvent& event ); void OnCloseWindow( wxCloseEvent& Event ); void ReCreateMenuBar(); Loading Loading @@ -331,9 +336,6 @@ void SetGLColor( int color ); void Set_Object_Data( std::vector< S3D_Vertex >& aVertices ); extern Info_3D_Visu g_Parm_3D_Visu; extern double g_Draw3d_dx, g_Draw3d_dy; extern double ZBottom, ZTop; extern double DataScale3D; // 3D scale units. extern int gl_attrib[]; #endif /* __3D_VIEWER_H__ */