Changeset 1039 for trunk/source
- Timestamp:
- May 12, 2009, 5:26:25 PM (17 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 8 edited
-
include/G4OpenGLViewer.hh (modified) (6 diffs)
-
src/G4OpenGLImmediateQtViewer.cc (modified) (9 diffs)
-
src/G4OpenGLQtViewer.cc (modified) (2 diffs)
-
src/G4OpenGLStoredQtViewer.cc (modified) (9 diffs)
-
src/G4OpenGLViewer.cc (modified) (8 diffs)
-
src/G4OpenGLXViewer.cc (modified) (1 diff)
-
src/G4OpenGLXmViewer.cc (modified) (1 diff)
-
src/G4OpenGLXmWindowHandlingCallbacks.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/include/G4OpenGLViewer.hh
r1038 r1039 59 59 virtual ~G4OpenGLViewer (); 60 60 void SetView (); 61 // Set view and lights, resize62 void RepaintGLView();63 // Refresh the view if needed64 61 void HaloingFirstPass (); 65 62 void HaloingSecondPass (); … … 68 65 void HLRThirdPass (); 69 66 void InitializeGLView (); 70 void ResizeGLView( unsigned int, unsigned int);71 // Resize the view and repaint if necessary67 void ResizeGLView(); 68 void ResizeWindow(unsigned int, unsigned int); 72 69 void Pick(GLdouble x, GLdouble y); 73 70 virtual void CreateFontLists () {} … … 75 72 //////////////////////////////Vectored PostScript production functions/// 76 73 void printEPS(); 77 // print EPS file. Depending of fVectoredPs, it will print Vectored or not 78 74 // print EPS file. Depending of fVectoredPs, it will print Vectored or not 75 79 76 unsigned int getWinWidth(); 77 G4bool sizeHasChanged(); 78 // return true if size has change since last redraw 80 79 unsigned int getWinHeight(); 81 80 GLdouble getSceneNearWidth(); … … 87 86 G4int fPrintSizeX; 88 87 G4int fPrintSizeY; 89 G4bool fNeedRepaint;90 // 0 : No need to repaint 1: Need Repaint91 88 92 89 G4OpenGLSceneHandler& fOpenGLSceneHandler; … … 109 106 110 107 private : 108 unsigned int fWinSize_x, fWinSize_y; 111 109 G4float fPointSize; 110 G4bool fSizeHasChanged; 111 // size of the OpenGL frame 112 112 bool printGl2PS(); 113 void ResizeGLView();114 113 GLubyte* grabPixels (int inColor, 115 114 unsigned int width, … … 120 119 bool printVectoredEPS(); 121 120 // print vectored EPS files 122 unsigned int fWinSize_x, fWinSize_y;123 // size of the OpenGL frame124 121 }; 125 122 -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc
r1038 r1039 56 56 setFocusPolicy(Qt::StrongFocus); // enable keybord events 57 57 #endif 58 59 fNeedRepaint = false; 58 hasToRepaint =false; 60 59 61 60 if (fViewId < 0) return; // In case error in base class instantiation. … … 74 73 CreateFontLists (); 75 74 76 #ifdef G4DEBUG_VIS_OGL77 printf("G4OpenGLImmediateQtViewer::Initialise END\n");78 #endif79 75 readyToPaint = true; 80 #ifdef G4DEBUG_VIS_OGL81 printf("G4OpenGLImmediateQtViewer::Initialise END 2\n");82 #endif83 84 76 } 85 77 86 78 void G4OpenGLImmediateQtViewer::initializeGL () { 87 #ifdef G4DEBUG_VIS_OGL88 printf("G4OpenGLImmediateQtViewer::initializeGL\n");89 #endif90 79 91 80 InitializeGLView (); 92 #ifdef G4DEBUG_VIS_OGL93 printf("G4OpenGLImmediateQtViewer::initializeGL middle\n");94 #endif95 81 96 82 … … 106 92 107 93 if (fSceneHandler.GetScene() == 0) { 108 fNeedRepaint =false;94 hasToRepaint =false; 109 95 } else { 110 fNeedRepaint = true; 111 } 112 #ifdef G4DEBUG_VIS_OGL 113 printf("G4OpenGLImmediateQtViewer::initializeGL END\n"); 114 #endif 96 hasToRepaint =true; 97 } 115 98 116 99 } … … 123 106 printf("G4OpenGLImmediateQtViewer::DrawView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n"); 124 107 #endif 125 126 // avoid problems at initialisation 127 if (readyToPaint) { 128 ComputeView(); 129 } 130 108 // That's no the same logic as Stored Viewer, I don't know why... 109 // see G4OpenGLStoredQtViewer::DrawView for more informations 110 111 updateQWidget(); 131 112 #ifdef G4DEBUG_VIS_OGL 132 113 printf("G4OpenGLImmediateQtViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); … … 138 119 139 120 #ifdef G4DEBUG_VIS_OGL 140 printf("G4OpenGLImmediateQtViewer::ComputeView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");121 printf("G4OpenGLImmediateQtViewer::ComputeView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",getWinWidth(), getWinHeight()); 141 122 #endif 142 123 makeCurrent(); … … 169 150 170 151 #ifdef G4DEBUG_VIS_OGL 171 printf("G4OpenGLImmediateQtViewer::ComputeView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");172 #endif 173 fNeedRepaint = false;152 printf("G4OpenGLImmediateQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",getWinWidth(), getWinHeight()); 153 #endif 154 hasToRepaint = true; 174 155 } 175 156 … … 194 175 ,int aHeight) 195 176 { 196 #ifdef G4DEBUG_VIS_OGL 197 printf("\n\nG4OpenGLImmediateQtViewer::resizeGL VVVVVV %d %d ??\n",aWidth,aHeight); 198 #endif 199 ResizeGLView(aWidth,aHeight); 200 #ifdef G4DEBUG_VIS_OGL 201 printf("\n\nG4OpenGLImmediateQtViewer::resizeGL END\n"); 202 #endif 177 ResizeWindow(aWidth,aHeight); 178 hasToRepaint = sizeHasChanged(); 203 179 } 204 180 … … 206 182 void G4OpenGLImmediateQtViewer::paintGL() 207 183 { 208 209 184 #ifdef G4DEBUG_VIS_OGL 210 185 printf("\n\nG4OpenGLImmediateQtViewer::paintGL ??\n"); 211 186 #endif 212 if (fNeedRepaint) { 213 #ifdef G4DEBUG_VIS_OGL 214 printf("\n\nG4OpenGLImmediateQtViewer::Need ??\n"); 215 #endif 216 if (readyToPaint) { 217 #ifdef G4DEBUG_VIS_OGL 218 printf("\n\nG4OpenGLImmediateQtViewer::ready ??\n"); 219 #endif 220 RepaintGLView(); 221 fNeedRepaint = false; 187 if (!readyToPaint) { 188 readyToPaint= true; 189 return; 190 } 191 // DO NOT RESIZE IF SIZE HAS NOT CHANGE 192 if ( !hasToRepaint) { 193 if (((getWinWidth() == (unsigned int)width())) &&(getWinHeight() == (unsigned int) height())) { 194 return; 222 195 } 223 #ifdef G4DEBUG_VIS_OGL 224 else 225 printf("\n\nG4OpenGLImmediateQtViewer::NOT ready ??\n"); 226 #endif 227 } 228 #ifdef G4DEBUG_VIS_OGL 229 else 230 printf("\n\nG4OpenGLImmediateQtViewer::NOT need ??\n"); 231 #endif 232 233 #ifdef G4DEBUG_VIS_OGL 234 printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready\n\n\n"); 196 } 197 #ifdef G4DEBUG_VIS_OGL 198 printf("G4OpenGLImmediateQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ready %d\n",readyToPaint); 199 #endif 200 201 SetView(); 202 203 ClearView (); //ok, put the background correct 204 ComputeView(); 205 206 hasToRepaint = false; // could be set to false by ComputeView 207 208 #ifdef G4DEBUG_VIS_OGL 209 printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready %d\n\n\n",readyToPaint); 235 210 #endif 236 211 } … … 277 252 278 253 void G4OpenGLImmediateQtViewer::updateQWidget() { 279 fNeedRepaint= true;254 hasToRepaint= true; 280 255 updateGL(); 281 fNeedRepaint= false;256 hasToRepaint= false; 282 257 } 283 258 -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r1038 r1039 173 173 GLWindow->setWindowTitle( name); 174 174 #endif 175 ResizeWindow(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY()); 175 176 176 177 //useful for MACOSX, we have to compt the menuBar height … … 182 183 YPos = offset; 183 184 } 184 GLWindow->resize(getWinWidth(), getWinHeight());185 GLWindow->resize(getWinWidth(), getWinHeight()); 185 186 GLWindow->move(fVP.GetWindowAbsoluteLocationHintX(QApplication::desktop()->width()),YPos); 186 187 GLWindow->show(); -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc
r1038 r1039 57 57 setFocusPolicy(Qt::StrongFocus); // enable keybord events 58 58 #endif 59 fNeedRepaint =false;59 hasToRepaint =false; 60 60 61 61 if (fViewId < 0) return; // In case error in base class instantiation. … … 78 78 79 79 readyToPaint = true; 80 #ifdef G4DEBUG_VIS_OGL81 printf("G4OpenGLStoredQtViewer::Initialise END\n");82 #endif83 80 } 84 81 … … 99 96 100 97 if (fSceneHandler.GetScene() == 0) { 101 fNeedRepaint =false;98 hasToRepaint =false; 102 99 } else { 103 fNeedRepaint =true;100 hasToRepaint =true; 104 101 } 105 102 … … 120 117 // And we loose the redraw of things ! 121 118 122 // avoid problems at initialisation 123 if (readyToPaint) { 124 ComputeView(); 125 } 126 119 ComputeView(); 127 120 #ifdef G4DEBUG_VIS_OGL 128 121 printf("G4OpenGLStoredQtViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); … … 133 126 134 127 #ifdef G4DEBUG_VIS_OGL 135 printf("G4OpenGLStoredQtViewer::ComputeView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");128 printf("G4OpenGLStoredQtViewer::ComputeView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",getWinWidth(), getWinHeight()); 136 129 #endif 137 130 makeCurrent(); … … 202 195 203 196 #ifdef G4DEBUG_VIS_OGL 204 printf("G4OpenGLStoredQtViewer::ComputeView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); 205 #endif 197 printf("G4OpenGLStoredQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",getWinWidth(), getWinHeight()); 198 #endif 199 hasToRepaint =true; 206 200 } 207 201 … … 211 205 */ 212 206 void G4OpenGLStoredQtViewer::resizeGL( 213 int aWidth214 ,int aHeight)207 int aWidth 208 ,int aHeight) 215 209 { 216 210 // Set new size, it will be update when next Repaint()->SetView() called 217 Resize GLView(aWidth,aHeight);218 // fNeedRepaint = true;211 ResizeWindow(aWidth,aHeight); 212 hasToRepaint = sizeHasChanged(); 219 213 } 220 214 … … 229 223 return; 230 224 } 231 RepaintGLView(); 232 225 // DO NOT RESIZE IF SIZE HAS NOT CHANGE : 226 // WHEN CLICK ON THE FRAME FOR EXAMPLE 227 // EXECEPT WHEN MOUSE MOVE EVENT 228 if ( !hasToRepaint) { 229 if (((getWinWidth() == (unsigned int)width())) &&(getWinHeight() == (unsigned int) height())) { 230 return; 231 } 232 } 233 #ifdef G4DEBUG_VIS_OGL 234 printf("G4OpenGLStoredQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ready %d\n",readyToPaint); 235 #endif 236 237 SetView(); 238 239 ClearView (); //ok, put the background correct 240 ComputeView(); 241 242 hasToRepaint =false; 243 233 244 #ifdef G4DEBUG_VIS_OGL 234 245 printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready %d\n",readyToPaint); … … 277 288 278 289 void G4OpenGLStoredQtViewer::updateQWidget() { 279 fNeedRepaint= true;290 hasToRepaint= true; 280 291 updateGL(); 281 fNeedRepaint= false;292 hasToRepaint= false; 282 293 } 283 294 -
trunk/source/visualization/OpenGL/src/G4OpenGLViewer.cc
r1038 r1039 85 85 fDisplayLightFrontGreen(1.), 86 86 fDisplayLightFrontBlue(0.), 87 fPointSize (0) 87 fPointSize (0), 88 fSizeHasChanged(0) 88 89 { 89 90 // Make changes to view parameters for OpenGL... … … 135 136 136 137 137 void G4OpenGLViewer::ResizeGLView(unsigned int aWidth,unsigned int aHeight) 138 { 138 void G4OpenGLViewer::ResizeWindow(unsigned int aWidth, unsigned int aHeight) { 139 139 if ((fWinSize_x != aWidth) || (fWinSize_y != aHeight)) { 140 140 fWinSize_x = aWidth; 141 141 fWinSize_y = aHeight; 142 ResizeGLView(); 143 } 144 } 145 146 void G4OpenGLViewer::RepaintGLView() 147 { 148 // DO NOT REPAINT IF NO REFRESH IS NEED 149 // if ( !fNeedRepaint) { 150 // return; 151 // } 152 #ifdef G4DEBUG_VIS_OGL 153 printf("G4OpenGLViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV \n"); 154 #endif 155 156 fNeedRepaint = true; // could be set to false by ComputeView 157 SetView(); 158 ClearView (); 159 DrawView(); 160 161 fNeedRepaint = false; // could be set to false by ComputeView 162 163 #ifdef G4DEBUG_VIS_OGL 164 printf("G4OpenGLViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); 165 #endif 166 142 fSizeHasChanged = true; 143 } else { 144 fSizeHasChanged = false; 145 } 167 146 } 168 147 … … 222 201 #endif 223 202 glViewport(X, Y, side, side); 224 225 RepaintGLView();226 227 203 // glViewport(0, 0, fWinSize_x,fWinSize_y); 228 204 229 205 230 }231 232 233 unsigned int G4OpenGLViewer::getWinWidth () {234 return fWinSize_x;235 }236 237 unsigned int G4OpenGLViewer::getWinHeight () {238 return fWinSize_y;239 206 } 240 207 … … 285 252 286 253 // FIXME 287 ResizeGLView( fWinSize_x,fWinSize_y);254 ResizeGLView(); 288 255 //SHOULD SetWindowsSizeHint()... 289 256 … … 665 632 } 666 633 667 //width=8192;668 //height=8192;634 width=8192; 635 height=8192; 669 636 670 637 if (!fGL2PSAction) return false; … … 675 642 int Y = fWinSize_y; 676 643 677 ResizeGLView(width,height); 644 fWinSize_x = width; 645 fWinSize_y = height; 646 ResizeGLView(); 678 647 if (fGL2PSAction->enableFileWriting()) { 679 648 … … 687 656 } 688 657 689 ResizeGLView(X,Y); 658 fWinSize_x = X; 659 fWinSize_y = Y; 660 ResizeGLView(); 690 661 691 662 // Reset for next time (useful is size change) … … 694 665 695 666 return true; 667 } 668 669 unsigned int G4OpenGLViewer::getWinWidth() { 670 return fWinSize_x; 671 } 672 673 unsigned int G4OpenGLViewer::getWinHeight() { 674 return fWinSize_y; 675 } 676 677 G4bool G4OpenGLViewer::sizeHasChanged() { 678 return fSizeHasChanged; 696 679 } 697 680 -
trunk/source/visualization/OpenGL/src/G4OpenGLXViewer.cc
r1037 r1039 231 231 size_hints = XAllocSizeHints(); 232 232 233 ResizeWindow(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY()); 234 233 235 G4int x_origin = fVP.GetWindowAbsoluteLocationHintX(DisplayWidth(dpy, vi -> screen)); 234 236 -
trunk/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc
r1037 r1039 146 146 borcol = XBlackPixelOfScreen (XtScreen(shell)); 147 147 148 ResizeWindow(fVP.GetWindowSizeHintX(),fVP.GetWindowSizeHintY()); 149 148 150 G4int x_origin = fVP.GetWindowAbsoluteLocationHintX(DisplayWidth(dpy, vi -> screen)); 149 151 -
trunk/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc
r1038 r1039 62 62 NULL); 63 63 64 pView->ResizeGLView((G4int) width,(G4int) height); 65 // will call pView->RepaintGLView() if necessary; 64 pView->ResizeWindow(width,height); 66 65 67 66 glXMakeCurrent (pView->dpy, XtWindow(pView->glxarea), pView->cx); … … 70 69 printf("G4OpenGLXmViewer::expose_callback\n"); 71 70 #endif 72 71 pView->SetView (); 72 pView->ClearView (); 73 pView->DrawView (); 73 74 } 74 75
Note:
See TracChangeset
for help on using the changeset viewer.
