Ignore:
Timestamp:
Mar 23, 2009, 6:25:48 PM (15 years ago)
Author:
garnier
Message:

Works for OGLSXm et non vector

Location:
trunk/source/visualization/OpenGL/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc

    r915 r948  
    4646void G4OpenGLImmediateViewer::ProcessView ()
    4747{
     48  printf("G4OpenGLImmediateViewer::ProcessView\n");
     49
    4850  const G4Planes& cutaways = fVP.GetCutawayPlanes();
    4951  G4bool cutawayUnion = fVP.IsCutaway() &&
  • trunk/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc

    r945 r948  
    9191  G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
    9292
     93#ifdef G4DEBUG_VIS_OGL
     94  printf("G4OpenGLImmediateXmViewer::DrawView : \n");
     95#endif
     96
    9397  //Make sure current viewer is attached and clean...
    9498  glXMakeCurrent (dpy, fGLXWin, cx);
     
    99103    HaloingFirstPass ();
    100104    NeedKernelVisit ();
     105#ifdef G4DEBUG_VIS_OGL
     106  printf("G4OpenGLImmediateXmViewer::DrawView : change param\n");
     107#endif
    101108    ProcessView ();
    102109    glFlush ();
     
    106113  }
    107114
     115#ifdef G4DEBUG_VIS_OGL
     116  printf("G4OpenGLImmediateXmViewer::DrawView : need Kernel/Process/Finish\n");
     117#endif
    108118  NeedKernelVisit ();  // Always need to visit G4 kernel.
    109119  ProcessView ();
     
    113123
    114124void G4OpenGLImmediateXmViewer::FinishView () {
     125#ifdef G4DEBUG_VIS_OGL
     126  printf("G4OpenGLImmediateXmViewer::FinishView : \n");
     127#endif
    115128  glXWaitGL (); //Wait for effects of all previous OpenGL commands to
    116129                //be propogated before progressing.
  • trunk/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc

    r946 r948  
    211211{
    212212
     213  printf("G4OpenGLStoredSceneHandler::AddPrimitive\n");
     214
    213215  std::vector< G4Polymarker > poly;
    214216    // 40,83 N03 lancement
     
    240242              ( storedPoly[size-aPoly].GetPosition().z() == polymarker[b].z())) {
    241243            reste --;
    242             res= true;
     244//            res= true;
    243245            nbDoublons++;
    244246            //            printf("G4OpenGLStoredSceneHandler::AddPrimitive  PT %d/%d ALREADY FOUND TOT:%d. OLD pos %d/%d in %d PolyMarkerList STILL %d Marker in list. Point is %f %f %f\n",b,polymarker.size(),  nbDoublons,  aPoly,size,a   ,reste,polymarker[b].x(),polymarker[b].y(),polymarker[b].z());
  • trunk/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc

    r946 r948  
    6161void G4OpenGLStoredXViewer::Initialise () {
    6262
     63#ifdef G4DEBUG_VIS_OGL
     64  printf("G4OpenGLStoredXViewer::Initialise\n");
     65#endif
    6366  CreateGLXContext (vi_stored);
    6467  CreateMainWindow ();
     
    7780void G4OpenGLStoredXViewer::DrawView () {
    7881
     82#ifdef G4DEBUG_VIS_OGL
    7983  printf("G4OpenGLStoredXViewer::DrawView\n");
     84#endif
    8085  //Make sure current viewer is attached and clean...
    8186  glXMakeCurrent (dpy, fGLXWin, cx);
     
    108113    // have been done, so...
    109114    if (!kernelVisitWasNeeded) {
     115#ifdef G4DEBUG_VIS_OGL
    110116      printf("G4OpenGLStoredXViewer::DrawView NO need kernel visit\n");
     117#endif
    111118      DrawDisplayLists ();
    112119      FinishView ();
    113120    } else {
     121#ifdef G4DEBUG_VIS_OGL
    114122      printf("G4OpenGLStoredXViewer::DrawView NEED kernel visit\n");
     123#endif
    115124    // However, union cutaways are implemented in DrawDisplayLists, so make
    116125    // an extra pass...
     
    126135
    127136void G4OpenGLStoredXViewer::FinishView () {
     137#ifdef G4DEBUG_VIS_OGL
     138  printf("G4OpenGLStoredXViewer::FinishView\n");
     139#endif
    128140  glXWaitGL (); //Wait for effects of all previous OpenGL commands to
    129141                //be propogated before progressing.
     142
     143  glFlush (); //FIXME
     144
    130145  GLint renderMode;
    131146  glGetIntegerv(GL_RENDER_MODE, &renderMode);
  • trunk/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc

    r946 r948  
    139139  glXWaitGL (); //Wait for effects of all previous OpenGL commands to
    140140                //be propogated before progressing.
     141
     142  glFlush (); //FIXME
     143
    141144  GLint renderMode;
    142145  glGetIntegerv(GL_RENDER_MODE, &renderMode);
  • trunk/source/visualization/OpenGL/src/G4OpenGLViewer.cc

    r946 r948  
    115115
    116116void G4OpenGLViewer::ClearView () {
     117  printf("G4OpenGLViewer::ClearView\n");
    117118  glClearColor (background.GetRed(),
    118119                background.GetGreen(),
     
    137138void G4OpenGLViewer::ResizeGLView()
    138139{
     140  printf("G4OpenGLViewer::ResizeGLView\n");
    139141  // Check size
    140142  GLint dims[2];
     
    586588  if (fGL2PSAction->enableFileWriting()) {
    587589
    588     // FIXME : How to get the point size.... ?
    589     //    fGL2PSAction->setLineWidth(1);
    590     // FIXME : How to get the line width.... ?
    591     //    fGL2PSAction->setPointSize(30);
     590    // By default, we choose the line width (trajectories...)
     591    fGL2PSAction->setLineWidth(1);
     592    // By default, we choose the point size (markers...)
     593    fGL2PSAction->setPointSize(2);
    592594
    593595    DrawView ();
  • trunk/source/visualization/OpenGL/src/G4OpenGLViewerMessenger.cc

    r946 r948  
    2525//
    2626//
    27 // $Id: G4OpenGLViewerMessenger.cc,v 1.15 2009/03/05 16:36:13 lgarnier Exp $
     27// $Id: G4OpenGLViewerMessenger.cc,v 1.16 2009/03/18 14:34:28 allison Exp $
    2828// GEANT4 tag $Name:  $
    2929
     
    177177  fpCommandFade->SetDefaultValue(0.);
    178178
    179 
    180179  fpCommandPrintMode = new G4UIcmdWithAString
    181180    ("/vis/ogl/set/printMode",this);
     
    229228(G4UIcommand* command, G4String newValue)
    230229{
    231  
    232230  G4VisManager* pVisManager = G4VisManager::GetInstance();
    233231
    234 
    235   G4VViewer* pVViewer = pVisManager->GetCurrentViewer();
    236 
    237   if (!pVViewer) {
     232  G4VViewer* pViewer = pVisManager->GetCurrentViewer();
     233
     234  if (!pViewer) {
    238235    G4cout <<
    239236      "G4OpenGLViewerMessenger::SetNewValue: No current viewer."
     
    243240  }
    244241
    245   G4OpenGLViewer* pOGLViewer = dynamic_cast<G4OpenGLViewer*>(pVViewer);
     242  G4OpenGLViewer* pOGLViewer = dynamic_cast<G4OpenGLViewer*>(pViewer);
    246243
    247244  if (!pOGLViewer) {
     
    253250  }
    254251
    255   if (command == fpCommandPrintEPS)  
     252  if (command == fpCommandPrintEPS)
    256253    {
    257254      // Keep copy of fPrintFilename to preserve Xm behaviour...
     
    264261      pOGLViewer->fPrintFilename = std::string(oss.str().c_str());
    265262      // Print eps file...
    266       printf("G4OpenGLViewerMessenger : Call printEPS \n");
    267263      pOGLViewer->printEPS();
    268264      // Restore fPrintFilename for Xm...
     
    277273    }
    278274
    279   G4OpenGLStoredViewer* pViewer =
    280     dynamic_cast<G4OpenGLStoredViewer*>(pVViewer);
    281 
    282   if (!pViewer) {
     275  if (command == fpCommandTransparency)
     276    {
     277      pOGLViewer->transparency_enabled = command->ConvertToBool(newValue);
     278      if (pOGLViewer->fVP.IsAutoRefresh())
     279        G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
     280    }
     281
     282  G4OpenGLStoredViewer* pOGLSViewer =
     283    dynamic_cast<G4OpenGLStoredViewer*>(pViewer);
     284
     285  if (!pOGLSViewer) {
    283286    G4cout <<
    284287  "G4OpenGLViewerMessenger::SetNewValue: Current viewer is not of type OGLS."
    285288  "\n  The time slice viewing feature is only implemented for OGL Stored"
    286   "\n  viewers at present.  Use \"/vis/viewer/select\" or \"/vis/open\"."
     289  "\n  viewers at present.  Use \"/vis/viewer/select\" or \"/vis/open OGLS...\"."
    287290           << G4endl;
    288291    return;
     
    296299      iss >> display >> screenX >> screenY
    297300          >> screenSize >> red >> green >> blue;
    298       pViewer->fDisplayHeadTime = command->ConvertToBool(display);
    299       pViewer->fDisplayHeadTimeX = screenX;
    300       pViewer->fDisplayHeadTimeY = screenY;
    301       pViewer->fDisplayHeadTimeSize = screenSize;
    302       pViewer->fDisplayHeadTimeRed = red;
    303       pViewer->fDisplayHeadTimeGreen = green;
    304       pViewer->fDisplayHeadTimeBlue = blue;
     301      pOGLSViewer->fDisplayHeadTime = command->ConvertToBool(display);
     302      pOGLSViewer->fDisplayHeadTimeX = screenX;
     303      pOGLSViewer->fDisplayHeadTimeY = screenY;
     304      pOGLSViewer->fDisplayHeadTimeSize = screenSize;
     305      pOGLSViewer->fDisplayHeadTimeRed = red;
     306      pOGLSViewer->fDisplayHeadTimeGreen = green;
     307      pOGLSViewer->fDisplayHeadTimeBlue = blue;
    305308    }
    306309
     
    314317          >> originT >> unitT
    315318          >> red >> green >> blue;
    316       pViewer->fDisplayLightFront = command->ConvertToBool(display);
    317       pViewer->fDisplayLightFrontX =
     319      pOGLSViewer->fDisplayLightFront = command->ConvertToBool(display);
     320      pOGLSViewer->fDisplayLightFrontX =
    318321        command->ConvertToDimensionedDouble(G4String(originX + ' ' + unitS));
    319       pViewer->fDisplayLightFrontY =
     322      pOGLSViewer->fDisplayLightFrontY =
    320323        command->ConvertToDimensionedDouble(G4String(originY + ' ' + unitS));
    321       pViewer->fDisplayLightFrontZ =
     324      pOGLSViewer->fDisplayLightFrontZ =
    322325        command->ConvertToDimensionedDouble(G4String(originZ + ' ' + unitS));
    323       pViewer->fDisplayLightFrontT =
     326      pOGLSViewer->fDisplayLightFrontT =
    324327        command->ConvertToDimensionedDouble(G4String(originT + ' ' + unitT));
    325       pViewer->fDisplayLightFrontRed = red;
    326       pViewer->fDisplayLightFrontGreen = green;
    327       pViewer->fDisplayLightFrontBlue = blue;
     328      pOGLSViewer->fDisplayLightFrontRed = red;
     329      pOGLSViewer->fDisplayLightFrontGreen = green;
     330      pOGLSViewer->fDisplayLightFrontBlue = blue;
    328331    }
    329332
     
    335338      iss >> end_time_string >> end_time_unit
    336339          >> time_range_string >> time_range_unit;
    337       pViewer->fEndTime = command->ConvertToDimensionedDouble
     340      pOGLSViewer->fEndTime = command->ConvertToDimensionedDouble
    338341        (G4String(end_time_string + ' ' + end_time_unit));
    339342      G4double timeRange = command->ConvertToDimensionedDouble
    340343        (G4String(time_range_string + ' ' + time_range_unit));
    341344      if (timeRange > 0.) {
    342         pViewer->fStartTime = pViewer->fEndTime - timeRange;
     345        pOGLSViewer->fStartTime = pOGLSViewer->fEndTime - timeRange;
    343346      }
    344       if (pViewer->fVP.IsAutoRefresh())
     347      if (pOGLSViewer->fVP.IsAutoRefresh())
    345348        G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
    346349    }
     
    348351  if (command == fpCommandFade)
    349352    {
    350       pViewer->fFadeFactor = command->ConvertToDouble(newValue);
    351       if (pViewer->fVP.IsAutoRefresh())
     353      pOGLSViewer->fFadeFactor = command->ConvertToDouble(newValue);
     354      if (pOGLSViewer->fVP.IsAutoRefresh())
    352355        G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
    353356    }
     
    360363      iss >> start_time_string >> start_time_unit
    361364          >> time_range_string >> time_range_unit;
    362       pViewer->fStartTime = command->ConvertToDimensionedDouble
     365      pOGLSViewer->fStartTime = command->ConvertToDimensionedDouble
    363366        (G4String(start_time_string + ' ' + start_time_unit));
    364367      G4double timeRange = command->ConvertToDimensionedDouble
    365368        (G4String(time_range_string + ' ' + time_range_unit));
    366369      if (timeRange > 0.) {
    367         pViewer->fEndTime = pViewer->fStartTime + timeRange;
     370        pOGLSViewer->fEndTime = pOGLSViewer->fStartTime + timeRange;
    368371      }
    369       if (pViewer->fVP.IsAutoRefresh())
     372      if (pOGLSViewer->fVP.IsAutoRefresh())
    370373        G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
    371374    }
    372375
    373   if (command == fpCommandTransparency)
    374     {
    375       pViewer->transparency_enabled = command->ConvertToBool(newValue);
    376       if (pViewer->fVP.IsAutoRefresh())
    377         G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
    378     }
    379 
    380376}
    381377
  • trunk/source/visualization/OpenGL/src/G4OpenGLXViewer.cc

    r946 r948  
    4949#include "G4Point3D.hh"
    5050#include "G4Normal3D.hh"
     51#include "G4StateManager.hh"
    5152
    5253#include <X11/Xatom.h>
     
    484485    fGLXWin=glxpmap;
    485486   
     487    //
    486488    bool er1 = glXMakeCurrent (dpy,
    487489                               fGLXWin,  // pixmap win Id
     
    490492    glViewport (0, 0, fWinSize_x, fWinSize_y);
    491493   
     494    //    InitializeGLView ();
     495   
     496    // clear the buffers and window.
    492497    ClearView ();
    493     SetView ();
     498    SetView();
     499    //    FinishView ();
     500
    494501#ifdef G4DEBUG_VIS_OGL
    495502    printf("G4OpenGLXViewer::print Call DrawView context:%d old winGL:%d \n",cx,fGLXWin);
    496503#endif
    497     DrawView ();
     504
     505
     506
     507    // Need to force redraw for SXm mode
     508    NeedKernelVisit ();
     509
     510    // Need to change state to IDLE
     511    G4StateManager* stateManager = G4StateManager::GetStateManager();
     512    G4ApplicationState oldState = stateManager->GetCurrentState();
     513    stateManager->SetNewState(G4State_Idle); 
     514
     515   
     516
     517    DrawView (); // Will make current glX
     518
     519    // Restore state
     520     stateManager->SetNewState(oldState); 
     521
     522
     523
    498524   
    499525    std::string file = "G4OpenGL_XPixmap.eps";
     
    511537    printf("Error 1:%d 2:%d\n",er1,er2);
    512538   
     539    //    glXDestroyContext(pcx);
     540    //    glXDestroyGLXPixmap(glpixmap)
    513541  }
    514542
     
    548576
    549577 
     578  printf("------%d------\n",tmp_cx);
    550579  return glXCreateContext (dpy,
    551580                           pvi,
    552                            tmp_cx,
     581                           0,
    553582                           False);
    554583}
     
    596625  glReadPixels (0, 0, (GLsizei)width, (GLsizei)height, format, GL_UNSIGNED_BYTE, (GLvoid*) buffer);
    597626       
    598 //   glXWaitGL (); //Wait for effects of all previous OpenGL commands to
    599 //                 //be propagated before progressing.
    600 //   glFlush ();
    601    for (int i = 0; i<size; i++) {
    602      if (buffer[i] != 0)
    603        printf("%d",buffer[i]);
    604      //     else
    605      //       printf(".");
    606    }
     627  glXWaitGL (); //Wait for effects of all previous OpenGL commands to
     628  //                 //be propagated before progressing.
     629  glFlush ();
    607630
    608631//   printf("-----------\n-----------\n-----------\n-----------\n-----------\n%d %d %d\n",width, height,size);
  • trunk/source/visualization/OpenGL/src/G4OpenGLXViewerMessenger.cc

    r916 r948  
    105105      pViewer->fPrintFilename = std::string (oss.str().c_str());
    106106      // Print eps file...
    107       pViewer->print();
     107      pViewer->printEPS();
    108108      // Restore fPrintFilename for Xm...
    109109      pViewer->fPrintFilename = tmp_string;
Note: See TracChangeset for help on using the changeset viewer.