Changeset 675


Ignore:
Timestamp:
Jan 10, 2008, 2:51:15 PM (16 years ago)
Author:
garnier
Message:

marche des que l on a lance un run : dessine un rubber band. Pb de alpha channel soupsonne

Location:
trunk/geant4/visualization/OpenGL/src
Files:
2 edited

Legend:

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

    r673 r675  
    13551355  glRenderMode (GL_FEEDBACK);
    13561356 
    1357   glViewport (0, 0, aWidth,aHeight);
     1357  int side = qMin(aWidth, aHeight);
     1358  glViewport((aWidth - side) / 2, (aHeight - side) / 2, side, side);
    13581359  DrawView();
    13591360
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc

    r673 r675  
    5252 G4OpenGLQtViewer (sceneHandler),
    5353 G4OpenGLStoredViewer (sceneHandler),
    54  QGLWidget()                      // FIXME : gerer le pb du parent !
     54 QGLWidget(QGLFormat(QGL::SampleBuffers))             // FIXME : gerer le pb du parent !
    5555 {
    5656   zoomAction = false;
     
    8686  printf("G4OpenGLStoredQtViewer::Initialise () 3\n");
    8787#endif
    88   CreateFontLists ();  // FIXME Does nothing!
     88  //  CreateFontLists ();  // FIXME Does nothing!
    8989 
    9090#ifdef GEANT4_QT_DEBUG
     
    101101  ShowView();
    102102  FinishView();
     103#ifdef GEANT4_QT_DEBUG
     104  printf("G4OpenGLStoredQtViewer::Initialise () 4\n");
     105#endif
    103106}
    104107
     
    128131
    129132void G4OpenGLStoredQtViewer::DrawView () {
    130 
    131133#ifdef GEANT4_QT_DEBUG
    132134  printf("G4OpenGLStoredQtViewer::DrawView %d %d   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
     
    257259 {
    258260   if (zoomAction) {
     261     //     glEnable (GL_DEPTH_TEST);
     262     //     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     263
     264     setupViewport(width(),height());     
     265     SetView();
     266     ClearView (); //ok, put the background correct
     267
    259268     QPainter painter;
    260269     painter.begin(this);
     270     //      painter.setCompositionMode(QPainter::CompositionMode_DestinationOver);
     271     //      painter.setCompositionMode(QPainter::CompositionMode_SourceOver); // diagonale en pointillé
     272     //     painter.setCompositionMode(QPainter::CompositionMode_DestinationOver); // blanc
     273     //     painter.setCompositionMode(QPainter::CompositionMode_Clear);// diagonale noire
     274     //     painter.setCompositionMode(QPainter::CompositionMode_Source); // diagonale en pointillé
     275     //     painter.setCompositionMode(QPainter::CompositionMode_Destination); // blanc
     276     //     painter.setCompositionMode(QPainter::CompositionMode_SourceIn); // blanc ?
     277     //     painter.setCompositionMode(QPainter::CompositionMode_DestinationIn); // blanc
     278     //     painter.setCompositionMode(QPainter::CompositionMode_SourceOut); // digonale noire
     279     //     painter.setCompositionMode(QPainter::CompositionMode_DestinationOut); // diagonale noire
     280     //     painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); // diagonale noire
     281     //     painter.setCompositionMode(QPainter::CompositionMode_DestinationAtop); // blanc
     282     //     painter.setCompositionMode(QPainter::CompositionMode_Xor); // diagonale noire
    261283     //     painter.setRenderHint(QPainter::Antialiasing);
    262      QColor bg = QColor(glBufferImage.pixel(0,0));
    263      printf("%d+%d+%d+%d %d+%d+%d+%d",bg.red(),bg.green(),bg.blue(),bg.alpha(),qAlpha(glBufferImage.pixel(0,0)),qRed(glBufferImage.pixel(0,0)),qGreen(glBufferImage.pixel(0,0)),qBlue(glBufferImage.pixel(0,0)));
    264      painter.setBackground(QBrush(bg));
    265      //     painter.drawRect(10,10,50,80);
    266 //      QImage test = grabFrameBuffer().copy();
    267 //      painter.drawImage(0, 0,test);
     284     //         painter.setBackgroundMode(Qt::OpaqueMode);
     285          painter.drawImage(0, 0, glBufferImage);
     286     
     287     //     painter.setRenderHint(QPainter::Antialiasing);
     288     //      QColor bg = QColor(glBufferImage.pixel(0,0));
     289     //      printf("%d+%d+%d+%d %d+%d+%d+%d",bg.red(),bg.green(),bg.blue(),bg.alpha(),qAlpha(glBufferImage.pixel(0,0)),qRed(glBufferImage.pixel(0,0)),qGreen(glBufferImage.pixel(0,0)),qBlue(glBufferImage.pixel(0,0)));
     290     //      painter.setBackground(QBrush(bg));
     291     //      //     painter.drawRect(10,10,50,80);
     292     // //      QImage test = grabFrameBuffer().copy();
     293     // //      painter.drawImage(0, 0,test);
    268294     for (int ay=0;ay<glBufferImage.height();ay++) {
    269295       for (int ax=0;ax<glBufferImage.width();ax++) {
    270          if(QColor(glBufferImage.pixel(ax,ay)) != bg) {
    271 //            painter.setPen(QColor(glBufferImage.pixel(ax,ay)));
    272 //            painter.drawPoint(ax,glBufferImage.height()-ay);
    273          } else {
    274            printf("o");
    275          }
     296         //         if(QColor(glBufferImage.pixel(ax,ay)) != bg) {
     297         //.           painter.setPen(QColor(glBufferImage.pixel(ax,ay)));
     298         //.           painter.drawPoint(ax,ay);
     299           //          } else {
     300           //            printf("o");
     301           //          }
    276302         //          printf("%d+%d+%d+%d ",QColor(glBufferImage.pixel(ax,ay)).red(),QColor(glBufferImage.pixel(ax,ay)).green(),QColor(glBufferImage.pixel(ax,ay)).blue(),QColor(glBufferImage.pixel(ax,ay)).alpha());
    277 //          if (glBufferImage.pixel(ax,ay) == 255) {
    278 //            test.setPixel(ax,ay,1);
    279 //          } else {
    280 //            test.setPixel(ax,ay,0);
    281 //          }
     303         //          if (glBufferImage.pixel(ax,ay) == 255) {
     304         //            test.setPixel(ax,ay,1);
     305         //          } else {
     306         //            test.setPixel(ax,ay,0);
     307         //          }
    282308       }
    283309       //       printf("\n");
    284310     }
    285 //      for (int ay=0;ay<test.height();ay++) {
    286 //        for (int ax=0;ax<test.width();ax++) {
    287 //          if (test.pixel(ax,ay) == 1) {
    288 //            printf(".");
    289 //          } else if (!test.pixel(ax,ay)) {
    290 //            printf("X");
    291 //          } else {
    292 //            printf("%d",test.pixel(ax,ay));
    293 //          }
    294 //        }
    295 //        printf("\n");
    296 //      }
     311     // //      for (int ay=0;ay<test.height();ay++) {
     312     // //        for (int ax=0;ax<test.width();ax++) {
     313     // //          if (test.pixel(ax,ay) == 1) {
     314     // //            printf(".");
     315     // //          } else if (!test.pixel(ax,ay)) {
     316     // //            printf("X");
     317     // //          } else {
     318     // //            printf("%d",test.pixel(ax,ay));
     319     // //          }
     320     // //        }
     321     // //        printf("\n");
     322     // //      }
    297323     
    298324     //     painter.drawImage(0, 0, glBufferImage);
    299325     //     painter.drawImage(0, 0, test,0,0,-1,-1,Qt::ColorOnly);
    300326     
    301      printf("paint event zoom \n");
    302      //     painter.drawRect(beginZoom.x(),beginZoom.y(),endZoom.x()-beginZoom.x(),endZoom.y()-beginZoom.y());
     327#ifdef GEANT4_QT_DEBUG
     328       printf("G4OpenGLStoredQtViewer::paintGL ============  zoom event\n");
     329#endif
     330       painter.setBrush(Qt::NoBrush);
     331       painter.setPen(Qt::red);
     332       painter.setPen(Qt::DashLine);
     333       painter.drawRect(beginZoom.x(),beginZoom.y(),endZoom.x()-beginZoom.x(),endZoom.y()-beginZoom.y());
    303334     painter.end();
    304335   } else {
     
    346377     hasToRepaint =false;
    347378     
     379   }
    348380#ifdef GEANT4_QT_DEBUG
    349381     printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n",nbPaint,readyToPaint);
    350382#endif
    351    }
    352383 }
    353384
     
    368399  setMouseTracking(true);
    369400  zoomAction=true;
    370   makeCurrent();
    371   glBufferImage = QImage( width(), height(), QImage::Format_ARGB32_Premultiplied );
    372   glReadPixels( 0, 0, width(), height(), GL_RGBA, GL_UNSIGNED_BYTE, glBufferImage.bits() );
    373   //  glBufferImage = grabFrameBuffer(false).convertToFormat(QImage::Format_RGB16); //QImage::Format_ARGB32_Premultiplied
     401  //  makeCurrent();
     402//   glBufferImage = QImage( width(), height(), QImage::Format_ARGB32_Premultiplied );
     403//   glReadPixels( 0, 0, width(), height(), GL_RGBA, GL_UNSIGNED_BYTE, glBufferImage.bits() );
     404  glBufferImage = grabFrameBuffer().convertToFormat(QImage::Format_ARGB32_Premultiplied);
    374405 
    375406#ifdef GEANT4_QT_DEBUG
Note: See TracChangeset for help on using the changeset viewer.