Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/Geant4/toolx/Qt/pixwin is written in an unsupported language. File is not indexed.

0001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
0002 // See the file tools.license for terms.
0003 
0004 #ifndef toolx_Qt_pixwin
0005 #define toolx_Qt_pixwin
0006 
0007 #include <QtCore/qglobal.h> //For QT_VERSION.
0008 
0009 #if QT_VERSION < 0x050000
0010 #include <QtGui/qwidget.h>
0011 #else
0012 #include <QtWidgets/qwidget.h>
0013 #endif
0014 
0015 #include <QtGui/qevent.h>
0016 #include <QtGui/qpainter.h>
0017 
0018 #include <tools/sg/zb_viewer>
0019 #include <tools/sg/device_interactor>
0020 
0021 namespace toolx {
0022 namespace Qt {
0023 
0024 class pixwin : public QWidget
0025 {
0026   typedef QWidget parent;
0027   TOOLS_SCLASS(toolx::Qt::pixwin)
0028 public:
0029   virtual void resizeEvent(QResizeEvent* a_event) {
0030     parent::resizeEvent(a_event);
0031     m_viewer.set_size(a_event->size().width(),a_event->size().height());
0032   }
0033   virtual void paintEvent(QPaintEvent* a_event) {
0034     parent::paintEvent(a_event);
0035     if(!m_viewer.render(tools::sg::zb_viewer::get_rgbas,false)) return;  //rgbas because Qt wants an image 32 bits aligned.
0036     QImage image(m_viewer.out_buffer().data(),m_viewer.width(),m_viewer.height(),QImage::Format_RGBA8888);
0037     QPixmap pixmap = QPixmap::fromImage(image);
0038     QPainter painter(this);
0039     painter.drawPixmap(0,0,pixmap);
0040     m_viewer.out_buffer_clear();
0041   }
0042 
0043   virtual void keyPressEvent(QKeyEvent* a_event) {
0044     if(!m_interactor) return;
0045     tools::sg::key_down_event _event(convert_key(a_event->key()));
0046     m_interactor->key_press(_event);
0047   }
0048   virtual void keyReleaseEvent(QKeyEvent* a_event) {
0049     if(!m_interactor) return;
0050     tools::sg::key_up_event _event(convert_key(a_event->key()));
0051     m_interactor->key_release(_event);
0052   }
0053   virtual void mousePressEvent(QMouseEvent* a_event) {
0054     if(!m_interactor) return;
0055 
0056     bool shift_modifier = a_event->modifiers() & ::Qt::ShiftModifier;
0057     bool control_modifier = a_event->modifiers() & ::Qt::ControlModifier;
0058 
0059 #if QT_VERSION < 0x060000
0060     tools::sg::mouse_down_event _event(a_event->x(),a_event->y(),shift_modifier,control_modifier);
0061 #else
0062     tools::sg::mouse_down_event _event(a_event->position().x(),a_event->position().y(),shift_modifier,control_modifier);
0063 #endif
0064     m_interactor->mouse_press(_event);
0065   }
0066   virtual void mouseReleaseEvent(QMouseEvent* a_event) {
0067     if(!m_interactor) return;
0068 
0069     bool shift_modifier = a_event->modifiers() & ::Qt::ShiftModifier;
0070     bool control_modifier = a_event->modifiers() & ::Qt::ControlModifier;
0071 
0072 #if QT_VERSION < 0x060000
0073     tools::sg::mouse_up_event _event(a_event->x(),a_event->y(),shift_modifier,control_modifier);
0074 #else
0075     tools::sg::mouse_up_event _event(a_event->position().x(),a_event->position().y(),shift_modifier,control_modifier);
0076 #endif
0077     m_interactor->mouse_release(_event);
0078   }
0079   virtual void mouseMoveEvent(QMouseEvent* a_event) {
0080     if(!m_interactor) return;
0081 
0082     bool shift_modifier = a_event->modifiers() & ::Qt::ShiftModifier;
0083     bool control_modifier = a_event->modifiers() & ::Qt::ControlModifier;
0084 
0085 #if QT_VERSION < 0x060000
0086     tools::sg::mouse_move_event _event(a_event->x(),a_event->y(),shift_modifier,control_modifier,0,0,false);
0087 #else
0088     tools::sg::mouse_move_event _event(a_event->position().x(),a_event->position().y(),shift_modifier,control_modifier,0,0,false);
0089 #endif
0090     m_interactor->mouse_move(_event);
0091   }
0092   virtual void wheelEvent(QWheelEvent* a_event) {
0093     if(!m_interactor) return;
0094 
0095     bool shift_modifier = a_event->modifiers() & ::Qt::ShiftModifier;
0096     bool control_modifier = a_event->modifiers() & ::Qt::ControlModifier;
0097 
0098 #if QT_VERSION < 0x050f00  //5.15.00
0099     tools::sg::wheel_rotate_event _event(a_event->angleDelta().y(),a_event->x(),a_event->y(),shift_modifier,control_modifier);
0100 #else
0101     tools::sg::wheel_rotate_event _event(a_event->angleDelta().y(),a_event->position().x(),a_event->position().y(),shift_modifier,control_modifier);
0102 #endif
0103     m_interactor->wheel_rotate(_event);
0104   }
0105 
0106 public:
0107   pixwin(QWidget* a_parent,tools::sg::zb_viewer& a_viewer):parent(a_parent),m_viewer(a_viewer),m_interactor(0){
0108   }
0109   virtual ~pixwin(){
0110   }
0111 public:
0112   void set_device_interactor(tools::sg::device_interactor* a_interactor) {m_interactor = a_interactor;} //we do not have ownership.
0113 protected:
0114   tools::key_code convert_key(/*Qt::Key*/int a_key) {return a_key;}
0115 protected:
0116   tools::sg::zb_viewer& m_viewer;
0117   tools::sg::device_interactor* m_interactor;
0118 };
0119 
0120 }}
0121 
0122 
0123 #endif