Ignore:
Timestamp:
Jul 5, 2007, 5:54:48 PM (17 years ago)
Author:
garnier
Message:

r681@mac-90108: laurentgarnier | 2007-07-05 17:58:13 +0200
mise a jour de la visu OpenGl. Ne marche pas encore

Location:
trunk/geant4/visualization/OpenGL
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/geant4/visualization/OpenGL/GNUmakefile

    r529 r539  
    2828CPPFLAGS += -I$(G4BASE)/intercoms/include
    2929CPPFLAGS += -I$(G4BASE)/interfaces/common/include
     30CPPFLAGS += -I$(G4BASE)/interfaces/basic/include
    3031CPPFLAGS += -I$(G4BASE)/tracking/include
    3132CPPFLAGS += -I$(G4BASE)/digits_hits/hits/include
  • trunk/geant4/visualization/OpenGL/include/G4OpenGLImmediateQtViewer.hh

    r533 r539  
    4040#include "G4OpenGLImmediateViewer.hh"
    4141#include "G4OpenGLQtViewer.hh"
     42#include <QGLWidget>
    4243
    4344#include "globals.hh"
     
    4647
    4748class G4OpenGLImmediateQtViewer:
    48 public G4OpenGLQtViewer, public G4OpenGLImmediateViewer{
     49  public G4OpenGLQtViewer, public G4OpenGLImmediateViewer, public QGLWidget {
    4950 
    5051public:
     
    5455  void DrawView ();
    5556  void FinishView ();
     57  void resizeGL(int width,int height);
     58  void paintGL();
    5659};
    5760
  • trunk/geant4/visualization/OpenGL/include/G4OpenGLQtViewer.hh

    r536 r539  
    5959  void CreateGLQtContext ();
    6060  virtual void CreateMainWindow ();
     61  void CreateMainWindow (QGLWidget*);
    6162protected:
    6263  G4int WinSize_x;
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLImmediateQt.cc

    r538 r539  
    2828// GEANT4 tag $Name: geant4-08-02-patch-01 $
    2929//
    30 //
     30// 
    3131// OpenGLImmediateQt graphics system factory.
    3232
     
    4242
    4343G4OpenGLImmediateQt::G4OpenGLImmediateQt ():
    44         G4VGraphicsSystem ("OpenGLImmediateQt",
    45                            "OGLIQT",
    46                            G4VisFeaturesOfOpenGLIQt (),
    47                    G4VGraphicsSystem::threeD) {
    48     G4OpenGLViewerMessenger::GetInstance();
     44  G4VGraphicsSystem ("OpenGLImmediateQt",
     45                     "OGLIQT",
     46                     G4VisFeaturesOfOpenGLIQt (),
     47                     G4VGraphicsSystem::threeD)
     48{
     49  G4OpenGLViewerMessenger::GetInstance();
    4950}
    5051
    5152G4VSceneHandler* G4OpenGLImmediateQt::CreateSceneHandler
    5253(const G4String& name) {
    53     G4VSceneHandler* pScene = new G4OpenGLImmediateSceneHandler (*this, name);
    54     return    pScene;
     54  G4VSceneHandler* pScene = new G4OpenGLImmediateSceneHandler (*this, name);
     55  return    pScene;
    5556}
    5657
    5758G4VViewer* G4OpenGLImmediateQt::CreateViewer
    5859(G4VSceneHandler& scene, const G4String& name) {
    59     G4VViewer* pView =
    60         new G4OpenGLImmediateQtViewer
    61         ((G4OpenGLImmediateSceneHandler&) scene, name);
    62     if (pView) {
    63         if (pView -> GetViewId () < 0) {
    64             G4cerr << "G4OpenGLImmediateQt::CreateViewer: error flagged by negative"
    65             " view id in G4OpenGLImmediateQtViewer creation."
    66             "\n Destroying view and returning null pointer."
    67             << G4endl;
    68             delete pView;
    69             pView = 0;
    70         }
    71     } else {
    72         G4cerr << "G4OpenGLImmediateQt::CreateViewer: null pointer on"
    73         " new G4OpenGLImmediateQtViewer." << G4endl;
     60  G4VViewer* pView =
     61    new G4OpenGLImmediateQtViewer
     62    ((G4OpenGLImmediateSceneHandler&) scene, name);
     63  if (pView) {
     64    if (pView -> GetViewId () < 0) {
     65      G4cerr << "G4OpenGLImmediateQt::CreateViewer: error flagged by negative"
     66        " view id in G4OpenGLImmediateQtViewer creation."
     67        "\n Destroying view and returning null pointer."
     68           << G4endl;
     69      delete pView;
     70      pView = 0;
    7471    }
    75     return pView;
     72  }
     73  else {
     74    G4cerr << "G4OpenGLImmediateQt::CreateViewer: null pointer on"
     75      " new G4OpenGLImmediateQtViewer." << G4endl;
     76  }
     77   return pView;
    7678}
    7779
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc

    r536 r539  
    2828// GEANT4 tag $Name: geant4-08-02-patch-01 $
    2929//
    30 // 
     30//
    3131// Class G4OpenGLImmediateQtViewer : a class derived from G4OpenGLQtViewer and
    3232//                                G4OpenGLImmediateViewer.
     
    5353// ensure a suitable window was found
    5454
     55  printf("G4OpenGLImmediateQtViewer::Initialise () 1\n");
    5556  CreateGLQtContext ();
    56   CreateMainWindow ();
     57  CreateMainWindow (this);
    5758  CreateFontLists ();
    5859
     
    7172void G4OpenGLImmediateQtViewer::DrawView () {
    7273
     74  printf("G4OpenGLImmediateQtViewer::DrawView %d %d\n",WinSize_x, WinSize_y);
    7375  // If a double buffer context has been forced upon us, ignore the
    7476  // back buffer for this OpenGLImmediate view.
     
    100102}
    101103
     104
    102105//////////////////////////////////////////////////////////////////////////////
    103106void G4OpenGLImmediateQtViewer::FinishView (
     
    106109//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
    107110{
     111  printf("G4OpenGLImmediateQtViewer::FinishView \n");
    108112  //    if(!fHDC) return;
    109113
     
    118122}
    119123
     124
     125void G4OpenGLImmediateQtViewer::resizeGL(
     126 int width
     127,int height)
     128{
     129  printf("G4OpenGLImmediateQtViewer::resizeGL \n");
     130  int side = qMin(width, height);
     131  glViewport((width - side) / 2, (height - side) / 2, side, side);
     132  glMatrixMode(GL_PROJECTION);
     133  glLoadIdentity();
     134  glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0);
     135  glMatrixMode(GL_MODELVIEW);
     136}
     137
     138void G4OpenGLImmediateQtViewer::paintGL()
     139 {
     140  printf("G4OpenGLImmediateQtViewer::paintGL \n");
     141  // FIXME
     142  //  DrawView();
     143  //  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     144  //  glLoadIdentity();
     145  //  glTranslated(0.0, 0.0, -10.0);
     146 }
    120147#endif
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r538 r539  
    4545#include "G4Normal3D.hh"
    4646
     47#include "G4Qt.hh"
     48#include "G4UIManager.hh"
     49#include <QtGui/qboxlayout.h>
     50#include <QtGui/qdialog.h>
     51#include <QtGui/qpushbutton.h>
    4752
    4853//////////////////////////////////////////////////////////////////////////////
     
    131136//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
    132137{
    133   printf("G4OpenGLQtViewer::CreateMainWindow \n");
    134138
    135139  if(fWindow) return; //Done.
     140  printf("G4OpenGLQtViewer::CreateMainWindow 2\n");
     141
     142  // launch Qt if not
     143  G4Qt* interactorManager = G4Qt::getInstance ();
     144  //  G4UImanager* UI = G4UImanager::GetUIpointer();
     145  printf("G4OpenGLQtViewer::CreateMainWindow 3\n");
     146
     147  QPushButton hello("Hello world!");
     148  hello.resize(100, 30);
     149  hello.show();
    136150
    137151  fWindow = new QGLWidget() ;
    138152  fWindow->makeCurrent();
     153
     154  // create window
     155  QDialog* GLWindow ;
     156  if (qApp) {
     157    GLWindow = new QDialog();//qApp->mainWidget());
     158  } else {
     159    GLWindow = new QDialog();
     160  }
     161
     162  QHBoxLayout *mainLayout = new QHBoxLayout;
     163  mainLayout->addWidget(fWindow);
     164  GLWindow->setLayout(mainLayout);
     165  GLWindow->setWindowTitle("QGl Viewer");
     166  GLWindow->resize(100, 30);
     167  GLWindow->show();
     168
    139169
    140170//   // Bill Gates stuff...
     
    157187//   } 
    158188 
    159 //   WinSize_x = 400;
    160 //   WinSize_y = 400;
    161 //   if (WinSize_x < fVP.GetWindowSizeHintX ())
    162 //     WinSize_x = fVP.GetWindowSizeHintX ();
    163 //   if (WinSize_y < fVP.GetWindowSizeHintY ())
    164 //     WinSize_y = fVP.GetWindowSizeHintY ();
     189   WinSize_x = 400;
     190   WinSize_y = 400;
     191   if (WinSize_x < fVP.GetWindowSizeHintX ())
     192     WinSize_x = fVP.GetWindowSizeHintX ();
     193   if (WinSize_y < fVP.GetWindowSizeHintY ())
     194     WinSize_y = fVP.GetWindowSizeHintY ();
    165195
    166196//   fWindow = ::CreateWindow(className,fName.c_str(),
     
    193223
    194224//////////////////////////////////////////////////////////////////////////////
     225void G4OpenGLQtViewer::CreateMainWindow (
     226QGLWidget* glWidget
     227)
     228//////////////////////////////////////////////////////////////////////////////
     229//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
     230{
     231
     232  if(fWindow) return; //Done.
     233  printf("G4OpenGLQtViewer::CreateMainWindow glWidget\n");
     234
     235  // launch Qt if not
     236  G4Qt* interactorManager = G4Qt::getInstance ();
     237  //  G4UImanager* UI = G4UImanager::GetUIpointer();
     238  printf("G4OpenGLQtViewer::CreateMainWindow 3\n");
     239
     240  fWindow = glWidget ;
     241  fWindow->makeCurrent();
     242
     243  // create window
     244  QDialog* GLWindow ;
     245  if (qApp) {
     246    GLWindow = new QDialog();//qApp->mainWidget());
     247  } else {
     248    GLWindow = new QDialog();
     249  }
     250
     251  QHBoxLayout *mainLayout = new QHBoxLayout;
     252  mainLayout->addWidget(fWindow);
     253  GLWindow->setLayout(mainLayout);
     254  GLWindow->setWindowTitle("QGl Viewer");
     255  GLWindow->resize(300, 300);
     256  GLWindow->show();
     257
     258
     259//   // Bill Gates stuff...
     260//   static const char className[] = "G4OpenGLQt";
     261//   static bool done = false;
     262//   if(done==false) {
     263//     WNDCLASS wc;
     264//     wc.style = CS_HREDRAW | CS_VREDRAW;
     265//     wc.lpfnWndProc = (WNDPROC)WindowProc;
     266//     wc.cbClsExtra = 0;
     267//     wc.cbWndExtra = 0;
     268//     wc.hInstance = ::GetModuleHandle(NULL);
     269//     wc.hIcon = LoadIcon  (NULL, IDI_APPLICATION);
     270//     wc.hCursor = LoadCursor(NULL,IDC_CROSS);
     271//     wc.hbrBackground = NULL;
     272//     wc.lpszMenuName = className;
     273//     wc.lpszClassName = className;
     274//     ::RegisterClass(&wc);
     275//     done = true;
     276//   } 
     277 
     278   WinSize_x = 400;
     279   WinSize_y = 400;
     280   if (WinSize_x < fVP.GetWindowSizeHintX ())
     281     WinSize_x = fVP.GetWindowSizeHintX ();
     282   if (WinSize_y < fVP.GetWindowSizeHintY ())
     283     WinSize_y = fVP.GetWindowSizeHintY ();
     284
     285//   fWindow = ::CreateWindow(className,fName.c_str(),
     286//                         WS_OVERLAPPEDWINDOW,
     287//                         //WS_CHILD | WS_VISIBLE,
     288//                         0,0,
     289//                         WinSize_x,WinSize_y,
     290//                         NULL, NULL,
     291//                         ::GetModuleHandle(NULL),
     292//                         NULL);
     293//   if(!fWindow) return;
     294
     295//   ::SetWindowLong(fWindow,GWL_USERDATA,LONG(this));
     296
     297//   // initialize OpenGL rendering :
     298//   fHDC = ::GetDC(fWindow);
     299//   if( fHDC && (SetWindowPixelFormat(fHDC)==TRUE) ) {
     300//     fHGLRC = ::wglCreateContext(fHDC);
     301//   }
     302 
     303//   if(fHDC && fHGLRC) {
     304//     ::wglMakeCurrent(fHDC,fHGLRC);
     305//   }
     306
     307//   ::SetForegroundWindow(fWindow);
     308//   ::ShowWindow(fWindow,SW_SHOWDEFAULT);
     309//   ::UpdateWindow(fWindow);
     310//   ::DrawMenuBar(fWindow);
     311}
     312
     313//////////////////////////////////////////////////////////////////////////////
    195314G4OpenGLQtViewer::G4OpenGLQtViewer (
    196315 G4OpenGLSceneHandler& scene
     
    198317:G4VViewer (scene, -1)
    199318,G4OpenGLViewer (scene)
    200                                    //,fWindow(0)
     319,fWindow(0)
    201320                                   //,fHDC(0)
    202321                                   //,fHGLRC(0)
Note: See TracChangeset for help on using the changeset viewer.