Ignore:
Timestamp:
Aug 14, 2007, 4:57:01 PM (17 years ago)
Author:
garnier
Message:

r569@mac-90108: laurentgarnier | 2007-08-14 15:07:23 +0200
commenatires et suppression de double rotation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc

    r555 r564  
    2525//
    2626//
    27 // $Id: G4OpenGLStoredQtViewer.cc,v 1.18 2007/06/25 12:07:59 $
     27// $Id: G4OpenGLStoredQtViewer.cc,v 1.16 2007/06/25 16:38:13 $
    2828// GEANT4 tag $Name: geant4-08-02-patch-01 $
    2929//
    30 // 
     30//
    3131// Class G4OpenGLStoredQtViewer : a class derived from G4OpenGLQtViewer and
    32 //                             G4OpenGLStoredViewer.
     32//                                G4OpenGLStoredViewer.
    3333
    3434#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
    3535
    3636#include "G4OpenGLStoredQtViewer.hh"
     37#include "G4VisManager.hh"
    3738
    3839#include "G4ios.hh"
     
    4142(G4OpenGLStoredSceneHandler& sceneHandler,
    4243 const G4String&  name):
    43 G4OpenGLViewer (sceneHandler),
    44 G4OpenGLQtViewer (sceneHandler),
    45 G4OpenGLStoredViewer (sceneHandler),
    46 G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name) {
    47 
     44 G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
     45 G4OpenGLViewer (sceneHandler),
     46 G4OpenGLQtViewer (sceneHandler),
     47 G4OpenGLStoredViewer (sceneHandler),
     48 QGLWidget()                      // FIXME : gerer le pb du parent !
     49 {
     50   nbPaint =0;
     51   hasToRepaint =false;
    4852  if (fViewId < 0) return;  // In case error in base class instantiation.
    4953}
    5054
    51 void G4OpenGLStoredQtViewer::Initialise () {
    52 
    53   //Check that G4OpenGLQtViewer got a double buffered colour visual
    54 
    55   CreateGLQtContext ();
    56   CreateMainWindow ();
    57   CreateFontLists ();
    58 
    59 // clear the buffers and window.
    60   ClearView ();
    61   FinishView ();
    62 
    63   glDepthFunc (GL_LEQUAL);
    64   glDepthMask (GL_TRUE);
    65 }
     55G4OpenGLStoredQtViewer::~G4OpenGLStoredQtViewer() {
     56   printf("GLWidget::~GLWidget \n");
     57     makeCurrent();
     58   printf("GLWidget::~GLWidget END\n");
     59}
     60
     61void G4OpenGLStoredQtViewer::Initialise() {
     62   printf("GLWidget::Initialise \n");
     63   readyToPaint = false;
     64   CreateGLQtContext ();
     65   printf("G4OpenGLStoredQtViewer::Initialise () 2\n");
     66
     67  CreateMainWindow (this);
     68  printf("G4OpenGLStoredQtViewer::Initialise () 3\n");
     69
     70  CreateFontLists ();  // FIXME Does nothing!
     71 
     72  printf("readyToPaint = true \n");
     73  readyToPaint = true;
     74 
     75  // First Draw
     76  SetView();
     77  printf("    ClearView\n");
     78  ClearView (); //ok, put the background correct
     79  ShowView();
     80  FinishView();
     81}
     82
     83void G4OpenGLStoredQtViewer::initializeGL () {
     84
     85   InitializeGLView ();
     86
     87   printf("G4OpenGLStoredQtViewer::InitialiseGL () 1\n");
     88
     89   // clear the buffers and window.
     90   ClearView ();
     91   //   printf("G4OpenGLStoredQtViewer::InitialiseGL () 2\n");
     92   FinishView ();
     93   
     94   glDepthFunc (GL_LEQUAL);
     95   glDepthMask (GL_TRUE);
     96
     97   hasToRepaint =true;
     98
     99   printf("G4OpenGLStoredQtViewer::InitialiseGL  -------------------------------------------------------------------------------------\n");
     100}
     101
    66102
    67103void G4OpenGLStoredQtViewer::DrawView () {
    68104
    69   //Make sure current viewer is attached and clean...
    70   //Qt version needed
    71   //  glXMakeCurrent (dpy, win, cx);
    72   glViewport (0, 0, WinSize_x, WinSize_y);
    73 
    74   G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
    75 
    76   //See if things have changed from last time and remake if necessary...
    77   // The fNeedKernelVisit flag might have been set by the user in
    78   // /vis/viewer/rebuild, but if not, make decision and set flag only
    79   // if necessary...
    80   if (!fNeedKernelVisit) KernelVisitDecision ();
    81   G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
    82   ProcessView ();
    83 
    84   if(style!=G4ViewParameters::hlr &&
    85      haloing_enabled) {
    86 
    87     HaloingFirstPass ();
    88     DrawDisplayLists ();
    89     glFlush ();
    90 
    91     HaloingSecondPass ();
    92 
    93     DrawDisplayLists ();
    94     FinishView ();
    95 
    96   } else {
    97 
    98     // If kernel visit was needed, drawing and FinishView will already
    99     // have been done, so...
    100     if (!kernelVisitWasNeeded) {
    101       DrawDisplayLists ();
    102       FinishView ();
    103     } else {
    104     // However, union cutaways are implemented in DrawDisplayLists, so make
    105     // an extra pass...
    106       if (fVP.IsCutaway() &&
    107           fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
    108         ClearView();
    109         DrawDisplayLists ();
    110         FinishView ();
    111       }
    112     }
    113   }
    114 }
     105  printf("G4OpenGLStoredQtViewer::DrawView %d %d   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
     106
     107   G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
     108
     109   //Make sure current viewer is attached and clean...
     110   //Qt version needed
     111   glViewport (0, 0, WinSize_x, WinSize_y);
     112
     113   //See if things have changed from last time and remake if necessary...
     114   // The fNeedKernelVisit flag might have been set by the user in
     115   // /vis/viewer/rebuild, but if not, make decision and set flag only
     116   // if necessary...
     117   if (!fNeedKernelVisit) KernelVisitDecision ();
     118   G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
     119   ProcessView ();
     120   
     121
     122   if(style!=G4ViewParameters::hlr &&
     123      haloing_enabled) {
     124     printf("G4OpenGLStoredQtViewer::DrawView DANS LE IF\n");
     125
     126     HaloingFirstPass ();
     127     DrawDisplayLists ();
     128     glFlush ();
     129
     130     HaloingSecondPass ();
     131
     132     DrawDisplayLists ();
     133
     134   } else {
     135     
     136     // If kernel visit was needed, drawing and FinishView will already
     137     // have been done, so...
     138     if (!kernelVisitWasNeeded) {
     139       DrawDisplayLists ();
     140     } else {
     141       // However, union cutaways are implemented in DrawDisplayLists, so make
     142       // an extra pass...
     143       if (fVP.IsCutaway() &&
     144           fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
     145         ClearView();
     146         DrawDisplayLists ();
     147       }
     148     }
     149   }
     150
     151   FinishView ();
     152  printf("G4OpenGLStoredQtViewer::DrawView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y);
     153   hasToRepaint =true;
     154}
     155
    115156
    116157//////////////////////////////////////////////////////////////////////////////
     
    120161//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
    121162{
    122   printf("................G4OpenGLStoredQtViewer::FinishView");
    123   if(!fWindow) return;
     163  printf("G4OpenGLStoredQtViewer::FinishView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
    124164
    125165  glFlush ();
    126   fWindow->swapBuffers ();
    127   printf("................G4OpenGLStoredQtViewer::FinishView     END");
     166  swapBuffers ();
     167  printf("G4OpenGLStoredQtViewer::FinishView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
     168
     169}
     170
     171
     172/**
     173 - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
     174 */
     175void G4OpenGLStoredQtViewer::resizeGL(
     176 int aWidth
     177,int aHeight)
     178
     179  glViewport(0, 0, aWidth, aHeight);
     180  glMatrixMode(GL_PROJECTION);
     181  glMatrixMode(GL_MODELVIEW);
     182
     183   if (((WinSize_x != (G4int)aWidth)) || (WinSize_y != (G4int) aHeight)) {
     184     hasToRepaint =true;
     185   }
     186   WinSize_x = (G4int) aWidth;
     187   WinSize_y = (G4int) aHeight;
     188
     189  printf("G4OpenGLStoredQtViewer::resizeGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d %d=%d %d=%d\n",hasToRepaint,width(),aWidth,height(),aHeight);
     190}
     191
     192
     193
     194void G4OpenGLStoredQtViewer::paintGL()
     195 {
     196   if (!readyToPaint) {
     197     printf("\n\nG4OpenGLStoredQtViewer::paintGL ============  Not ready %d\n",readyToPaint);
     198     readyToPaint= true;
     199     return;
     200   }
     201   // DO NOT RESIZE IF SIZE HAS NOT CHANGE :
     202   //    WHEN CLICK ON THE FRAME FOR EXAMPLE
     203   //    EXECEPT WHEN MOUSE MOVE EVENT
     204   if ( !hasToRepaint) {
     205     if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) {
     206       printf("\n\nG4OpenGLStoredQtViewer::paintGL ============  Dont repaint\n");
     207       return;
     208     }
     209   }
     210   nbPaint++;
     211   printf("\n\nG4OpenGLStoredQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %d ready %d\n",nbPaint,readyToPaint);
     212   WinSize_x = (G4int) width();
     213   WinSize_y = (G4int) height();
     214   
     215   glViewport (0, 0, width(), height());
     216   //   glLoadIdentity();
     217   
     218
     219   SetView();
     220
     221//   //  printf("before ClearView\n");
     222   printf("    ClearView\n");
     223   
     224   ClearView (); //ok, put the background correct
     225   DrawView();
     226
     227   hasToRepaint =false;
     228
     229   printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n\n\n",nbPaint,readyToPaint);
     230 }
     231
     232void G4OpenGLStoredQtViewer::mousePressEvent(QMouseEvent *event)
     233{
     234  printf("G4OpenGLStoredQtViewer::mousePressEvent\n");
     235  G4MousePressEvent(event->pos());
     236}
     237
     238void G4OpenGLStoredQtViewer::mouseMoveEvent(QMouseEvent *event)
     239{
     240  G4MouseMoveEvent(event->x(),event->y(),event->buttons());
     241  //  DrawView();
     242}
     243
     244
     245void G4OpenGLStoredQtViewer::contextMenuEvent(QContextMenuEvent *e)
     246{
     247  manageContextMenuEvent(e);
     248}
     249
     250void G4OpenGLStoredQtViewer::updateQWidget() {
     251  hasToRepaint= true;
     252  updateGL();
     253  hasToRepaint= false;
    128254}
    129255
Note: See TracChangeset for help on using the changeset viewer.