Changeset 1160
- Timestamp:
- Nov 9, 2009, 6:57:11 PM (15 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/History
r1141 r1160 1 $Id: History,v 1.15 8 2009/11/03 11:02:32 lgarnierExp $1 $Id: History,v 1.159 2009/11/03 11:18:03 allison Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 18 18 ---------------------------------------------------------- 19 19 20 3rd November October 2009 Laurent Garnier 20 3rd November 2009 John Allison (opengl-V09-02-09 coworks greps-V09-02-03) 21 - Tagged for system testing. 22 23 3rd November 2009 Laurent Garnier 21 24 - G4OpenGLImmediateQtViewer, G4OpenGLStoredQtViewer : Protec Qt4 method 22 25 introduce 13rd october 09 by ifdef 23 26 24 3rd November October2009 John Allison27 3rd November 2009 John Allison 25 28 - G4OpenGLXmPanningCallbacks: Fixed pView compilation problem. 26 29 -
trunk/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh
r1147 r1160 45 45 46 46 class G4OpenGLSceneHandler; 47 class G4UImanager; 47 48 48 49 class QGLWidget; … … 121 122 protected: 122 123 QGLWidget* fWindow; 123 // QDialog* fGLWindow;124 124 QWidget* fGLWindow; 125 125 bool hasPendingEvents(); -
trunk/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh
r942 r1160 41 41 #include <map> 42 42 #include <vector> 43 #include "G4Polymarker.hh"44 43 45 44 class G4OpenGLStored; … … 105 104 // A proper implementation would use geometry hierarchy. 106 105 std::map <const G4VSolid*, G4int, std::less <const G4VSolid*> > fSolidMap; 107 108 private:109 G4Polymarker fLastPolymarker ;110 std::vector< std::vector< G4Polymarker> > fLastPolymarkers ;111 int nbDoublons;112 106 }; 113 107 -
trunk/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh
r1049 r1160 202 202 XtPointer callData); 203 203 204 static void activate_callback (Widget w,205 XtPointer clientData,206 XtPointer callData);207 208 204 static void actions_callback (Widget w, 209 205 XtPointer clientData, … … 377 373 G4OpenGLXmViewer (const G4OpenGLXmViewer&); 378 374 G4OpenGLXmViewer& operator = (const G4OpenGLXmViewer&); 375 379 376 }; 380 377 -
trunk/source/visualization/OpenGL/src/G4OpenGLBitMapStore.cc
r951 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLBitMapStore.cc,v 1. 4 2007/11/15 10:14:23 allisonExp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLBitMapStore.cc,v 1.5 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 // -
trunk/source/visualization/OpenGL/src/G4OpenGLFontBaseStore.cc
r951 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLFontBaseStore.cc,v 1. 3 2006/06/29 21:18:56 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLFontBaseStore.cc,v 1.4 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc
r1049 r1160 50 50 G4VGraphicsSystem::threeD) 51 51 { 52 #ifdef G4DEBUG_VIS_OGL53 printf("INIT G4OpenGLImmediateXm (after G4VGraphicsSystem (,,)\n");54 #endif55 52 G4OpenGLViewerMessenger::GetInstance(); 56 53 G4OpenGLXmViewerMessenger::GetInstance(); -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc
r1109 r1160 104 104 NeedKernelVisit (); 105 105 #ifdef G4DEBUG_VIS_OGL 106 106 printf("G4OpenGLImmediateXmViewer::DrawView : change param\n"); 107 107 #endif 108 108 ProcessView (); 109 109 glFlush (); 110 110 111 111 HaloingSecondPass (); 112 112 -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r1152 r1160 79 79 #include <qdialog.h> 80 80 #include <qevent.h> //include <qcontextmenuevent.h> 81 #include <qmainwindow.h> 82 83 #ifdef G4DEBUG_VIS_OGL 84 #include "G4UImanager.hh" 85 #include "G4UIsession.hh" 86 #include "G4UIQt.hh" 87 #endif 88 89 // #define G4DEBUG_VIS_OGL_QTPARENT 81 90 82 91 83 ////////////////////////////////////////////////////////////////////////////// … … 112 104 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// 113 105 { 114 106 #ifdef G4DEBUG_VIS_OGL 107 printf("G4OpenGLQtViewer::CreateMainWindow :: BEGIN \n"); 108 #endif 115 109 if(fWindow) return; //Done. 116 110 … … 118 112 // fWindow->makeCurrent(); 119 113 120 fGLWindow = getParentWidget();121 if (fGLWindow != NULL) {122 #if QT_VERSION < 0x040000123 glWidget->reparent(fGLWindow,0,QPoint(0,0));124 #else125 #ifdef G4DEBUG_VIS_OGL_QTPARENT126 G4UImanager* UI = G4UImanager::GetUIpointer();127 if(UI!=NULL) {128 if (glWidget->thread()) {129 if (((G4UIQt*)UI->GetSession())->getMainWindow()) {130 if (((G4UIQt*)UI->GetSession())->getMainWindow()->thread()) {131 if (glWidget->thread() != ((G4UIQt*)UI->GetSession())->getMainWindow()->thread()) {132 114 #ifdef G4DEBUG_VIS_OGL 133 printf("G4OpenGLQtViewer::CreateMainWindow not in te same thread ...move to\n"); 134 #endif 135 glWidget->moveToThread(((G4UIQt*)UI->GetSession())->getMainWindow()->thread()); 136 } else { 137 printf("G4OpenGLQtViewer::CreateMainWindow 1\n"); 138 } 139 140 glWidget->setParent(fGLWindow); 141 } else { 142 printf("G4OpenGLQtViewer::CreateMainWindow 2\n"); 143 } 144 } else { 145 printf("G4OpenGLQtViewer::CreateMainWindow 3 UI:%d session(UIQt):%d\n",UI,((G4UIQt*)UI->GetSession())); 146 } 147 } else { 148 printf("G4OpenGLQtViewer::CreateMainWindow 4\n"); 149 } 150 } 151 #else 152 glWidget->setParent(fGLWindow); 153 #endif 154 #endif 155 } 156 157 QHBoxLayout *mainLayout = new QHBoxLayout; 158 mainLayout->setMargin(0); 159 mainLayout->setSpacing(0); 160 mainLayout->addWidget(glWidget); 161 162 #if QT_VERSION < 0x040000 163 fGLWindow->setCaption(name ); 164 #else 165 fGLWindow->setLayout(mainLayout); 166 fGLWindow->setWindowTitle( name); 167 #endif 115 printf("G4OpenGLQtViewer::CreateMainWindow :: ++++++++++++++ add new TAB %s\n",name.toStdString().c_str()); 116 #endif 117 G4Qt* interactorManager = G4Qt::getInstance (); 118 119 // FIXME L.Garnier 9/11/09 Has to be check !!! 120 // Qt UI with Qt Vis 121 // Qt UI with X Vis 122 // X UI with Qt Vis 123 // X UI with X Vis 124 // Ne marche pas avec un UIBatch !! (ecran blanc) 125 126 // return false if G4UIQt was not launch 127 bool res = interactorManager->AddTabVisWidget(fWindow,name); 128 129 if (!res) { // we have to do a dialog 130 131 #ifdef G4DEBUG_VIS_OGL 132 printf("G4OpenGLQtViewer::CreateMainWindow :: get Parent ? \n"); 133 #endif 134 QWidget *myParent = getParentWidget(); 135 #ifdef G4DEBUG_VIS_OGL 136 printf("G4OpenGLQtViewer::CreateMainWindow :: getParent OK \n"); 137 #endif 138 if (myParent != NULL) { 139 #if QT_VERSION < 0x040000 140 fWindow->reparent(myParent,0,QPoint(0,0)); 141 #else 142 fWindow->setParent(myParent); 143 #endif 144 } 145 QHBoxLayout *mainLayout = new QHBoxLayout(fGLWindow); 146 147 mainLayout->setMargin(0); 148 mainLayout->setSpacing(0); 149 mainLayout->addWidget(fWindow); 150 if (fGLWindow->inherits("QMainWindow")) { 151 #if QT_VERSION < 0x040000 152 fGLWindow->setCaption(name ); 153 #else 154 fGLWindow->setWindowTitle( name); 155 #endif 156 } 157 #if QT_VERSION >= 0x040000 158 fGLWindow->setLayout(mainLayout); 159 #endif 160 } else { 161 fGLWindow = fWindow; 162 } 163 164 168 165 ResizeWindow(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY()); 169 166 170 167 //useful for MACOSX, we have to compt the menuBar height 171 168 int offset = QApplication::desktop()->height() 172 173 169 - QApplication::desktop()->availableGeometry().height(); 170 174 171 G4int YPos= fVP.GetWindowAbsoluteLocationHintY(QApplication::desktop()->height()); 175 172 if (fVP.GetWindowAbsoluteLocationHintY(QApplication::desktop()->height())< offset) { … … 181 178 182 179 if(!fWindow) return; 183 180 184 181 if (!fContextMenu) 185 182 createPopupMenu(); 186 183 184 #ifdef G4DEBUG_VIS_OGL 185 printf("G4OpenGLQtViewer::CreateMainWindow :: END \n"); 186 #endif 187 187 } 188 188 … … 241 241 242 242 #ifdef G4DEBUG_VIS_OGL 243 G4UImanager* UI = G4UImanager::GetUIpointer(); 244 printf("G4OpenGLQtViewer::getParentWidget :: UImanager %d++++++++++++\n",UI); 245 #endif 246 247 #ifdef G4DEBUG_VIS_OGL 243 248 printf("G4OpenGLQtViewer::G4OpenGLQtViewer END\n"); 244 249 #endif … … 2542 2547 2543 2548 2544 void G4OpenGLQtViewer::drawText(2545 const char * str2546 ,int x2547 ,int y2548 ,int z2549 ,int size ) {2550 2551 #ifdef G4DEBUG_VIS_OGL2552 printf ("G4OpenGLStoredQtViewer::drawText-position %d,%d,%d-----------------------------------------\n",x,y,z);2553 #endif2554 2555 QFont f1 = QFont("Courrier", size, QFont::Bold);2556 #if QT_VERSION > 0x0400002557 f1.setPointSizeF(20);2558 #else2559 f1.setPointSizeFloat(20);2560 #endif2561 2562 // FIXME : Interesting border effect : resizing world resize detector2563 // but not traces !2564 glColor3d (0.123456,0.1234560,0.123456);2565 fWindow->renderText (x,y,z,str,f1);2566 glColor3d (0.321,0.321,0.321);2567 }2568 2569 2570 2549 // FIXME : does not work on Qt3 2571 2550 void G4OpenGLQtViewer::processEncodeStdout() … … 2669 2648 // launch Qt if not 2670 2649 G4Qt* interactorManager = G4Qt::getInstance (); 2671 // G4UImanager* UI = G4UImanager::GetUIpointer();2672 2673 2674 #ifdef G4DEBUG_VIS_OGL_QTPARENT2675 2650 G4UImanager* UI = G4UImanager::GetUIpointer(); 2676 if(UI!=NULL) { 2677 if (((G4UIQt*)UI->GetSession())->getViewWidget()) { 2678 printf("G4OpenGLQtViewer::getParentWidget ok :%d\n",((G4UIQt*)UI->GetSession())->getViewWidget()); 2679 return ((G4UIQt*)UI->GetSession())->getViewWidget(); 2680 // fGLWindow = new QWidget(((G4UIQt*)UI->GetSession())->getViewWidget(),Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 2681 } else { 2682 return 0; 2683 } 2684 // fGLWindow = new QWidget(0,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 2685 } 2686 #else 2687 2651 #ifdef G4DEBUG_VIS_OGL 2652 // printf("G4OpenGLQtViewer::getParentWidget :: UImanager %d G4Qt:%d et via GetUIQt:%d---------------------\n",UI,UI->GetSession(),interactorManager,interactorManager->GetUIVisWidget()); 2653 #endif 2654 2655 // if (interactorManager) { 2656 // if (interactorManager->GetUIVisWidget()) { 2657 // fGLWindow = interactorManager->GetUIVisWidget(); 2658 // return interactorManager->GetUIVisWidget(); 2659 // } 2660 // } 2661 // 2688 2662 2689 2663 … … 2733 2707 return NULL; 2734 2708 } 2735 #endif2736 2709 } 2737 2710 -
trunk/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc
r1140 r1160 44 44 // Also seems to be required for HP's CC and AIX xlC, at least. 45 45 46 47 #include "G4OpenGLQtViewer.hh"48 46 #include "G4OpenGLSceneHandler.hh" 49 47 #include "G4OpenGLViewer.hh" … … 265 263 G4int font_base = G4OpenGLFontBaseStore::GetFontBase(fpViewer,size); 266 264 if (font_base < 0) { 267 268 #ifdef G4VIS_BUILD_OPENGLQT_DRIVER269 G4OpenGLQtViewer* oGLSQtViewer = dynamic_cast<G4OpenGLQtViewer*>(fpViewer);270 if (oGLSQtViewer) {271 // FIXME : No font for the moment272 const char* textCString = textString.c_str();273 oGLSQtViewer->drawText(textCString,position.x(),position.y(),position.z(),size);274 }275 #endif276 265 static G4int callCount = 0; 277 266 ++callCount; … … 294 283 const char* textCString = textString.c_str(); 295 284 glColor3d (c.GetRed (), c.GetGreen (), c.GetBlue ()); 296 #ifdef G4VIS_BUILD_OPENGLQT_DRIVER 297 G4OpenGLQtViewer* oGLSQtViewer = dynamic_cast<G4OpenGLQtViewer*>(fpViewer); 298 299 if (oGLSQtViewer) { 300 // FIXME : No font for the moment 301 oGLSQtViewer->drawText(textCString,position.x(),position.y(),position.z(),size); 302 } 303 #else 304 glDisable (GL_DEPTH_TEST); 305 glDisable (GL_LIGHTING); 306 307 glRasterPos3d(position.x(),position.y(),position.z()); 308 // No action on offset or layout at present. 309 glPushAttrib(GL_LIST_BIT); 310 glListBase(font_base); 311 glCallLists(strlen(textCString), GL_UNSIGNED_BYTE, (GLubyte *)textCString); 312 glPopAttrib(); 313 #endif 314 // ////////////// 315 // makeCurrent(); 316 // glPushAttrib(GL_LIST_BIT | GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT); 317 // glRasterPos3d(x, y, z); 318 // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 319 // glEnable(GL_BLEND); 320 // glListBase(fontDisplayListBase(fnt, listBase)); 321 // glCallLists(str.length(), GL_UNSIGNED_BYTE, str.local8Bit()); 322 // glPopAttrib(); 323 // ////////////// 285 glDisable (GL_DEPTH_TEST); 286 glDisable (GL_LIGHTING); 324 287 325 #ifdef G4DEBUG_VIS_OGL 326 printf ("G4OpenGLSceneHandler::AddPrimitives TEXT\n"); 327 #endif 288 glRasterPos3d(position.x(),position.y(),position.z()); 289 // No action on offset or layout at present. 290 glPushAttrib(GL_LIST_BIT); 291 glListBase(font_base); 292 glCallLists(strlen(textCString), GL_UNSIGNED_BYTE, (GLubyte *)textCString); 293 glPopAttrib(); 328 294 } 329 295 -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc
r1103 r1160 81 81 fMemoryForDisplayLists (true), 82 82 fAddPrimitivePreambleNestingDepth (0), 83 fTopPODL (0), 84 fLastPolymarker(), 85 fLastPolymarkers(), 86 nbDoublons(0) 83 fTopPODL (0) 87 84 {} 88 85 … … 195 192 if (fReadyForTransients || !fMemoryForDisplayLists) { 196 193 glPopMatrix(); 197 #ifdef G4DEBUG_VIS_OGL198 // printf("G4OpenGLStoredSceneHandler::AddPrimitivePostamble glFlush\n");199 #endif200 194 glFlush (); 201 195 glDrawBuffer (GL_BACK); … … 213 207 void G4OpenGLStoredSceneHandler::AddPrimitive (const G4Polymarker& polymarker) 214 208 { 215 216 #ifdef G4DEBUG_VIS_OGL217 // printf("G4OpenGLStoredSceneHandler::AddPrimitive\n");218 #endif219 std::vector< G4Polymarker > poly;220 // 40,83 N03 lancement221 // 289,69 10Gev supp doublons + bitmap 21 frame en 10 sec222 // 343,45 10Gev full polymarker + bitmap 15 frame en 10 sec223 // 351,67 10Gev full polymarker - bitmap 31 frame en 10 sec224 // 257,90 10Gev supp doublons MAX - bitmap 42 frame en 10 sec 45757 markers et 16243 enleves225 // Check226 int reste = polymarker.size();227 bool res = false;228 if (fLastPolymarkers.size() > 0 ) {229 230 // Loop new point to check231 for (unsigned int b=0; b< polymarker.size();b++) {232 // printf("check %d/%d\n",b,polymarker.size());233 res= false;234 235 // Look for stored point list236 for (unsigned int a=0; a< fLastPolymarkers.size() ;a++) {237 // printf("against vect %d/%d\n",a,fLastPolymarker.size());238 std::vector < G4Polymarker > storedPoly = fLastPolymarkers[a];239 int size= storedPoly.size()-1;240 241 // Look for point242 for (int aPoly=0; aPoly< size ;aPoly++) {243 // printf("against poly %d/%d\n",aPoly,storedPoly.size());244 if (( storedPoly[size-aPoly].GetPosition().x() == polymarker[b].x()) &&245 ( storedPoly[size-aPoly].GetPosition().y() == polymarker[b].y()) &&246 ( storedPoly[size-aPoly].GetPosition().z() == polymarker[b].z())) {247 reste --;248 // res= true;249 nbDoublons++;250 // 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());251 }252 }253 }254 // Add255 if (!res) {256 G4Polymarker tmp;257 tmp.SetPosition(polymarker[b]);258 poly.push_back(tmp);259 }260 }261 } else {262 for (unsigned int b=0; b< polymarker.size();b++) {263 G4Polymarker tmp;264 tmp.SetPosition(polymarker[b]);265 poly.push_back(tmp);266 }267 }268 fLastPolymarkers.push_back(poly);269 #define TEST_MARKER 1270 #ifdef TEST_MARKER271 // if it is already done272 if (poly.size() == 1 ) {273 // if (polymarker.size() >0) {274 // if (( fLastPolymarker.GetPosition().x() == polymarker[0].x()) &&275 // ( fLastPolymarker.GetPosition().y() == polymarker[0].y()) &&276 // ( fLastPolymarker.GetPosition().z() == polymarker[0].z())) {277 // if (fpViewer->GetViewParameters().IsPicking()) {278 // glLoadName(++fPickName);279 // fPickMap[fPickName] = 0;280 // }281 // printf("G4OpenGLStoredSceneHandler::AddPrimitive SUPPR ----------- point %f %f %f\n",polymarker[0].x(),polymarker[0].y(),polymarker[0].z());282 const G4Colour& c = GetColour (polymarker);283 glColor3d (c.GetRed (), c.GetGreen (), c.GetBlue ());284 G4OpenGLSceneHandler::AddPrimitive(poly[0]);285 // fLastPolymarker.SetPosition(polymarker[poly]);286 return;287 }288 #endif289 #ifdef G4DEBUG_VIS_OGL290 // printf("G4OpenGLStoredSceneHandler::AddPrimitive new marker list\n");291 #endif292 209 AddPrimitivePreamble(polymarker); 293 210 G4OpenGLSceneHandler::AddPrimitive(polymarker); 294 211 AddPrimitivePostamble(); 295 // fLastPolymarker.SetPosition(polymarker[polymarker.size()-1]);296 212 } 297 213 … … 332 248 // gets into the display list 333 249 AddPrimitivePreamble(polyhedron); 334 #ifdef G4DEBUG_VIS_OGL335 printf("G4OpenGLStoredSceneHandler::AddPrimitive (poly?) :\n");336 #endif337 250 G4OpenGLSceneHandler::AddPrimitive(polyhedron); 338 251 AddPrimitivePostamble(); … … 384 297 void G4OpenGLStoredSceneHandler::EndModeling () { 385 298 // Make a List which calls the other lists. 386 #ifdef G4DEBUG_VIS_OGL387 printf("G4OpenGLStoredSceneHandler::EndModeling Cree une nouvelle liste+++++++++++++++++++++++++++\n");388 #endif389 299 fTopPODL = glGenLists (1); 390 300 if (glGetError() == GL_OUT_OF_MEMORY) { // Could pre-allocate? … … 454 364 // Make sure screen corresponds to graphical database... 455 365 if (fpViewer) { 456 #ifdef G4DEBUG_VIS_OGL457 printf("G4OpenGLStoredSceneHandler::ClearTransientStore () BEGIN\n");458 #endif459 366 fpViewer -> SetView (); 460 367 fpViewer -> ClearView (); 461 368 fpViewer -> DrawView (); 462 #ifdef G4DEBUG_VIS_OGL463 printf("G4OpenGLStoredSceneHandler::ClearTransientStore () END\n");464 #endif465 369 } 466 370 } -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLStoredWin32.cc,v 1.1 4 2006/08/14 12:07:19 allisonExp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLStoredWin32.cc,v 1.15 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 // -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredX.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLStoredX.cc,v 1.1 4 2007/08/21 14:05:51 allisonExp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLStoredX.cc,v 1.15 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 // -
trunk/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLTransform3D.cc,v 1. 8 2006/06/29 21:19:32 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLTransform3D.cc,v 1.9 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 // -
trunk/source/visualization/OpenGL/src/G4OpenGLViewer.cc
r1137 r1160 113 113 glDisable (GL_POLYGON_SMOOTH); 114 114 115 #ifdef G4DEBUG_VIS_OGL116 printf("G4OpenGLViewer::InitializeGLView %d %d \n",fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY());117 #endif118 115 fWinSize_x = fVP.GetWindowSizeHintX(); 119 116 fWinSize_y = fVP.GetWindowSizeHintY(); -
trunk/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc
r1137 r1160 40 40 41 41 #include "G4Scene.hh" 42 #include "G4VSceneHandler.hh"43 42 #include "G4UImanager.hh" 44 43 #include "G4ios.hh" … … 65 64 //theta spin stuff here 66 65 G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData; 67 // No callback allowed when no scene68 if (!pView->GetSceneHandler()->GetScene()) {69 return;70 }71 66 72 67 if (pView->rotate_right) { … … 144 139 XtIntervalId* timer_id) 145 140 { 146 147 141 //phi spin stuff here 148 142 // G4double delta_alpha; 149 143 G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData; 150 144 151 // No callback allowed when no scene152 if (!pView->GetSceneHandler()->GetScene()) {153 return;154 }155 145 if (pView -> rotate_up) { 156 146 pView->rotateScene(0,-(G4double)pView->rot_sens,1); … … 276 266 XtIntervalId*) 277 267 { 278 279 268 G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*)clientData; 280 // No callback allowed when no scene281 if (!pView->GetSceneHandler()->GetScene()) {282 return;283 }284 269 const G4Vector3D& up = pView->fVP.GetUpVector(); 285 270 G4Vector3D third_axis = up.cross(pView->original_vp); … … 316 301 XtPointer) 317 302 { 318 303 319 304 G4OpenGLXmViewer* pView; 320 305 … … 323 308 NULL); 324 309 325 // No callback allowed when no scene326 if (!pView->GetSceneHandler()->GetScene()) {327 return;328 }329 310 pView->fVP.SetCurrentTargetPoint(G4Point3D()); 330 311 pView->fVP.SetZoomFactor(1.0); -
trunk/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLXmSliderBar.cc,v 1. 7 2006/06/29 21:20:00 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLXmSliderBar.cc,v 1.8 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent -
trunk/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLXmVWidgetComponent.cc,v 1. 5 2006/06/29 21:20:08 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLXmVWidgetComponent.cc,v 1.6 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 //Base class for all Motif component widgets -
trunk/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLXmVWidgetContainer.cc,v 1. 5 2006/06/29 21:20:10 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLXmVWidgetContainer.cc,v 1.7 2009/03/13 09:50:03 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 //Base class for all Motif container widgets -
trunk/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLXmVWidgetShell.cc,v 1. 5 2006/06/29 21:20:14 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLXmVWidgetShell.cc,v 1.6 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 // 30 30 //Base class for all Motif shell widgets -
trunk/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc
r1125 r1160 636 636 637 637 win = XtWindow (glxarea); 638 639 /* Change once the bit gravity of the Drawing Area; default640 is north west and we want forget, so that resize641 always generates exposure events */642 XSetWindowAttributes attrs;643 attrs.bit_gravity = ForgetGravity ;644 XChangeWindowAttributes(XtDisplay(glxarea), win,645 CWBitGravity, &attrs);646 638 647 639 glXMakeCurrent (dpy, win, cx); … … 649 641 // This should be add AFTER glXMakeCurrent done because it will fire a resizeCallback 650 642 XtAddCallback (glxarea, 651 652 653 654 643 XmNresizeCallback, 644 resize_callback, 645 this); 646 655 647 XtAddCallback (glxarea, 656 648 XmNexposeCallback, 657 649 expose_callback, 658 this);659 660 XtAddCallback (glxarea,661 XmNactivateCallback,662 activate_callback,663 650 this); 664 651 -
trunk/source/visualization/OpenGL/src/G4OpenGLXmViewerMessenger.cc
r1049 r1160 25 25 // 26 26 // 27 // $Id: G4OpenGLXmViewerMessenger.cc,v 1. 4 2006/06/29 21:20:18 gunter Exp $28 // GEANT4 tag $Name: geant4-09-02-ref-02$27 // $Id: G4OpenGLXmViewerMessenger.cc,v 1.5 2009/01/19 16:53:42 lgarnier Exp $ 28 // GEANT4 tag $Name: $ 29 29 30 30 #ifdef G4VIS_BUILD_OPENGLXM_DRIVER -
trunk/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc
r1137 r1160 35 35 36 36 #ifdef G4VIS_BUILD_OPENGLXM_DRIVER 37 #define RESIZE_TEST 37 38 38 #include "G4OpenGLXmViewer.hh" 39 40 void G4OpenGLXmViewer::resize_callback (Widget w, 41 XtPointer clientData, 42 XtPointer x) 43 { 44 expose_callback(w,clientData,x); 45 } 39 46 40 47 41 48 42 // L. Garnier 20 May 2009 43 // Each resize event send 2-3-4 expose events. Sequence on MacOsX 10.5 is : 44 // - Expose(s) callback for pixels top/left from resize button 45 // - Resize callback 46 // - Expose for main part of content 47 // - Expose(s) for new part of content 48 // 49 // BUT we want to redraw things only ONE time. 50 // First expose is send with size=="before resize" size and x,y !=0 51 // and x+dw!=w || y+dh !=h 52 void G4OpenGLXmViewer::resize_callback (Widget w, 49 void G4OpenGLXmViewer::expose_callback (Widget w, 53 50 XtPointer clientData, 54 XtPointer callData)51 XtPointer) 55 52 { 56 #ifdef G4DEBUG_VIS_OGL57 printf("G4OpenGLXmViewer::resize_callback \n");58 #endif59 XmDrawingAreaCallbackStruct *data = (XmDrawingAreaCallbackStruct *)callData;60 61 XEvent event;62 63 // flush others resize events64 #ifdef G4DEBUG_VIS_OGL65 while (XCheckWindowEvent(XtDisplay(w), data->window,66 ResizeRedirectMask, &event)) {67 printf("G4OpenGLXmViewer::resize_callback ------ next RESIZE !\n");68 }69 #endif70 #ifdef RESIZE_TEST71 53 G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData; 72 54 Dimension width, height; … … 76 58 XmNheight, &height, 77 59 NULL); 60 78 61 pView->ResizeWindow(width,height); 79 #endif80 }81 62 63 glXMakeCurrent (pView->dpy, XtWindow(pView->glxarea), pView->cx); 82 64 83 void G4OpenGLXmViewer::activate_callback (Widget,84 XtPointer,85 XtPointer)86 {87 #ifdef G4DEBUG_VIS_OGL88 printf("G4OpenGLXmViewer::activate_callback \n");89 #endif90 }91 92 void G4OpenGLXmViewer::expose_callback (Widget w,93 XtPointer clientData,94 XtPointer callData)95 {96 /* ensure last expose event in sequence */97 #ifdef G4DEBUG_VIS_OGL98 printf("G4OpenGLXmViewer::expose_callback ?\n");99 #endif100 XmDrawingAreaCallbackStruct *data = (XmDrawingAreaCallbackStruct *)callData;101 102 XEvent event;103 104 Dimension width, height;105 G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData;106 107 XtVaGetValues (w,108 XmNwidth, &width,109 XmNheight, &height,110 NULL);111 112 XSetWindowAttributes xswa;113 xswa.bit_gravity = ForgetGravity ;114 XChangeWindowAttributes(XtDisplay(w), XtWindow(w),115 CWBitGravity, &xswa);116 117 // look for next118 // while (XCheckTypedWindowEvent(XtDisplay(w), XtWindow(w), ResizeRequest, &event)) {119 // printf("G4OpenGLXmViewer::expose_callback --- event type :%d\n",event.type);120 // printf("G4OpenGLXmViewer::expose_callback --- resize %d\n",event.type);121 // }122 123 // Several expose events are send for each area to be redraw.124 // Because we want to optimise redrawing, we only need to redraw once.125 if (((XExposeEvent *) data->event)->count != 0) {126 #ifdef G4DEBUG_VIS_OGL127 printf("G4OpenGLXmViewer::expose_callback NOOOOO %d %d type:%d number:%d send:%lud x:%d y:%d w:%d h:%d c:%d\n",width,height,128 ((XExposeEvent *) data->event)->type,129 ((XExposeEvent *) data->event)->serial,130 ((XExposeEvent *) data->event)->send_event,131 ((XExposeEvent *) data->event)->x,132 ((XExposeEvent *) data->event)->y,133 ((XExposeEvent *) data->event)->width,134 ((XExposeEvent *) data->event)->height,135 ((XExposeEvent *) data->event)->count);136 137 138 #endif139 return;140 }141 #ifdef G4DEBUG_VIS_OGL142 printf("G4OpenGLXmViewer::expose_callback Should redraw %d %d type:%d number:%d send:%lud x:%d y:%d w:%d h:%d c:%d\n",width,height,143 ((XExposeEvent *) data->event)->type,144 ((XExposeEvent *) data->event)->serial,145 ((XExposeEvent *) data->event)->send_event,146 ((XExposeEvent *) data->event)->x,147 ((XExposeEvent *) data->event)->y,148 ((XExposeEvent *) data->event)->width,149 ((XExposeEvent *) data->event)->height,150 ((XExposeEvent *) data->event)->count);151 #endif152 153 #ifdef G4DEBUG_VIS_OGL154 while (XCheckMaskEvent(XtDisplay(w), ResizeRedirectMask, &event)) {155 // printf("G4OpenGLXmViewer::expose_callback ------ next EXPOSE ! %d\n");156 // }157 // while (XCheckWindowEvent(XtDisplay(w), data->window,158 // ResizeRedirectMask, &event)) {159 printf("G4OpenGLXmViewer::expose_callback ------ next RESIZE ! \n");160 }161 #endif162 163 #ifdef RESIZE_TEST164 glXMakeCurrent (pView->dpy, XtWindow(pView->glxarea), pView->cx);165 #ifdef G4DEBUG_VIS_OGL166 G4cout << "G4OpenGLXmViewer::expose_callback" << G4endl;167 printf("G4OpenGLXmViewer::expose_callback Call SetView()\n");168 #endif169 65 pView->SetView (); 170 #ifdef G4DEBUG_VIS_OGL171 printf("G4OpenGLXmViewer::expose_callback Call SetView() END \n");172 printf("G4OpenGLXmViewer::expose_callback Call ClearView() \n");173 #endif174 66 pView->ClearView (); 175 #ifdef G4DEBUG_VIS_OGL176 printf("G4OpenGLXmViewer::expose_callback Call ClearView() END \n");177 printf("G4OpenGLXmViewer::expose_callback Call DrawView() \n");178 #endif179 67 pView->DrawView (); 180 #ifdef G4DEBUG_VIS_OGL181 printf("G4OpenGLXmViewer::expose_callback Call DrawView() END \n");182 G4cout << "G4OpenGLXmViewer::expose_callback END" << G4endl;183 #endif184 #endif185 return;186 187 188 68 } 189 69
Note: See TracChangeset
for help on using the changeset viewer.