33 #ifdef G4VIS_BUILD_OPENGLQT_DRIVER
39 #ifdef G4MULTITHREADED
43 #include <qapplication.h>
44 #include <qtabwidget.h>
46 G4OpenGLStoredQtViewer::G4OpenGLStoredQtViewer
47 (G4OpenGLStoredSceneHandler& sceneHandler,
49 G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
50 G4OpenGLViewer (sceneHandler),
51 G4OpenGLQtViewer (sceneHandler),
52 G4OpenGLStoredViewer (sceneHandler),
57 QGLWidget::setAttribute (Qt::WA_NoSystemBackground);
59 setFocusPolicy(Qt::StrongFocus);
60 fHasToRepaint =
false;
61 fPaintEventLock =
false;
62 fUpdateGLLock =
false;
64 resize(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY());
66 if (fViewId < 0)
return;
69 G4OpenGLStoredQtViewer::~G4OpenGLStoredQtViewer() {
76 void G4OpenGLStoredQtViewer::Initialise() {
79 fQGLWidgetInitialiseCompleted =
false;
80 CreateMainWindow (
this,QString(GetName()));
82 glDrawBuffer (GL_BACK);
85 if (QGLWidget::parentWidget()) {
86 QTabWidget *parentTab =
dynamic_cast<QTabWidget*
> (QGLWidget::parentWidget()->parent()) ;
88 parentTab->setCurrentIndex(parentTab->count()-1);
92 fQGLWidgetInitialiseCompleted =
true;
95 void G4OpenGLStoredQtViewer::initializeGL () {
99 if (fSceneHandler.GetScene() == 0) {
100 fHasToRepaint =
false;
119 (lastVP.
IsCulling () != fVP.IsCulling ()) ||
123 (lastVP.
IsSection () != fVP.IsSection ()) ||
127 (lastVP.
IsCutaway () != fVP.IsCutaway ()) ||
130 (lastVP.
IsExplode () != fVP.IsExplode ()) ||
133 fVP.GetDefaultVisAttributes()->
GetColour()) ||
135 fVP.GetDefaultTextVisAttributes()->
GetColour()) ||
137 (lastVP.
IsPicking () != fVP.IsPicking ())
175 G4bool G4OpenGLStoredQtViewer::POSelected(
size_t POListIndex)
177 return isTouchableVisible(POListIndex);
180 G4bool G4OpenGLStoredQtViewer::TOSelected(
size_t)
185 void G4OpenGLStoredQtViewer::DrawView () {
189 void G4OpenGLStoredQtViewer::ComputeView () {
200 if (!fNeedKernelVisit) {
201 KernelVisitDecision ();
203 G4bool kernelVisitWasNeeded = fNeedKernelVisit;
206 if (fNeedKernelVisit) {
207 displaySceneTreeComponent();
216 HaloingSecondPass ();
225 if (!kernelVisitWasNeeded) {
231 if (fVP.IsCutaway() &&
247 fHasToRepaint =
true;
254 void G4OpenGLStoredQtViewer::resizeGL(
259 if ((aWidth > 0) && (aHeight > 0)) {
260 ResizeWindow(aWidth,aHeight);
261 fHasToRepaint = sizeHasChanged();
271 void G4OpenGLStoredQtViewer::paintGL()
273 updateToolbarAndMouseContextMenu();
275 if (fPaintEventLock) {
278 fPaintEventLock =
true;
279 if ((getWinWidth() == 0) && (getWinHeight() == 0)) {
283 if (!fQGLWidgetInitialiseCompleted) {
284 fPaintEventLock =
false;
290 if ( !fHasToRepaint) {
295 if (!isMaximized() && !isFullScreen()) {
296 sw = normalGeometry().width();
297 sh = normalGeometry().height();
299 sw = frameGeometry().width();
300 sh = frameGeometry().height();
302 if ((getWinWidth() == (
unsigned int)sw) &&(getWinHeight() == (
unsigned int)sh)) {
307 glDrawBuffer (GL_BACK);
314 fHasToRepaint =
false;
316 fPaintEventLock =
false;
319 void G4OpenGLStoredQtViewer::paintEvent(QPaintEvent *) {
320 if (! fQGLWidgetInitialiseCompleted) {
323 if ( fHasToRepaint) {
332 void G4OpenGLStoredQtViewer::mousePressEvent(QMouseEvent *event)
334 G4MousePressEvent(event);
337 void G4OpenGLStoredQtViewer::keyPressEvent (QKeyEvent * event)
339 G4keyPressEvent(event);
342 void G4OpenGLStoredQtViewer::keyReleaseEvent (QKeyEvent * event)
344 G4keyReleaseEvent(event);
347 void G4OpenGLStoredQtViewer::wheelEvent (QWheelEvent * event)
352 void G4OpenGLStoredQtViewer::showEvent (QShowEvent *)
354 if (fQGLWidgetInitialiseCompleted) {
355 fHasToRepaint =
true;
363 void G4OpenGLStoredQtViewer::mouseDoubleClickEvent(QMouseEvent *)
365 G4MouseDoubleClickEvent();
368 void G4OpenGLStoredQtViewer::mouseReleaseEvent(QMouseEvent *event)
370 G4MouseReleaseEvent(event);
373 void G4OpenGLStoredQtViewer::mouseMoveEvent(QMouseEvent *event)
375 G4MouseMoveEvent(event);
379 void G4OpenGLStoredQtViewer::contextMenuEvent(QContextMenuEvent *e)
381 G4manageContextMenuEvent(e);
384 void G4OpenGLStoredQtViewer::updateQWidget() {
388 fUpdateGLLock =
true;
395 updateSceneTreeComponentTreeWidgetInfos();
396 fHasToRepaint=
false;
397 fUpdateGLLock =
false;
400 void G4OpenGLStoredQtViewer::ShowView (
417 void G4OpenGLStoredQtViewer::DisplayTimePOColourModification (
420 c = getColorForPoIndex(poIndex);
const G4Colour & GetBackgroundColour() const
G4double GetVisibleDensity() const
G4bool IsCullingInvisible() const
G4double GetExplodeFactor() const
static G4bool GetColour(const G4String &key, G4Colour &result)
const G4Colour & GetColour() const
G4bool IsDensityCulling() const
G4bool IsAuxEdgeVisible() const
G4bool IsCullingCovered() const
const G4VisAttributes * GetDefaultTextVisAttributes() const
G4int GetNoOfSides() const
DrawingStyle GetDrawingStyle() const
const G4VisAttributes * GetDefaultVisAttributes() const