Changeset 1125 for trunk/source/visualization
- Timestamp:
- Oct 13, 2009, 3:28:26 PM (15 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/History
r1095 r1125 1 $Id: History,v 1.14 6 2009/08/19 13:28:10 lgarnierExp $1 $Id: History,v 1.147 2009/09/29 21:28:51 allison Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 13 October 2009 Laurent Garnier 20 - G4OpenGLImmediateQtViewer/StoredQtViewer : some cleaning 21 ++ - G4OpenGLImmediateQtViewer : Remove picking to true at initialisation 22 ++ - G4OpenGLQtViewer : Fix a drawing problem on mac OS X 10.6 23 - G4OpenGLSceneHandler.cc : Fix a compilation error on mac OS X 10.5.8 24 ++ - G4OpenGLStoredQtViewer.cc : Fix a problem on width() and height() methods 25 on mac OSX 10.6 and Qt4.6(devel version). 26 ?? - G4OpenGLXmViewer.cc : send an exposure event at each resize event. 27 ?? - G4OpenGLXmWindowHandlingCallbacks.cc 28 29 29 September 2009 John Allison (opengl-V09-02-07) 30 - Tagged. 19 31 20 32 18 August 2009 Laurent Garnier -
trunk/source/visualization/OpenGL/include/G4OpenGLImmediateQtViewer.hh
r1114 r1125 40 40 #include "G4OpenGLQtViewer.hh" 41 41 42 #include < QGLWidget> // include <qglwidget.h>42 #include <qgl.h> // include <qglwidget.h> 43 43 44 44 #include "globals.hh" -
trunk/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh
r1123 r1125 40 40 #include "G4OpenGLQtViewer.hh" 41 41 42 #include < QGLWidget> // include <qglwidget.h>42 #include <qgl.h> // include qglwidget 43 43 44 44 class QMouseEvent; 45 45 class QWheelEvent; 46 class QPaintEvent;47 46 class QContextMenuEvent; 48 47 … … 72 71 void contextMenuEvent(QContextMenuEvent *e); 73 72 void keyPressEvent (QKeyEvent * event); 74 void paintEvent ( QPaintEvent * event );75 73 private: 76 74 void ComputeView (); 77 GLuint box; 75 78 76 // QImage glBufferImage; 79 77 }; -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc
r1124 r1125 33 33 34 34 #ifdef G4VIS_BUILD_OPENGLQT_DRIVER 35 //#define QT_STORE_46_DBG 136 35 37 36 #include "G4VViewer.hh" … … 50 49 { 51 50 52 #ifdef G4DEBUG_VIS_OGL53 printf("G4OpenGLImmediateQtViewer::Creation...................before.............%d x %d\n",width(),height());54 #endif55 56 57 51 #if QT_VERSION < 0x040000 58 52 setFocusPolicy(QWidget::StrongFocus); // enable keybord events … … 83 77 } 84 78 85 #ifdef QT_STORE_46_DBG86 void G4OpenGLImmediateQtViewer::initializeGL () {87 glShadeModel(GL_SMOOTH); // Enable Smooth Shading88 glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background89 glClearDepth(1.0f); // Depth Buffer Setup90 glEnable(GL_DEPTH_TEST); // Enables Depth Testing91 glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do92 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations93 94 95 return; // Initialization Went OK96 97 98 }99 #else100 79 void G4OpenGLImmediateQtViewer::initializeGL () { 101 80 … … 120 99 121 100 } 122 #endif 101 123 102 124 103 /** To ensure compatibility with DrawView method … … 138 117 139 118 140 #ifdef QT_STORE_46_DBG141 void G4OpenGLImmediateQtViewer::ComputeView () {142 }143 #else144 119 void G4OpenGLImmediateQtViewer::ComputeView () { 145 120 … … 180 155 fHasToRepaint = true; 181 156 } 182 #endif183 157 184 158 void G4OpenGLImmediateQtViewer::FinishView() … … 198 172 - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements 199 173 */ 200 #ifdef QT_STORE_46_DBG201 void G4OpenGLImmediateQtViewer::resizeGL(202 int width203 ,int height)204 {205 #ifdef G4DEBUG_VIS_OGL206 printf("G4OpenGLImmediateQtViewer::resizeGL\n");207 #endif208 if (height==0) // Prevent A Divide By Zero By209 {210 height=1; // Making Height Equal One211 }212 213 glViewport(0,0,width,height); // Reset The Current Viewport214 215 glMatrixMode(GL_PROJECTION); // Select The Projection Matrix216 glLoadIdentity(); // Reset The Projection Matrix217 218 // Calculate The Aspect Ratio Of The Window219 gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);220 221 glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix222 glLoadIdentity(); // Reset The Modelview Matrix223 224 }225 #else226 174 void G4OpenGLImmediateQtViewer::resizeGL( 227 175 int aWidth … … 231 179 fHasToRepaint = sizeHasChanged(); 232 180 } 233 #endif 234 235 236 #ifdef QT_STORE_46_DBG 237 void G4OpenGLImmediateQtViewer::paintGL() 238 { 239 #ifdef G4DEBUG_VIS_OGL 240 printf("G4OpenGLImmediateQtViewer::paintGL\n"); 241 #endif 242 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 243 glMatrixMode(GL_MODELVIEW); 244 glLoadIdentity(); 245 gluLookAt(1,1,1,0,0,0,0,0,1); 246 247 glBegin(GL_QUADS); 248 //carré rouge 249 glColor3ub(255,0,0); 250 glVertex3d(1,1,0); 251 glVertex3d(1,0,0); 252 glVertex3d(0,0,0); 253 glVertex3d(0,1,0); 254 //carré vert 255 glColor3ub(0,255,0); 256 glVertex3d(1,1,0); 257 glVertex3d(2,1,0); 258 glVertex3d(2,0,0); 259 glVertex3d(1,0,0); 260 //carré vert 261 glColor3ub(0,255,0); 262 glVertex3d(0,2,0); 263 glVertex3d(1,2,0); 264 glVertex3d(1,1,0); 265 glVertex3d(0,1,0); 266 //carré bleu 267 glColor3ub(0,0,255); 268 glVertex3d(2,2,0); 269 glVertex3d(2,1,0); 270 glVertex3d(1,1,0); 271 glVertex3d(1,2,0); 272 //carré bleu 273 glColor3ub(0,0,255); 274 glVertex3d(1,0,0); 275 glVertex3d(1,1,0); 276 glVertex3d(1,1,1); 277 glVertex3d(1,0,1); 278 //carré blanc 279 glColor3ub(255,255,255); 280 glVertex3d(1,1,0); 281 glVertex3d(0,1,0); 282 glVertex3d(0,1,1); 283 glVertex3d(1,1,1); 284 //carré rouge 285 glColor3ub(255,0,0); 286 glVertex3d(1,1,1); 287 glVertex3d(1,0,1); 288 glVertex3d(0,0,1); 289 glVertex3d(0,1,1); 290 glEnd(); 291 } 292 293 #else 181 182 294 183 void G4OpenGLImmediateQtViewer::paintGL() 295 184 { … … 325 214 #endif 326 215 } 327 #endif328 329 216 330 217 void G4OpenGLImmediateQtViewer::mousePressEvent(QMouseEvent *event) -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc
r1049 r1125 58 58 (G4VGraphicsSystem& system,const G4String& name): 59 59 G4OpenGLSceneHandler (system, fSceneIdCount++, name) 60 { 61 #ifdef G4DEBUG_VIS_OGL 62 printf("INIT G4OpenGLImmediateSceneHandler (after G4OpenGLSceneHandler (system, fSceneIdCount++, name)\n"); 63 #endif 64 } 60 {} 65 61 66 62 G4OpenGLImmediateSceneHandler::~G4OpenGLImmediateSceneHandler () -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc
r1049 r1125 42 42 G4VViewer (scene, -1), 43 43 G4OpenGLViewer (scene) 44 { 45 #ifdef G4DEBUG_VIS_OGL 46 printf("INIT G4OpenGLImmediateViewer (after G4VViewer and G4OpenGLVIewer \n"); 47 #endif 48 } 44 {} 49 45 50 46 void G4OpenGLImmediateViewer::ProcessView () 51 47 { 52 printf("G4OpenGLImmediateViewer::ProcessView\n");53 54 48 const G4Planes& cutaways = fVP.GetCutawayPlanes(); 55 49 G4bool cutawayUnion = fVP.IsCutaway() && -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r1124 r1125 135 135 foreach (QWidget *widget, QApplication::allWidgets()) { 136 136 if ((found== false) && (widget->inherits("QMainWindow"))) { 137 #ifdef G4DEBUG_VIS_OGL138 printf("G4OpenGLQtViewer::CreateMainWindow on top of ................................%d\n",widget);139 #endif140 137 fGLWindow = new QDialog(0,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 141 138 found = true; 142 #ifdef G4DEBUG_VIS_OGL143 printf("G4OpenGLQtViewer::CreateMainWindow after creation................................%d x %d should equal %d x %d\n",fGLWindow->width(),fGLWindow->height(),getWinWidth(), getWinHeight());144 #endif145 fGLWindow->resize(432,245);146 #ifdef G4DEBUG_VIS_OGL147 int sw = 0;148 int sh = 0;149 if (!fGLWindow->isMaximized() && !fGLWindow->isFullScreen()) {150 sw = fGLWindow->normalGeometry().width();151 sh = fGLWindow->normalGeometry().height();152 } else {153 sw = fGLWindow->frameGeometry().width();154 sh = fGLWindow->frameGeometry().height();155 }156 printf("G4OpenGLQtViewer::CreateMainWindow after creation-> set size................................%d x %d should equal %d x %d\n",sw,sh,432,245);157 158 #endif159 139 } 160 140 } 161 141 #endif 162 163 #ifdef G4DEBUG_VIS_OGL164 printf("G4OpenGLQtViewer::CreateMainWindow TOP................................%d x %d\n",fGLWindow->width(),fGLWindow->height());165 #endif166 #ifdef G4DEBUG_VIS_OGL167 printf("G4OpenGLQtViewer::CreateMainWindow................................%d x %d\n",glWidget->width(),glWidget->height());168 #endif169 170 142 171 143 #if QT_VERSION < 0x040000 … … 209 181 YPos = offset; 210 182 } 211 #ifdef G4DEBUG_VIS_OGL212 printf("G4OpenGLQtViewer::CreateMainWindow before size................................%d x %d should equal %d x %d\n",fGLWindow->width(),fGLWindow->height(),getWinWidth(), getWinHeight());213 #endif214 183 fGLWindow->resize(getWinWidth(), getWinHeight()); 215 #ifdef G4DEBUG_VIS_OGL216 printf("G4OpenGLQtViewer::CreateMainWindow TOP end................................%d x %d should equal %d x %d\n",fGLWindow->width(),fGLWindow->height(),getWinWidth(), getWinHeight());217 #endif218 219 220 fGLWindow->resize(432,245);221 #ifdef G4DEBUG_VIS_OGL222 printf("G4OpenGLQtViewer::CreateMainWindow TOP end 2................................%d x %d should equal %d x %d\n",fGLWindow->width(),fGLWindow->height(),432,245);223 #endif224 184 fGLWindow->move(fVP.GetWindowAbsoluteLocationHintX(QApplication::desktop()->width()),YPos); 225 185 fGLWindow->show(); 226 #ifdef G4DEBUG_VIS_OGL227 printf("G4OpenGLQtViewer::CreateMainWindow TOP end after show................................%d x %d\n",fGLWindow->width(),fGLWindow->height());228 #endif229 186 230 187 if(!fWindow) return; 231 #ifdef G4DEBUG_VIS_OGL232 printf("G4OpenGLQtViewer::CreateMainWindow glWidget END ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");233 #endif234 188 235 189 if (!fContextMenu) … … 279 233 ,fLaunchSpinDelay(100) 280 234 { 281 #ifdef G4DEBUG_VIS_OGL282 printf("G4OpenGLQtViewer::Creation ...............\n");283 #endif284 235 285 236 // launch Qt if not … … 1477 1428 { 1478 1429 glFlush (); 1430 1431 // L. Garnier 10/2009 : Not necessary and cause problems on mac OS X 10.6 1479 1432 // fWindow->swapBuffers (); 1480 1433 } -
trunk/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc
r1116 r1125 84 84 fProcessing2D (false), 85 85 fProcessingPolymarker(false) 86 { 87 #ifdef G4DEBUG_VIS_OGL 88 printf("INIT G4OpenGLSceneHandler (after G4OpenGLSceneHandler G4VSceneHandler (system, id, name)\n"); 89 #endif 90 } 86 {} 91 87 92 88 G4OpenGLSceneHandler::~G4OpenGLSceneHandler () … … 262 258 void G4OpenGLSceneHandler::AddPrimitive (const G4Text& text) { 263 259 264 #ifdef G4DEBUG_VIS_OGL265 printf ("G4OpenGLSceneHandler::AddPrimitives TEXT\n");266 #endif267 260 // Loads G4Atts for picking... 268 261 if (fpViewer->GetViewParameters().IsPicking()) { 269 #ifdef G4DEBUG_VIS_OGL270 printf ("G4OpenGLSceneHandler::AddPrimitives PICKING\n");271 #endif272 262 G4AttHolder* holder = new G4AttHolder; 273 263 LoadAtts(text, holder); … … 281 271 G4String textString = text.GetText(); 282 272 283 #ifdef G4DEBUG_VIS_OGL284 printf ("G4OpenGLSceneHandler::AddPrimitives TEXT -%s-X:%f Y:%f Z:%f- - Red:%f Green:%f Blue:%f--\n",textString.c_str(),position.x(),position.y(),position.z(),c.GetRed (), c.GetGreen (), c.GetBlue ());285 #endif286 287 273 G4int font_base = G4OpenGLFontBaseStore::GetFontBase(fpViewer,size); 288 #ifdef G4DEBUG_VIS_OGL289 printf ("G4OpenGLSceneHandler::AddPrimitives getFontBase ?size=%f-recu:%d-\n",size,font_base);290 #endif291 274 if (font_base < 0) { 292 #ifdef G4DEBUG_VIS_OGL293 printf ("G4OpenGLSceneHandler::AddPrimitives NO FONT BASE--\n");294 #endif295 275 296 #ifdef G4DEBUG_VIS_OGL297 printf ("G4OpenGLSceneHandler::AddPrimitives SPECIAL CASE\n");298 #endif299 276 G4OpenGLQtViewer* oGLSQtViewer = dynamic_cast<G4OpenGLQtViewer*>(fpViewer); 300 277 if (oGLSQtViewer) { … … 306 283 ++callCount; 307 284 if (callCount <= 10 || callCount%100 == 0) { 308 309 310 311 285 G4cout << 312 286 "G4OpenGLSceneHandler::AddPrimitive (const G4Text&) call count " … … 500 474 //Method for handling G4Polyhedron objects for drawing solids. 501 475 void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) { 476 502 477 // Assume all facets are planar convex quadrilaterals. 503 478 // Draw each facet individually 504 #ifdef G4DEBUG_VIS_OGL 505 printf ("G4OpenGLSceneHandler::AddPrimitives BEGIN poly\n"); 506 #endif 479 507 480 if (polyhedron.GetNoFacets() == 0) return; 508 #ifdef G4DEBUG_VIS_OGL509 printf ("G4OpenGLSceneHandler::AddPrimitives BEGIN 2 poly %d ++ %d\n",fpViewer,fpViewer->GetViewParameters().IsPicking());510 #endif511 481 512 482 // Loads G4Atts for picking... 513 483 if (fpViewer->GetViewParameters().IsPicking()) { 514 484 G4AttHolder* holder = new G4AttHolder; 515 const G4Visible vis;516 #ifdef G4DEBUG_VIS_OGL517 printf ("G4OpenGLSceneHandler::AddPrimitives poly %d\n",&polyhedron);518 #endif519 485 LoadAtts(polyhedron, holder); 520 // LoadAtts(polyhedron, holder);521 486 fPickMap[fPickName] = holder; 522 487 } -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc
r1124 r1125 47 47 QGLWidget() 48 48 { 49 #ifdef G4DEBUG_VIS_OGL50 printf("G4OpenGLStoredQtViewer::Creation...................before.............%d x %d\n",width(),height());51 #endif52 49 53 50 #if QT_VERSION < 0x040000 … … 73 70 #endif 74 71 fReadyToPaint = false; 75 #ifdef G4DEBUG_VIS_OGL76 printf("G4OpenGLStoredQtViewer::Initialize...................before.............%d x %d\n",width(),height());77 #endif78 72 CreateMainWindow (this,QString(fName)); 79 #ifdef G4DEBUG_VIS_OGL80 printf("G4OpenGLStoredQtViewer::Initialize...................after.............%d x %d\n",width(),height());81 #endif82 73 CreateFontLists (); 83 74 … … 213 204 ,int aHeight) 214 205 { 215 #ifdef G4DEBUG_VIS_OGL216 printf("G4OpenGLStoredQtViewer::resizeEvent..%d x %d vvvvvv\n",aWidth,aHeight);217 #endif218 #ifdef G4DEBUG_VIS_OGL219 printf("G4OpenGLStoredQtViewer::resizeEvent size ? %d x %d\n",width(),height());220 #endif221 206 // Set new size, it will be update when next Repaint()->SetView() called 222 207 ResizeWindow(aWidth,aHeight); 223 208 fHasToRepaint = sizeHasChanged(); 224 #ifdef G4DEBUG_VIS_OGL225 printf("G4OpenGLStoredQtViewer::resizeEvent.. ^^^^^^^^\n");226 #endif227 209 } 228 210 … … 241 223 // EXECEPT WHEN MOUSE MOVE EVENT 242 224 if ( !fHasToRepaint) { 243 #ifdef G4DEBUG_VIS_OGL 244 printf("G4OpenGLStoredQtViewer::paintGL size ? %d x %d\n",width(),height()); 245 #endif 225 // L. Garnier : Trap to get the size with mac OSX 10.6 and Qt 4.6(devel) 226 // Tested on Qt4.5 on mac, 4.4 on windows, 4.5 on unbuntu 227 int sw = 0; 228 int sh = 0; 229 if (!isMaximized() && !isFullScreen()) { 230 sw = normalGeometry().width(); 231 sh = normalGeometry().height(); 232 } else { 233 sw = frameGeometry().width(); 234 sh = frameGeometry().height(); 235 } 246 236 #ifdef G4DEBUG_VIS_OGL 247 237 printf("G4OpenGLStoredQtViewer::paintGL %d = %d %d = %d\n",getWinWidth(),width(),getWinHeight(),height()); 248 int sw = 0; 249 int sh = 0; 250 if (!isMaximized() && !isFullScreen()) { 251 sw = normalGeometry().width(); 252 sh = normalGeometry().height(); 253 } else { 254 sw = frameGeometry().width(); 255 sh = frameGeometry().height(); 256 } 257 printf("G4OpenGLStoredQtViewer::paintGL ................................%d x %d \n",sw,sh); 258 259 #endif 260 if (((getWinWidth() == (unsigned int)width())) &&(getWinHeight() == (unsigned int) height())) { 238 printf("G4OpenGLStoredQtViewer::paintGL ................................%d x %d \n",sw,sh); 239 240 #endif 241 if (((getWinWidth() == (unsigned int)sw) &&(getWinHeight() == (unsigned int)sh)) { 261 242 return; 262 243 } … … 318 299 } 319 300 320 321 void G4OpenGLStoredQtViewer::paintEvent ( QPaintEvent * event )322 {323 #ifdef G4DEBUG_VIS_OGL324 printf("G4OpenGLStoredQtViewer::paintEvent...................repaint.............%d x %d\n",width(),height());325 #endif326 QGLWidget::paintEvent(event);327 }328 329 301 void G4OpenGLStoredQtViewer::updateQWidget() { 330 302 fHasToRepaint= true; -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc
r1121 r1125 41 41 #include "G4Text.hh" 42 42 #include "G4Circle.hh" 43 #include "G4UnitsTable.hh" // for G4BestUnit43 #include "G4UnitsTable.hh" 44 44 #include "G4Scene.hh" 45 45 … … 50 50 fG4OpenGLStoredSceneHandler (sceneHandler) 51 51 { 52 #ifdef G4DEBUG_VIS_OGL53 printf("G4OpenGLStoredViewer::Creation ...............\n");54 #endif55 52 fLastVP = fDefaultVP; // Not sure if this gets executed before or 56 53 // after G4VViewer::G4VViewer!! Doesn't matter much. -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc
r1104 r1125 61 61 62 62 void G4OpenGLStoredXmViewer::Initialise () { 63 #ifdef G4DEBUG_VIS_OGL64 printf("G4OpenGLStoredXmViewer::Initialise \n");65 #endif66 63 67 64 CreateGLXContext (vi_stored); -
trunk/source/visualization/OpenGL/src/G4OpenGLViewer.cc
r1124 r1125 139 139 140 140 void G4OpenGLViewer::ResizeWindow(unsigned int aWidth, unsigned int aHeight) { 141 #ifdef G4DEBUG_VIS_OGL142 printf("G4OpenGLViewer::ResizeWindow %d x %d\n",aWidth, aHeight);143 #endif144 141 if ((fWinSize_x != aWidth) || (fWinSize_y != aHeight)) { 145 142 fWinSize_x = aWidth; … … 149 146 fSizeHasChanged = false; 150 147 } 151 #ifdef G4DEBUG_VIS_OGL152 printf("G4OpenGLViewer::ResizeWindow END changed=%d %d x %d\n",fSizeHasChanged,fWinSize_x,fWinSize_y);153 #endif154 148 } 155 149 -
trunk/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc
r1049 r1125 629 629 frame // widget to be used for work window 630 630 ); 631 631 632 632 XtRealizeWidget(shell); 633 633 … … 647 647 glXMakeCurrent (dpy, win, cx); 648 648 649 649 // This should be add AFTER glXMakeCurrent done because it will fire a resizeCallback 650 650 XtAddCallback (glxarea, 651 651 XmNresizeCallback, 652 652 resize_callback, 653 653 this); 654 654 655 655 XtAddCallback (glxarea,
Note: See TracChangeset
for help on using the changeset viewer.