Import Geant4 9.4.0 source tree
This commit is contained in:
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateQtViewer.cc,v 1.17 2009/11/03 11:02:32 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4OpenGLImmediateQtViewer.cc,v 1.22 2010/06/23 13:29:23 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLImmediateQtViewer : a class derived from G4OpenGLQtViewer and
|
||||
@@ -52,7 +52,8 @@ G4OpenGLImmediateQtViewer::G4OpenGLImmediateQtViewer
|
||||
#else
|
||||
setFocusPolicy(Qt::StrongFocus); // enable keybord events
|
||||
#endif
|
||||
fHasToRepaint =false;
|
||||
fHasToRepaint = false;
|
||||
fIsRepainting = false;
|
||||
|
||||
if (fViewId < 0) return; // In case error in base class instantiation.
|
||||
}
|
||||
@@ -96,19 +97,8 @@ void G4OpenGLImmediateQtViewer::initializeGL () {
|
||||
}
|
||||
|
||||
|
||||
/** To ensure compatibility with DrawView method
|
||||
*/
|
||||
void G4OpenGLImmediateQtViewer::DrawView() {
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
|
||||
#endif
|
||||
// That's no the same logic as Stored Viewer, I don't know why...
|
||||
// see G4OpenGLStoredQtViewer::DrawView for more informations
|
||||
|
||||
updateQWidget();
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -130,7 +120,7 @@ void G4OpenGLImmediateQtViewer::ComputeView () {
|
||||
HaloingFirstPass ();
|
||||
NeedKernelVisit ();
|
||||
ProcessView ();
|
||||
glFlush ();
|
||||
FinishView();
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::ComputeView First ProcessView ok\n");
|
||||
#endif
|
||||
@@ -151,19 +141,6 @@ void G4OpenGLImmediateQtViewer::ComputeView () {
|
||||
fHasToRepaint = true;
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::FinishView()
|
||||
{
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView() BEGIN\n");
|
||||
#endif
|
||||
glFlush ();
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView() END\n");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
- Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
|
||||
*/
|
||||
@@ -171,24 +148,32 @@ void G4OpenGLImmediateQtViewer::resizeGL(
|
||||
int aWidth
|
||||
,int aHeight)
|
||||
{
|
||||
ResizeWindow(aWidth,aHeight);
|
||||
fHasToRepaint = sizeHasChanged();
|
||||
if ((aWidth > 0) && (aHeight > 0)) {
|
||||
ResizeWindow(aWidth,aHeight);
|
||||
fHasToRepaint = sizeHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::paintGL()
|
||||
{
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("\n\nG4OpenGLImmediateQtViewer::paintGL ??\n");
|
||||
#endif
|
||||
if (fIsRepainting) {
|
||||
// return ;
|
||||
}
|
||||
if (!fReadyToPaint) {
|
||||
fReadyToPaint= true;
|
||||
return;
|
||||
}
|
||||
if ((getWinWidth() == 0) && (getWinHeight() == 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DO NOT RESIZE IF SIZE HAS NOT CHANGE
|
||||
if ( !fHasToRepaint) {
|
||||
#if QT_VERSION < 0x040000
|
||||
if (((getWinWidth() == (unsigned int)width())) &&(getWinHeight() == (unsigned int) height())) {
|
||||
return;
|
||||
}
|
||||
#else
|
||||
// L. Garnier : Trap to get the size with mac OSX 10.6 and Qt 4.6(devel)
|
||||
// Tested on Qt4.5 on mac, 4.4 on windows, 4.5 on unbuntu
|
||||
@@ -202,9 +187,14 @@ void G4OpenGLImmediateQtViewer::paintGL()
|
||||
sh = frameGeometry().height();
|
||||
}
|
||||
if ((getWinWidth() == (unsigned int)sw) &&(getWinHeight() == (unsigned int)sh)) {
|
||||
#endif
|
||||
return;
|
||||
|
||||
} else if ((sw == 0) && (sh == 0)) { // NOT A TOP LEVEL WIDGET
|
||||
if (((getWinWidth() == (unsigned int)width())) &&(getWinHeight() == (unsigned int) height())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ready %d\n",fReadyToPaint);
|
||||
@@ -220,6 +210,7 @@ void G4OpenGLImmediateQtViewer::paintGL()
|
||||
#ifdef G4DEBUG_VIS_OGL
|
||||
printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready %d\n\n\n",fReadyToPaint);
|
||||
#endif
|
||||
fIsRepainting = false;
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::mousePressEvent(QMouseEvent *event)
|
||||
@@ -237,6 +228,12 @@ void G4OpenGLImmediateQtViewer::wheelEvent (QWheelEvent * event)
|
||||
G4wheelEvent(event);
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::showEvent (QShowEvent *)
|
||||
{
|
||||
fHasToRepaint = true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This function was build in order to make a zoom on double clic event.
|
||||
* It was think to build a rubberband on the zoom area, but never work fine
|
||||
@@ -262,9 +259,17 @@ void G4OpenGLImmediateQtViewer::contextMenuEvent(QContextMenuEvent *e)
|
||||
G4manageContextMenuEvent(e);
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::paintEvent(QPaintEvent *) {
|
||||
if ( fHasToRepaint) {
|
||||
updateGL();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::updateQWidget() {
|
||||
fHasToRepaint= true;
|
||||
updateGL();
|
||||
repaint();
|
||||
fHasToRepaint= false;
|
||||
}
|
||||
|
||||
@@ -274,6 +279,7 @@ void G4OpenGLImmediateQtViewer::ShowView (
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
|
||||
{
|
||||
fHasToRepaint = true;
|
||||
#if QT_VERSION < 0x040000
|
||||
setActiveWindow();
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user