]> Creatis software - crea.git/blobdiff - src/creawxVTKRenderWindowInteractor.h
#3374 crea Bug New Normal - vtk8itk5wx3-mingw64
[crea.git] / src / creawxVTKRenderWindowInteractor.h
index d0b90df118ebf30372847cfc518cb695d084b6f2..7118318fac73910b0301264da090c0244aebd6a8 100644 (file)
@@ -1,10 +1,37 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
 /*=========================================================================
 
   Program:   Visualization Toolkit
-  Module:    $RCSfile: creawxVTKRenderWindowInteractor.h,v $
+  Module:    $RCSfile$
   Language:  C++
-  Date:      $Date: 2010/01/22 19:16:54 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date$
+  Version:   $Revision$
 
   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
   All rights reserved.
 
 =========================================================================*/
 
-// .NAME  creawxVTKRenderWindowInteractor - class to enable VTK to render to 
+// .NAME  wxVTKRenderWindowInteractor - class to enable VTK to render to 
 // and interact with wxWindow.
 // .SECTION Description
-//  creawxVTKRenderWindowInteractor provide a VTK widget for wxWindow. This class
+//  wxVTKRenderWindowInteractor provide a VTK widget for wxWindow. This class
 // was completely rewrote to have the 'Look & Feel' of the python version:
-// creawxVTKRenderWindowInteractor.py
+// wxVTKRenderWindowInteractor.py
 // .SECTION Caveats 
 //  - There is a know bug that prevent this class to works for more info see 
 // WX_USE_X_CAPTURE. This bug only affect wxGTK from 2.3.2 to wxGTK 2.4.0.
 //  - This class might not be easily readable as it tried to work with VTK 3.2
 //  and 4.x. This class doesn't support reparenting with VTK 4.2 and earlier.
 // .SECTION see also
-// creawxVTKRenderWindowInteractor.py creawxVTKRenderWindow.py
+// wxVTKRenderWindowInteractor.py wxVTKRenderWindow.py
 
-#ifndef _creawxVTKRenderWindowInteractor_h_
-#define _creawxVTKRenderWindowInteractor_h_
+#ifndef _wxVTKRenderWindowInteractor_h_
+#define _wxVTKRenderWindowInteractor_h_
 
-#ifdef USE_WXWIDGETS
-#ifdef USE_VTK
-
-#include <creaSystem.h>
-#include <creaWx.h>
-
-/*
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
@@ -54,7 +74,7 @@
 #ifndef WX_PRECOMP
 #include <wx/wx.h>
 #endif
-*/
+
 #include <wx/timer.h>
 #include <wx/dcclient.h>
 
 #include "vtkRenderWindowInteractor.h"
 #include "vtkRenderWindow.h"
 
-// Apparently since wxGTK 2.8.0 one can finally use wxWindow (just as in any
-// other port):
-#if (!wxCHECK_VERSION(2, 8, 0))
 #define USE_WXGLCANVAS
-#endif
-
 
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
-# if wxUSE_GLCANVAS
+#  if wxUSE_GLCANVAS
 #    include <wx/glcanvas.h>
-# else
+#  else
 #    error "problem of wxGLCanvas, you need to build wxWidgets with opengl"
-# endif //wxUSE_GLCANVAS
+#  endif //wxUSE_GLCANVAS
 #endif //__WXGTK__
 
 // Motif version (renamed into wxX11 for wxWindow 2.4 and newer)
 #if defined(__WXMOTIF__) 
-# error This GUI is not supported by creawxVTKRenderWindowInteractor for now
+# error This GUI is not supported by wxVTKRenderWindowInteractor for now
 #endif
 
+#include "creaSystem.h"
+
 
 // wx forward declarations
 class wxPaintEvent;
@@ -97,34 +114,34 @@ namespace crea
 
 
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
-class CREA_EXPORT creawxVTKRenderWindowInteractor : public wxGLCanvas, virtual public vtkRenderWindowInteractor
+class wxVTKRenderWindowInteractor : public wxGLCanvas, public vtkRenderWindowInteractor
 #else
-class CREA_EXPORT creawxVTKRenderWindowInteractor : virtual public vtkRenderWindowInteractor, public wxWindow
+class CREA_EXPORT wxVTKRenderWindowInteractor : public wxWindow, public vtkRenderWindowInteractor
 #endif //__WXGTK__
 {
-  DECLARE_DYNAMIC_CLASS(creawxVTKRenderWindowInteractor)
+//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
+#if wxMAJOR_VERSION <= 2
+  DECLARE_DYNAMIC_CLASS(wxVTKRenderWindowInteractor)
+#else
+  wxDECLARE_DYNAMIC_CLASS(wxVTKRenderWindowInteractor);
+#endif
   
   public:
     //constructors
-    creawxVTKRenderWindowInteractor();
+    wxVTKRenderWindowInteractor();
 
-    creawxVTKRenderWindowInteractor(wxWindow *parent,
+    wxVTKRenderWindowInteractor(wxWindow *parent,
                                 wxWindowID id,
                                 const wxPoint &pos = wxDefaultPosition,
                                 const wxSize &size = wxDefaultSize,
                                 long style = wxWANTS_CHARS | wxNO_FULL_REPAINT_ON_RESIZE,
                                 const wxString &name = wxPanelNameStr);
-       //vtk ::New()
-    static creawxVTKRenderWindowInteractor * New();
+  //EED win Compilation why ??:    vtkTypeRevisionMacro(wxVTKRenderWindowInteractor,vtkRenderWindowInteractor);
+    static wxVTKRenderWindowInteractor * New();
     void PrintSelf(ostream& os, vtkIndent indent);
 
          //destructor
-    ~creawxVTKRenderWindowInteractor();
-
-#if defined(_WIN32)
-    const char * creawxVTKRenderWindowInteractor::GetClassName() const;
-#endif //_WIN32
-
+    ~wxVTKRenderWindowInteractor();
 
     // vtkRenderWindowInteractor overrides
     void Initialize();
@@ -147,12 +164,16 @@ class CREA_EXPORT creawxVTKRenderWindowInteractor : virtual public vtkRenderWind
 #if !(VTK_MAJOR_VERSION == 3 && VTK_MINOR_VERSION == 1)
     void OnEnter(wxMouseEvent &event);
     void OnLeave(wxMouseEvent &event);
+    void OnMouseWheel(wxMouseEvent& event);
+#if wxCHECK_VERSION(2, 8, 0)
+    void OnMouseCaptureLost(wxMouseCaptureLostEvent& event);
+#endif
     void OnKeyDown(wxKeyEvent &event);
     void OnKeyUp(wxKeyEvent &event);
+    void OnChar(wxKeyEvent &event);
 #endif
     void OnTimer(wxTimerEvent &event);
     void OnSize(wxSizeEvent &event);
-    void OnMouseWheel(wxMouseEvent& event);
 
     void Render();
     void SetRenderWhenDisabled(int newValue);
@@ -171,10 +192,18 @@ class CREA_EXPORT creawxVTKRenderWindowInteractor : virtual public vtkRenderWind
     vtkSetMacro(UseCaptureMouse,int);
     vtkBooleanMacro(UseCaptureMouse,int);
 
+#if VTK_MAJOR_VERSION > 5 || (VTK_MAJOR_VERSION == 5 && VTK_MINOR_VERSION >= 2)
   protected:
+    virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
+    virtual int InternalDestroyTimer(int platformTimerId);
+#endif
+
+  protected:
+#if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
+    wxGLContext *context;
+#endif
     wxTimer timer;
     int ActiveButton;
-    int RenderAllowed;
     long GetHandleHack();
     int Stereo;
     
@@ -188,9 +217,7 @@ class CREA_EXPORT creawxVTKRenderWindowInteractor : virtual public vtkRenderWind
 };
 
 } 
-// LG : EO namespace crea
+// LG : EO namespace bbwxvtk
 //======================================================================
 
-#endif // USE_WX
-#endif // USE_VTK
-#endif //_creawxVTKRenderWindowInteractor_h_
+#endif //_wxVTKRenderWindowInteractor_h_