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),
55 fQGLWidgetInitialiseCompleted =
false;
58 QGLWidget::setAttribute (Qt::WA_NoSystemBackground);
60 setFocusPolicy(Qt::StrongFocus);
61 fHasToRepaint =
false;
62 fPaintEventLock =
false;
63 fUpdateGLLock =
false;
65 if (fViewId < 0)
return;
68 G4OpenGLStoredQtViewer::~G4OpenGLStoredQtViewer() {
75 void G4OpenGLStoredQtViewer::Initialise() {
78 fQGLWidgetInitialiseCompleted =
false;
79 CreateMainWindow (
this,QString(GetName()));
81 glDrawBuffer (GL_BACK);
84 if (QGLWidget::parentWidget()) {
85 QTabWidget *parentTab =
dynamic_cast<QTabWidget*
> (QGLWidget::parentWidget()->parent()) ;
87 parentTab->setCurrentIndex(parentTab->count()-1);
91 fQGLWidgetInitialiseCompleted =
true;
94 void G4OpenGLStoredQtViewer::initializeGL () {
98 if (fSceneHandler.GetScene() == 0) {
118 (lastVP.
IsCulling () != fVP.IsCulling ()) ||
122 (lastVP.
IsSection () != fVP.IsSection ()) ||
126 (lastVP.
IsCutaway () != fVP.IsCutaway ()) ||
129 (lastVP.
IsExplode () != fVP.IsExplode ()) ||
132 fVP.GetDefaultVisAttributes()->
GetColour()) ||
134 fVP.GetDefaultTextVisAttributes()->
GetColour()) ||
136 (lastVP.
IsPicking () != fVP.IsPicking ()))
141 if (fMouseOnSceneTree) {
143 fMouseOnSceneTree =
false;
182 G4bool G4OpenGLStoredQtViewer::POSelected(
size_t POListIndex)
184 return isTouchableVisible(POListIndex);
187 G4bool G4OpenGLStoredQtViewer::TOSelected(
size_t)
192 void G4OpenGLStoredQtViewer::DrawView () {
196 void G4OpenGLStoredQtViewer::ComputeView () {
207 if (!fNeedKernelVisit) {
208 KernelVisitDecision ();
210 G4bool kernelVisitWasNeeded = fNeedKernelVisit;
213 if (kernelVisitWasNeeded) {
214 displaySceneTreeComponent();
224 HaloingSecondPass ();
233 if (!kernelVisitWasNeeded) {
239 if (fVP.IsCutaway() &&
255 fHasToRepaint =
true;
262 void G4OpenGLStoredQtViewer::resizeGL(
267 if ((aWidth > 0) && (aHeight > 0)) {
268 ResizeWindow(aWidth,aHeight);
269 fHasToRepaint = sizeHasChanged();
279 void G4OpenGLStoredQtViewer::paintGL()
281 updateToolbarAndMouseContextMenu();
283 if (fPaintEventLock) {
286 fPaintEventLock =
true;
287 if ((getWinWidth() == 0) && (getWinHeight() == 0)) {
291 if (!fQGLWidgetInitialiseCompleted) {
292 fPaintEventLock =
false;
298 if ( !fHasToRepaint) {
303 if (!isMaximized() && !isFullScreen()) {
304 sw = normalGeometry().width();
305 sh = normalGeometry().height();
307 sw = frameGeometry().width();
308 sh = frameGeometry().height();
310 if ((getWinWidth() == (
unsigned int)sw) &&(getWinHeight() == (
unsigned int)sh)) {
315 glDrawBuffer (GL_BACK);
322 fHasToRepaint =
false;
324 fPaintEventLock =
false;
327 void G4OpenGLStoredQtViewer::paintEvent(QPaintEvent *) {
328 if (! fQGLWidgetInitialiseCompleted) {
332 fHasToRepaint = isFramebufferReady();
333 if ( fHasToRepaint) {
342 void G4OpenGLStoredQtViewer::mousePressEvent(QMouseEvent *event)
344 G4MousePressEvent(event);
347 void G4OpenGLStoredQtViewer::keyPressEvent (QKeyEvent * event)
349 G4keyPressEvent(event);
352 void G4OpenGLStoredQtViewer::keyReleaseEvent (QKeyEvent * event)
354 G4keyReleaseEvent(event);
357 void G4OpenGLStoredQtViewer::wheelEvent (QWheelEvent * event)
362 void G4OpenGLStoredQtViewer::showEvent (QShowEvent *)
364 if (fQGLWidgetInitialiseCompleted) {
365 fHasToRepaint =
true;
373 void G4OpenGLStoredQtViewer::mouseDoubleClickEvent(QMouseEvent *)
375 G4MouseDoubleClickEvent();
378 void G4OpenGLStoredQtViewer::mouseReleaseEvent(QMouseEvent *event)
380 G4MouseReleaseEvent(event);
383 void G4OpenGLStoredQtViewer::mouseMoveEvent(QMouseEvent *event)
385 G4MouseMoveEvent(event);
389 void G4OpenGLStoredQtViewer::contextMenuEvent(QContextMenuEvent *e)
391 G4manageContextMenuEvent(e);
394 void G4OpenGLStoredQtViewer::updateQWidget() {
399 if (! isCurrentWidget()){
403 fUpdateGLLock =
true;
410 updateViewerPropertiesTableWidget();
411 updateSceneTreeWidget();
412 fUpdateGLLock =
false;
415 void G4OpenGLStoredQtViewer::ShowView (
434 void G4OpenGLStoredQtViewer::DisplayTimePOColourModification (
437 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
const std::vector< G4ModelingParameters::VisAttributesModifier > & GetVisAttributesModifiers() const
G4bool IsAuxEdgeVisible() const
G4bool IsCullingCovered() const
const G4VisAttributes * GetDefaultTextVisAttributes() const
G4int GetNoOfSides() const
DrawingStyle GetDrawingStyle() const
const G4VisAttributes * GetDefaultVisAttributes() const