]> Creatis software - crea.git/blobdiff - src/creawxVTKRenderWindowInteractor.h
#3125 creaFeature New Normal - branch changeWx28to30 compilation with wxWidgets3
[crea.git] / src / creawxVTKRenderWindowInteractor.h
index daf7f4ed914c0d86176384091914cef0f45891d7..0d03187703a6e5ffa978effba9923f04c71481b4 100644 (file)
@@ -1,50 +1,54 @@
 /*
-# ---------------------------------------------------------------------
-#
-# 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.
-# ------------------------------------------------------------------------ 
-*/ 
+ # ---------------------------------------------------------------------
+ #
+ # 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: 2012/11/15 10:43:26 $
-  Version:   $Revision: 1.9 $
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
+  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
 
-  This software is distributed WITHOUT ANY WARRANTY; without even 
-  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
-  PURPOSE.  See the above copyright notice for more information.
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notice for more information.
 
 =========================================================================*/
 
-// .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 wxVTKRenderWindow.py
-
-#ifndef _creawxVTKRenderWindowInteractor_h_
-#define _creawxVTKRenderWindowInteractor_h_
+// wxVTKRenderWindowInteractor.py wxVTKRenderWindow.py
 
-#ifdef USE_WXWIDGETS
-#ifdef USE_VTK
-
-#include <creaSystem.h>
-#include <creaWx.h>
+#ifndef _wxVTKRenderWindowInteractor_h_
+#define _wxVTKRenderWindowInteractor_h_
 
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 #include "vtkRenderWindowInteractor.h"
 #include "vtkRenderWindow.h"
 
-// Apparently since wxGTK 2.8.0 one can finally use wxWindow (just as in any
-// other port):
-// MM: tested on 2008/04/08: experienced some heavy flickering with wx-widget 2.6.0
-// using a wxWindow instead of wxGLCanvas fixed the symptoms
-//#if (!wxCHECK_VERSION(2, 6, 0))
-#if (!wxCHECK_VERSION(2, 8, 0))
 #define USE_WXGLCANVAS
-#endif
 
 #if defined(__WXGTK__) && defined(USE_WXGLCANVAS)
 #  if wxUSE_GLCANVAS
 
 // 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
 
 // wx forward declarations
@@ -120,29 +111,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 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);
-  //EED win Compilation why ??:  vtkTypeRevisionMacro(creawxVTKRenderWindowInteractor,vtkRenderWindowInteractor);
-    static creawxVTKRenderWindowInteractor * New();
+    vtkTypeRevisionMacro(wxVTKRenderWindowInteractor,vtkRenderWindowInteractor);
+    static wxVTKRenderWindowInteractor * New();
     void PrintSelf(ostream& os, vtkIndent indent);
 
          //destructor
-    ~creawxVTKRenderWindowInteractor();
+    ~wxVTKRenderWindowInteractor();
 
     // vtkRenderWindowInteractor overrides
     void Initialize();
@@ -165,13 +161,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);
@@ -190,10 +189,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;
     
@@ -206,13 +213,8 @@ class CREA_EXPORT creawxVTKRenderWindowInteractor : virtual public vtkRenderWind
     DECLARE_EVENT_TABLE()
 };
 
-
 } 
-// LG : EO namespace crea
+// LG : EO namespace bbwxvtk
 //======================================================================
 
-#endif // USE_WX
-#endif // USE_VTK
-
-
-#endif //_creawxVTKRenderWindowInteractor_h_
+#endif //_wxVTKRenderWindowInteractor_h_