X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreawxVTKRenderWindowInteractor.h;h=0d03187703a6e5ffa978effba9923f04c71481b4;hb=refs%2Fheads%2FchangeWx28to30;hp=daf7f4ed914c0d86176384091914cef0f45891d7;hpb=e84f23420375acf1dda8fe99cb08b1733c49b996;p=crea.git diff --git a/src/creawxVTKRenderWindowInteractor.h b/src/creawxVTKRenderWindowInteractor.h index daf7f4e..0d03187 100644 --- a/src/creawxVTKRenderWindowInteractor.h +++ b/src/creawxVTKRenderWindowInteractor.h @@ -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. @@ -55,16 +59,10 @@ // - 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 -#include +#ifndef _wxVTKRenderWindowInteractor_h_ +#define _wxVTKRenderWindowInteractor_h_ // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -84,14 +82,7 @@ #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 @@ -103,7 +94,7 @@ // 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_