G4OpenGLImmediateWtViewer.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 //
00030 // Class G4OpenGLImmediateWtViewer : a class derived from G4OpenGLWtViewer and
00031 //                                G4OpenGLImmediateViewer.
00032 
00033 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
00034 
00035 #include "G4OpenGLImmediateWtViewer.hh"
00036 #include "G4OpenGLImmediateSceneHandler.hh"
00037 
00038 // Qt class
00039 #include <qevent.h>
00040 
00041 #include "G4ios.hh"
00042 
00043 G4OpenGLImmediateWtViewer::G4OpenGLImmediateWtViewer
00044 (//G4OpenGLImmediateSceneHandler& sceneHandler,
00045  /*Wt::WContainerWidget *aParent,*/ const G4String&  name)/*:
00046   G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
00047   G4OpenGLViewer (sceneHandler),
00048   G4OpenGLImmediateViewer (sceneHandler)//,
00049 //  Wt::WPaintedWidget(aParent)
00050 */
00051 {
00052 
00053 #ifdef G4DEBUG_VIS_OGL
00054   printf("G4OpenGLImmediateWtViewer INIT\n");
00055 #endif
00056 
00066   //  this->mouseWentUp().connect(this,&G4OpenGLImmediateWtViewer::WtMouseReleaseEvent);
00067 }
00068 
00069 G4OpenGLImmediateWtViewer::~G4OpenGLImmediateWtViewer() {
00070 }
00071 
00072 
00073 
00074 void  G4OpenGLImmediateWtViewer::DrawView() {
00075 #ifdef G4DEBUG_VIS_OGL
00076   printf("G4OpenGLImmediateWtViewer DrawView\n");
00077 #endif
00078   fQtViewer->updateQWidget();
00079   // FIXME et printEPS
00080 }
00081 
00082 
00083 void G4OpenGLImmediateWtViewer::WtMousePressEvent(Wt::WMouseEvent event)
00084 {
00085 #ifdef G4DEBUG_VIS_OGL
00086   printf("G4OpenGLImmediateWtViewer mousePress\n");
00087 #endif
00088   // boutons et position
00089   fQtViewer->G4MousePressEvent(ConvertWtMouseEventToQt(event));
00090 }
00091 
00092 void G4OpenGLImmediateWtViewer::WtKeyPressEvent (Wt::WKeyEvent event) 
00093 {
00094 #ifdef G4DEBUG_VIS_OGL
00095   printf("G4OpenGLImmediateWtViewer keyPressEvent\n");
00096 #endif
00097   fQtViewer->G4keyPressEvent(ConvertWtKeyEventToQt(event));
00098 }
00099 
00100 void G4OpenGLImmediateWtViewer::WtWheelEvent (Wt::WMouseEvent event) 
00101 {
00102 #ifdef G4DEBUG_VIS_OGL
00103   printf("G4OpenGLImmediateWtViewer wheelEvent\n");
00104 #endif
00105   fQtViewer->G4wheelEvent(ConvertWtWheelEventToQt(event));
00106 }
00107 
00119 void G4OpenGLImmediateWtViewer::WtMouseDoubleClickEvent(Wt::WMouseEvent )
00120 {
00121 #ifdef G4DEBUG_VIS_OGL
00122   printf("G4OpenGLImmediateWtViewer mouseDoubleClickEvent\n");
00123 #endif
00124   fQtViewer->G4MouseDoubleClickEvent();
00125 }
00126 
00134 void G4OpenGLImmediateWtViewer::WtMouseMoveEvent(Wt::WMouseEvent event)
00135 {
00136 #ifdef G4DEBUG_VIS_OGL
00137   printf("G4OpenGLImmediateWtViewer mouseMoveEvent\n");
00138 #endif
00139   fQtViewer->G4MouseMoveEvent(ConvertWtMouseEventToQt(event));
00140 }
00141 
00142 
00151 void G4OpenGLImmediateWtViewer::paintEvent(Wt::WPaintDevice * painter) {
00152 #ifdef G4DEBUG_VIS_OGL
00153   printf("G4OpenGLImmediateWtViewer paintEvent\n");
00154 #endif
00155     fQtViewer->updateQWidget();
00156 }
00157 
00158 
00159 
00160 
00161 
00162 void G4OpenGLImmediateWtViewer::ShowView (
00163 ) 
00164 
00165 
00166 {
00167 #ifdef G4DEBUG_VIS_OGL
00168   printf("G4OpenGLImmediateWtViewer ShowView\n");
00169 #endif
00170   fQtViewer->activateWindow();
00171 }
00172 
00173 
00174 QMouseEvent *  G4OpenGLImmediateWtViewer::ConvertWtMouseEventToQt(Wt::WMouseEvent event) {
00175   Qt::MouseButton bt;
00176   if (event.button() == (Wt::WMouseEvent::NoButton)) {
00177     bt = Qt::NoButton;
00178   } else if (event.button() == (Wt::WMouseEvent::LeftButton)) {
00179     bt = Qt::LeftButton;
00180   } else if (event.button() == (Wt::WMouseEvent::RightButton)) {
00181     bt = Qt::RightButton;
00182   } else if (event.button() == (Wt::WMouseEvent::MiddleButton)) {
00183     bt = Qt::MidButton;
00184   }
00185 
00186   Qt::KeyboardModifiers km;
00187   if (event.modifiers() == Wt::NoModifier) {
00188     km = Qt::NoModifier;
00189   } else if (event.modifiers() == Wt::ControlModifier) {
00190     km = Qt::ControlModifier;
00191   } else if (event.modifiers() == Wt::ShiftModifier) {
00192     km = Qt::ShiftModifier;
00193   } else if (event.modifiers() == Wt::AltModifier) {
00194     km = Qt::AltModifier;
00195   } else if (event.modifiers() == Wt::MetaModifier) {
00196     km = Qt::MetaModifier;
00197   }
00198   QPoint pt =  QPoint(event.widget().x,event.widget().y);
00199   QMouseEvent *e = new QMouseEvent(QEvent::None, pt, bt, bt, km);
00200   return e;
00201 }
00202 
00203 
00204 QWheelEvent *  G4OpenGLImmediateWtViewer::ConvertWtWheelEventToQt(Wt::WMouseEvent event) {
00205   Qt::MouseButton bt;
00206   if (event.button() == (Wt::WMouseEvent::NoButton)) {
00207     bt = Qt::NoButton;
00208   } else if (event.button() == (Wt::WMouseEvent::LeftButton)) {
00209     bt = Qt::LeftButton;
00210   } else if (event.button() == (Wt::WMouseEvent::RightButton)) {
00211     bt = Qt::RightButton;
00212   } else if (event.button() == (Wt::WMouseEvent::MiddleButton)) {
00213     bt = Qt::MidButton;
00214   }
00215 
00216   Qt::KeyboardModifiers km;
00217   if (event.modifiers() == Wt::NoModifier) {
00218     km = Qt::NoModifier;
00219   } else if (event.modifiers() == Wt::ControlModifier) {
00220     km = Qt::ControlModifier;
00221   } else if (event.modifiers() == Wt::ShiftModifier) {
00222     km = Qt::ShiftModifier;
00223   } else if (event.modifiers() == Wt::AltModifier) {
00224     km = Qt::AltModifier;
00225   } else if (event.modifiers() == Wt::MetaModifier) {
00226     km = Qt::MetaModifier;
00227   }
00228   QPoint pt =  QPoint(event.widget().x,event.widget().y);
00229   QWheelEvent *e = new QWheelEvent( pt, event.wheelDelta (), bt, km);
00230   return e;
00231 }
00232 
00233 
00234 QKeyEvent *  G4OpenGLImmediateWtViewer::ConvertWtKeyEventToQt(Wt::WKeyEvent event) {
00235 
00236   Qt::KeyboardModifiers km;
00237   if (event.modifiers() == Wt::NoModifier) {
00238     km = Qt::NoModifier;
00239   } else if (event.modifiers() == Wt::ControlModifier) {
00240     km = Qt::ControlModifier;
00241   } else if (event.modifiers() == Wt::ShiftModifier) {
00242     km = Qt::ShiftModifier;
00243   } else if (event.modifiers() == Wt::AltModifier) {
00244     km = Qt::AltModifier;
00245   } else if (event.modifiers() == Wt::MetaModifier) {
00246     km = Qt::MetaModifier;
00247   }
00248   QKeyEvent *e = new QKeyEvent( QEvent::None, event.charCode(), km );
00249   return e;
00250 }
00251 #endif

Generated on Mon May 27 17:49:09 2013 for Geant4 by  doxygen 1.4.7