Import Geant4 9.2.0 source tree
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.6 2004/06/03 11:40:13 gcosmo Exp $
|
||||
# $Id: GNUmakefile,v 1.8 2008/04/29 16:58:04 lgarnier Exp $
|
||||
|
||||
name := G4OpenGL
|
||||
|
||||
@@ -6,6 +6,9 @@ ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
# Definition of macro for moc files (for Qt use only)
|
||||
MOC_MACRO = -DG4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
GLOBLIBS = libG4vis_management.lib libG4modeling.lib
|
||||
GLOBLIBS += libG4interfaces.lib libG4run.lib libG4event.lib
|
||||
GLOBLIBS += libG4tracking.lib libG4processes.lib libG4digits_hits.lib
|
||||
@@ -30,4 +33,5 @@ CPPFLAGS += -I$(G4BASE)/interfaces/common/include
|
||||
CPPFLAGS += -I$(G4BASE)/tracking/include
|
||||
CPPFLAGS += -I$(G4BASE)/digits_hits/hits/include
|
||||
|
||||
include $(G4INSTALL)/config/moc.gmk
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.103 2007/11/19 19:45:39 perl Exp $
|
||||
$Id: History,v 1.120 2008/11/21 21:56:28 perl Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -20,6 +20,87 @@ committal in the CVS repository !
|
||||
History file for visualization/OpenGL
|
||||
-------------------------------------
|
||||
|
||||
24 October, Laurent Garnier (opengl-V09-01-03)
|
||||
- Change GEANT4_QT_DEBUG flag by QTDEBUG
|
||||
- Suppress unuseful DEBUG messages
|
||||
|
||||
12th October Laurent Garnier
|
||||
- G4OpenGLQtExportDialog : improvments for Qt3"
|
||||
- G4OpenGLQtViewer,G4OpenGLImmediateQtViewer,G4OpenGLStoreQtViewer : Add the name on OpenGlQt viewers
|
||||
- G4OpenGLStoredQtViewer,G4OpenGLImmediateQt, G4OpenGLStoredQt : Change OGLSQT and OGLIQT by OGLSQt and OGLIQt
|
||||
|
||||
2 October Laurent Garnier
|
||||
- Fix a crash when there was no scene.
|
||||
|
||||
28 July Laurent Garnier
|
||||
- Fix a bug in XmRotation panel introduce in last commit by myself.
|
||||
|
||||
20th June 2008 Laurent Garnier
|
||||
- Correct some warnings
|
||||
- Move rotation code of Xm and Qt in G4OpenGLViewer::rotateScene. Same code in now shared
|
||||
|
||||
12th June 2008 Laurent Garnier
|
||||
- Emit signals when moving/rotate scene, in order to get them in external app
|
||||
|
||||
28th Mai 2008 Laurent Garnier
|
||||
- Add mouse wheel zoom commands
|
||||
|
||||
28th April 2008 Laurent Garnier
|
||||
- Add better moc control/compilation step in GNUmakefile
|
||||
- Fix a problem when launching QT VIS without QT UI (N02 for example)
|
||||
|
||||
28th April 2008 John Allison (opengl-V09-01-02)
|
||||
- G4OpenGLStoredSceneHandler: Tidied constructors of nested classes.
|
||||
|
||||
4th April 2008 John Allison (opengl-V09-01-01)
|
||||
- Fixed DBL_MAX problem in 2D drawing:
|
||||
o changed G4OPENGL_DBL_MAX to G4OPENGL_FLT_BIG.
|
||||
- Fix gcc-4.3.0 compiler warnings.
|
||||
|
||||
11th March 2008, Laurent Garnier
|
||||
- Resolve QT3 compilation errors
|
||||
|
||||
10th March 2008, Laurent Garnier
|
||||
- Add a dialog panel to make movies (Right button->Actions->Movie parameters)
|
||||
- Add ability to "auto rotate" volume launched with quick mouse move
|
||||
- Lots of improvments for Qt3
|
||||
- Improvments on moving steps with shortcuts
|
||||
- Could now select between orthogonal/perspective view mode
|
||||
|
||||
1st February 2008 John Allison
|
||||
- G4OpenGLQtViewer.cc: Fix #ifdef QT protection.
|
||||
- G4OpenGLSceneHandler.cc: Small improvement to logic of setting GL_LIGHTING.
|
||||
|
||||
30th January 2008, Laurent Garnier
|
||||
- Add moving camera on left/right/up/down arrown, going forward/backward
|
||||
on SHIFT+up/down, zoom in with +/- keys
|
||||
- Add a context menu entry for projection perspective/orthographic
|
||||
- Fix some bugs on windows in export dialog
|
||||
|
||||
15th January 2008, Laurent Garnier
|
||||
- Fixed some layout problems on export dialog box
|
||||
- Some improvements on exports formats
|
||||
- Fix a bug in the help command : The clic callback on a item was not
|
||||
working on windows
|
||||
- Fix a crash at exit when launched on a MAC.
|
||||
- EPS export format is now ready for Qt3
|
||||
- Add Vectoriel EPS export format
|
||||
- Fix an aspect ratio deformation when resize the widget
|
||||
- Fix a crash at launch with leopard
|
||||
- When selecting the "move" mouse action, this action was set even when
|
||||
mouse button was released. Fixed : Now we should clic to have the move action
|
||||
- GNUmakefile : Added a macro for moc file
|
||||
- Moc files : Suppression of all theses files. They are now autogenerated
|
||||
thanks to config/common.gmk
|
||||
|
||||
4th January 2008 John Allison (opengl-V09-01-00)
|
||||
- Implemented extended 2D interface.
|
||||
|
||||
30th November 2007 Laurent Garnier
|
||||
- Improvements for Qt3
|
||||
- moc files : Adding other versions for QT_MOC_REVISION 28,58 and
|
||||
59, but this is not the right solution..
|
||||
|
||||
19th November 2007 Joseph Perl (for Laurent Garnier) (opengl-V09-00-04)
|
||||
- Added GEANT4_QT_DEBUG flag to more places
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4OpenGL.hh,v 1.6 2007/11/15 10:14:23 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGL.hh,v 1.7 2008/04/04 13:32:22 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// G.Barrand.
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
#define G4OPENGL_DBL_MAX 1.e308
|
||||
#define G4OPENGL_FLT_BIG 1.e20
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLBitMapStore.hh,v 1.2 2007/11/15 10:14:23 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// John Allison 6th January 2007
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4OpenGLFontBaseStore.hh,v 1.3 2006/06/29 21:17:38 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// J.Allison Apr 2005.
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateQt.hh,v 1.1 2007/09/28 14:44:13 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLImmediateQt graphics system factory.
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateQtViewer.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLImmediateQtViewer.hh,v 1.4 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLImmediateQtViewer : a class derived from
|
||||
@@ -60,10 +60,19 @@ public:
|
||||
void resizeGL(int width,int height);
|
||||
void paintGL();
|
||||
void updateQWidget();
|
||||
void ShowView ();
|
||||
|
||||
protected:
|
||||
void wheelEvent(QWheelEvent *event);
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
void contextMenuEvent(QContextMenuEvent *e);
|
||||
void keyPressEvent (QKeyEvent * event);
|
||||
private:
|
||||
void ComputeView ();
|
||||
|
||||
private :
|
||||
int readyToPaint;
|
||||
int nbPaint;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateSceneHandler.hh,v 1.13 2007/04/04 16:50:26 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLImmediateSceneHandler.hh,v 1.14 2008/01/04 22:07:01 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
virtual ~G4OpenGLImmediateSceneHandler ();
|
||||
void BeginPrimitives (const G4Transform3D& objectTransformation);
|
||||
void EndPrimitives ();
|
||||
void BeginPrimitives2D ();
|
||||
void BeginPrimitives2D (const G4Transform3D& objectTransformation);
|
||||
void EndPrimitives2D ();
|
||||
void BeginModeling ();
|
||||
void EndModeling ();
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateViewer.hh,v 1.9 2006/09/04 12:07:59 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateWin32.hh,v 1.7 2006/06/29 21:17:44 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLImmediateWin32 graphics system factory.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateWin32Viewer.hh,v 1.9 2006/06/29 21:17:46 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLImmediateWin32Viewer : a class derived from
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateX.hh,v 1.7 2006/06/29 21:17:48 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXViewer.hh,v 1.9 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXm.hh,v 1.7 2006/06/29 21:17:52 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXmViewer.hh,v 1.9 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLQtExportDialog.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $
|
||||
// $Id: G4OpenGLQtExportDialog.hh,v 1.6 2008/10/15 10:16:17 lgarnier Exp $
|
||||
// GEANT4 tag $Name:
|
||||
//
|
||||
//
|
||||
@@ -35,6 +35,7 @@
|
||||
#define G4OPENGLQTEXPORTDIALOG_HH
|
||||
|
||||
#include <qdialog.h>
|
||||
#include <qobject.h>
|
||||
|
||||
class QButtonGroup;
|
||||
class QPushButton;
|
||||
@@ -45,21 +46,25 @@ class QComboBox;
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
class QGroupBox;
|
||||
#endif
|
||||
|
||||
/** The G4OpenGLQtExportDialog class provide a Dialog displaying differents options
|
||||
for each file format
|
||||
*/
|
||||
for each file format
|
||||
*/
|
||||
class G4OpenGLQtExportDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
public:
|
||||
/** Construct a G4OpenGLQtExportDialog
|
||||
@param parent : parent widget
|
||||
@param name : name of the saved file with extention
|
||||
@param format : format of save file in lower case
|
||||
@param height : height of the original file
|
||||
@param width : width of the original file
|
||||
*/
|
||||
G4OpenGLQtExportDialog(QWidget* parent, QString name, int height =0, int width=0);
|
||||
G4OpenGLQtExportDialog(QWidget* parent, QString format, int height =0, int width=0);
|
||||
|
||||
/** Destroys G4OpenGLQtExportDialog */
|
||||
~G4OpenGLQtExportDialog();
|
||||
@@ -67,24 +72,34 @@ public:
|
||||
/** @return the value of the slider if format has a slider widget, instead return -1 */
|
||||
int getSliderValue();
|
||||
|
||||
/** return the new width for file if format has a width widget, instead return -1 */
|
||||
/** return the new width for file if format has a width widget, instead return
|
||||
the original value */
|
||||
int getWidth();
|
||||
|
||||
/** return the new height for file if format has a height widget, instead return -1 */
|
||||
/** return the new height for file if format has a height widget, instead return
|
||||
the original value */
|
||||
int getHeight();
|
||||
|
||||
/** return the value of the transparency if format has a transparency, instead return -1 */
|
||||
bool getTransparency();
|
||||
int getTransparency();
|
||||
|
||||
/** return the numbers of colors in the picture if format has a BW/Color widget, instead return -1 */
|
||||
int getNbColor();
|
||||
|
||||
public slots:
|
||||
/** return if vector EPS is checked, if button does'nt exist, return 0 */
|
||||
bool getVectorEPS();
|
||||
|
||||
/** Called by a clic on modify/original size button.This will
|
||||
invert buttons and hide/unhide size
|
||||
*/
|
||||
void changeSizeBox(bool);
|
||||
public slots:
|
||||
|
||||
/** Called by a clic on modify/original size button.This will
|
||||
invert buttons and hide/unhide size
|
||||
*/
|
||||
void changeSizeBox();
|
||||
|
||||
/** Called by a clic on vectorEPS check box.If vectorEPS checkBox is checked,
|
||||
it will enable change size buttons. Else it will disable them.
|
||||
*/
|
||||
void changeVectorEPS();
|
||||
|
||||
/** Called by changing value in height lineEdit. If ratio is keep, will also change the width
|
||||
*/
|
||||
@@ -94,13 +109,18 @@ public slots:
|
||||
*/
|
||||
void textHeightChanged(const QString &);
|
||||
|
||||
private:
|
||||
private:
|
||||
QString f_name, f_type, f_dir;
|
||||
QLabel* qualityLabel;
|
||||
bool expAll;
|
||||
QPushButton* buttonOk;
|
||||
QPushButton* buttonCancel;
|
||||
QCheckBox* transparencyEPS,*boxTransparency;
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
QGroupBox * sizeGroupBox;
|
||||
#endif
|
||||
|
||||
QCheckBox* transparencyEPS,*boxTransparency,*vectorEPSCheckBox;
|
||||
QCheckBox* ratioCheckBox;
|
||||
QSlider * qualitySlider;
|
||||
QLabel *formatLabel;
|
||||
@@ -110,7 +130,7 @@ private:
|
||||
QWidget* heightWidget,* widthWidget;
|
||||
int originalWidth;
|
||||
int originalHeight;
|
||||
|
||||
bool isChangingSize;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLQtMovieDialog.hh,v 1.4 2008/10/07 05:36:11 lgarnier Exp $
|
||||
// GEANT4 tag $Name:
|
||||
//
|
||||
//
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#ifndef G4OPENGLQTMOVIEDIALOG_HH
|
||||
#define G4OPENGLQTMOVIEDIALOG_HH
|
||||
|
||||
#include <qdialog.h>
|
||||
|
||||
class QPushButton;
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
class G4OpenGLQtViewer;
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
class QGroupBox;
|
||||
#endif
|
||||
|
||||
/** The G4OpenGLQtMovieDialog class provide a Dialog displaying differents options
|
||||
for each file format
|
||||
*/
|
||||
class G4OpenGLQtMovieDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/** Construct a G4OpenGLQtMovieDialog
|
||||
@param parent : parent widget
|
||||
*/
|
||||
G4OpenGLQtMovieDialog(G4OpenGLQtViewer*,QWidget*);
|
||||
|
||||
/** Destroys G4OpenGLQtMovieDialog */
|
||||
~G4OpenGLQtMovieDialog();
|
||||
void setRecordingStatus(QString);
|
||||
void setRecordingInfos(QString);
|
||||
|
||||
private :
|
||||
QLineEdit* fEncoderPath;
|
||||
QLineEdit* fTempFolderPath;
|
||||
QLineEdit* fSaveFileName;
|
||||
G4OpenGLQtViewer *fParentViewer;
|
||||
QLabel *fEncoderStatus;
|
||||
QLabel *fTempFolderStatus;
|
||||
QLabel *fSaveFileStatus;
|
||||
QLabel *fRecordingStatus;
|
||||
QLabel *fRecordingInfos;
|
||||
QPushButton *fButtonStopFinishClose;
|
||||
QPushButton *fButtonSave;
|
||||
QPushButton *fButtonStartPause;
|
||||
|
||||
public slots :
|
||||
void stopFinishClose();
|
||||
void save();
|
||||
bool checkEncoderSwParameters();
|
||||
bool checkSaveFileNameParameters();
|
||||
bool checkTempFolderParameters();
|
||||
|
||||
private slots :
|
||||
void selectEncoderPathAction();
|
||||
void selectTempPathAction();
|
||||
void selectSaveFileNameAction();
|
||||
void resetRecording();
|
||||
void enabledApplyButton();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLQtViewer.hh,v 1.4 2007/11/13 17:48:51 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLQtViewer.hh,v 1.13 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// G4OpenGLQtViewer : Class to provide WindowsNT specific
|
||||
@@ -54,8 +54,14 @@ class QMenu;
|
||||
#endif
|
||||
class QImage;
|
||||
class QAction;
|
||||
class QMouseEvent;
|
||||
class QKeyEvent;
|
||||
class QWheelEvent;
|
||||
class QProcess;
|
||||
class QTime;
|
||||
|
||||
class G4OpenGLSceneHandler;
|
||||
class G4OpenGLQtMovieDialog;
|
||||
|
||||
class G4OpenGLQtViewer: public QObject, virtual public G4OpenGLViewer {
|
||||
|
||||
@@ -65,19 +71,51 @@ public:
|
||||
G4OpenGLQtViewer (G4OpenGLSceneHandler& scene);
|
||||
virtual ~G4OpenGLQtViewer ();
|
||||
void SetView ();
|
||||
void ShowView ();
|
||||
virtual void updateQWidget()=0;
|
||||
void setupViewport(int, int);
|
||||
QString setEncoderPath(QString path);
|
||||
QString getEncoderPath();
|
||||
QString setTempFolderPath(QString path);
|
||||
QString getTempFolderPath();
|
||||
QString setSaveFileName(QString path);
|
||||
QString getSaveFileName();
|
||||
bool isRecording();
|
||||
bool isStopped();
|
||||
bool isPaused();
|
||||
bool isEncoding();
|
||||
bool isWaiting();
|
||||
bool isFailed();
|
||||
void setWaiting();
|
||||
bool isBadEncoder();
|
||||
bool isBadOutput();
|
||||
bool isBadTmp();
|
||||
bool isSuccess();
|
||||
void setBadTmp();
|
||||
void setBadOutput();
|
||||
void setBadEncoder();
|
||||
bool isReadyToEncode();
|
||||
void resetRecording();
|
||||
void encodeVideo();
|
||||
void stopVideo();
|
||||
void saveVideo();
|
||||
bool generateMpegEncoderParameters();
|
||||
void displayRecordingStatus();
|
||||
|
||||
protected:
|
||||
void CreateGLQtContext ();
|
||||
virtual void CreateMainWindow (QGLWidget*);
|
||||
void manageContextMenuEvent(QContextMenuEvent *e);
|
||||
void G4MousePressEvent(QPoint);
|
||||
#if QT_VERSION < 0x040000
|
||||
void G4MouseMoveEvent(int, int, Qt::ButtonState);
|
||||
#else
|
||||
void G4MouseMoveEvent(int, int, Qt::MouseButtons);
|
||||
#endif
|
||||
virtual void CreateMainWindow (QGLWidget*,QString);
|
||||
void G4resizeGL(int, int);
|
||||
void G4manageContextMenuEvent(QContextMenuEvent *e);
|
||||
void G4MousePressEvent(QMouseEvent *event);
|
||||
void G4MouseReleaseEvent();
|
||||
void G4MouseDoubleClickEvent();
|
||||
void G4MouseMoveEvent(QMouseEvent *event);
|
||||
void G4wheelEvent (QWheelEvent * event);
|
||||
void G4keyPressEvent (QKeyEvent * event);
|
||||
void rotateQtScene(float, float);
|
||||
void rotateQtCamera(float, float);
|
||||
void moveScene(float, float, float,bool);
|
||||
void FinishView();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -85,53 +123,126 @@ protected:
|
||||
G4int WinSize_y;
|
||||
QGLWidget* fWindow;
|
||||
QDialog* GLWindow;
|
||||
bool hasPendingEvents();
|
||||
void savePPMToTemp();
|
||||
int fRecordFrameNumber;
|
||||
float fRotationAngleX;
|
||||
float fRotationAngleY;
|
||||
float fRotationAngleZ;
|
||||
float fDeltaRotationAngleX;
|
||||
float fDeltaRotationAngleY;
|
||||
float fDeltaRotationAngleZ;
|
||||
|
||||
bool hasToRepaint;
|
||||
bool readyToPaint;
|
||||
bool zoomAction;
|
||||
QPoint beginZoom;
|
||||
QPoint endZoom;
|
||||
|
||||
private:
|
||||
enum mouseActions {STYLE1,STYLE2,STYLE3,STYLE4};
|
||||
enum RECORDING_STEP {WAIT,START,PAUSE,CONTINUE,STOP,READY_TO_ENCODE,ENCODING,FAILED,SUCCESS,BAD_ENCODER,BAD_OUTPUT,BAD_TMP,SAVE};
|
||||
|
||||
void createPopupMenu();
|
||||
void createRadioAction(QAction *,QAction *, const std::string&,unsigned int a=1);
|
||||
void rescaleImage(int, int);
|
||||
bool generateEPS(QString,int,QImage);
|
||||
bool generateVectorEPS (QString,int,int,QImage);
|
||||
bool generatePS_PDF(QString,int,QImage);
|
||||
void showMovieParametersDialog();
|
||||
void initMovieParameters();
|
||||
QString createTempFolder();
|
||||
QString removeTempFolder();
|
||||
void setRecordingStatus(RECORDING_STEP);
|
||||
void setRecordingInfos(QString);
|
||||
QString getProcessErrorMsg();
|
||||
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QPopupMenu *fContextMenu;
|
||||
#else
|
||||
QMenu *fContextMenu;
|
||||
#endif
|
||||
bool fMouseAction; // 1: rotate 0:move
|
||||
QPoint lastPos;
|
||||
#if QT_VERSION < 0x040000
|
||||
QPopupMenu *fDrawingWireframe;
|
||||
QPopupMenu *fDrawingLineRemoval;
|
||||
QPopupMenu *fDrawingSurfaceRemoval;
|
||||
QPopupMenu *fDrawingLineSurfaceRemoval;
|
||||
#else
|
||||
|
||||
mouseActions fMouseAction; // 1: rotate 2:move 3:pick 4:shortcuts
|
||||
QPoint fLastPos1;
|
||||
QPoint fLastPos2;
|
||||
QPoint fLastPos3;
|
||||
/** delta of scene rotation. This delta is put in degree */
|
||||
G4double fDeltaRotation;
|
||||
/** delta of scene translation. This delta is put in % of the scene view */
|
||||
G4double fDeltaSceneTranslation;
|
||||
/** delta of depth move. This delta is put in % of the scene view */
|
||||
G4double fDeltaDepth;
|
||||
/** delta of zoom move. This delta is put in % of the scene view */
|
||||
G4double fDeltaZoom;
|
||||
/** delta of auto move/rotation. This delta is put in % of the move/rotation param */
|
||||
G4double fDeltaMove;
|
||||
/** To ensure key event are keep one by one */
|
||||
bool fHoldKeyEvent;
|
||||
/** To ensure move event are keep one by one */
|
||||
bool fHoldMoveEvent;
|
||||
/** To ensure rotate event are keep one by one */
|
||||
bool fHoldRotateEvent;
|
||||
bool fAutoMove;
|
||||
QString fEncoderPath;
|
||||
QString fTempFolderPath;
|
||||
QString fMovieTempFolderPath;
|
||||
QString fSaveFileName;
|
||||
QString fParameterFileName;
|
||||
QAction *fRotateAction;
|
||||
QAction *fMoveAction;
|
||||
QAction *fPickAction;
|
||||
QAction *fFullScreenOn;
|
||||
QAction *fFullScreenOff;
|
||||
QAction *fDrawingWireframe;
|
||||
QAction *fDrawingLineRemoval;
|
||||
QAction *fDrawingSurfaceRemoval;
|
||||
QAction *fDrawingLineSurfaceRemoval;
|
||||
#endif
|
||||
G4OpenGLQtMovieDialog* fMovieParametersDialog;
|
||||
RECORDING_STEP fRecordingStep;
|
||||
QProcess *fProcess;
|
||||
QTime *fLastEventTime;
|
||||
int fSpinningDelay;
|
||||
int fLaunchSpinDelay;
|
||||
|
||||
signals:
|
||||
void rotateTheta(int);
|
||||
void rotatePhi(int);
|
||||
void moveX(int);
|
||||
void moveY(int);
|
||||
void moveZ(int);
|
||||
|
||||
public slots :
|
||||
void startPauseVideo();
|
||||
|
||||
private slots :
|
||||
void actionMouseRotate();
|
||||
void actionMouseMove();
|
||||
void actionMousePick();
|
||||
void actionDrawingWireframe();
|
||||
void actionDrawingLineRemoval();
|
||||
void actionDrawingSurfaceRemoval();
|
||||
void actionDrawingLineSurfaceRemoval();
|
||||
void actionControlPanels();
|
||||
void actionExitG4();
|
||||
void actionCreateEPS();
|
||||
void actionSaveImage();
|
||||
void actionMovieParameters();
|
||||
|
||||
void showShortcuts();
|
||||
void toggleDrawingAction(int);
|
||||
void toggleMouseAction(bool);
|
||||
void toggleMouseAction(mouseActions);
|
||||
void toggleRepresentation(bool);
|
||||
void toggleProjection(bool);
|
||||
void toggleBackground(bool);
|
||||
void toggleTransparency(bool);
|
||||
void toggleAntialiasing(bool);
|
||||
void toggleHaloing(bool);
|
||||
void toggleAux(bool);
|
||||
void toggleFullScreen(bool);
|
||||
|
||||
void dialogClosed();
|
||||
void processEncodeFinished();
|
||||
void processLookForFinished();
|
||||
void processEncodeStdout();
|
||||
// Only use for Qt>4.0
|
||||
// void dialogClosed();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLSceneHandler.hh,v 1.23 2007/04/04 16:50:26 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLSceneHandler.hh,v 1.24 2008/01/04 22:07:01 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 27th March 1996
|
||||
@@ -57,7 +57,7 @@ class G4OpenGLSceneHandler: public G4VSceneHandler {
|
||||
public:
|
||||
virtual void BeginPrimitives (const G4Transform3D& objectTransformation);
|
||||
virtual void EndPrimitives ();
|
||||
virtual void BeginPrimitives2D ();
|
||||
virtual void BeginPrimitives2D (const G4Transform3D& objectTransformation);
|
||||
virtual void EndPrimitives2D ();
|
||||
void AddPrimitive (const G4Polyline&);
|
||||
void AddPrimitive (const G4Polymarker&);
|
||||
@@ -94,9 +94,12 @@ protected:
|
||||
const G4Polyhedron* CreateSectionPolyhedron ();
|
||||
const G4Polyhedron* CreateCutawayPolyhedron ();
|
||||
|
||||
void ClearAndDestroyAtts(); // Destroys att holders and clears pick map.
|
||||
|
||||
GLuint fPickName;
|
||||
std::map<GLuint, G4AttHolder*> fPickMap; // For picking.
|
||||
void ClearAndDestroyAtts(); // Destroys att holders and clears pick map.
|
||||
|
||||
G4bool fProcessing2D;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLSceneHandler.icc,v 1.7 2006/06/29 21:17:58 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLSceneHandler.icc,v 1.8 2008/01/30 10:54:13 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 20th January 1998
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredQt.hh,v 1.1 2007/09/28 14:44:13 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLStoredQt graphics system factory.
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredQtViewer.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredQtViewer.hh,v 1.7 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLStoredQtViewer : a class derived from
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <qgl.h> // include qglwidget
|
||||
|
||||
class QMouseEvent;
|
||||
class QWheelEvent;
|
||||
class QContextMenuEvent;
|
||||
|
||||
class G4OpenGLStoredSceneHandler;
|
||||
@@ -57,20 +58,23 @@ public:
|
||||
void Initialise ();
|
||||
void initializeGL ();
|
||||
void DrawView ();
|
||||
void FinishView ();
|
||||
void resizeGL(int width,int height);
|
||||
void paintGL();
|
||||
void updateQWidget();
|
||||
void ShowView ();
|
||||
|
||||
protected:
|
||||
void wheelEvent(QWheelEvent *event);
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
void contextMenuEvent(QContextMenuEvent *e);
|
||||
void keyPressEvent (QKeyEvent * event);
|
||||
private:
|
||||
void ComputeView ();
|
||||
|
||||
private :
|
||||
bool hasToRepaint;
|
||||
bool readyToPaint;
|
||||
int nbPaint;
|
||||
// QImage glBufferImage;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredSceneHandler.hh,v 1.24 2007/04/04 16:50:26 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredSceneHandler.hh,v 1.27 2008/04/28 16:19:40 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
virtual ~G4OpenGLStoredSceneHandler ();
|
||||
void BeginPrimitives (const G4Transform3D& objectTransformation);
|
||||
void EndPrimitives ();
|
||||
void BeginPrimitives2D ();
|
||||
void BeginPrimitives2D (const G4Transform3D& objectTransformation);
|
||||
void EndPrimitives2D ();
|
||||
void BeginModeling ();
|
||||
void EndModeling ();
|
||||
@@ -86,8 +86,7 @@ protected:
|
||||
// PODL = Persistent Object Display List.
|
||||
GLint fTopPODL; // List which calls the other PODLs.
|
||||
struct PO {
|
||||
PO(G4int id, const G4Transform3D& tr = G4Transform3D()):
|
||||
fDisplayListId(id), fTransform(tr), fPickName(0) {}
|
||||
PO(G4int id, const G4Transform3D& tr = G4Transform3D());
|
||||
G4int fDisplayListId;
|
||||
G4Transform3D fTransform;
|
||||
GLuint fPickName;
|
||||
@@ -96,9 +95,7 @@ protected:
|
||||
|
||||
// TO = Transparent Object.
|
||||
struct TO {
|
||||
TO(G4int id, const G4Transform3D& tr = G4Transform3D()):
|
||||
fDisplayListId(id), fTransform(tr), fPickName(0),
|
||||
fStartTime(-G4OPENGL_DBL_MAX), fEndTime(G4OPENGL_DBL_MAX) {}
|
||||
TO(G4int id, const G4Transform3D& tr = G4Transform3D());
|
||||
G4int fDisplayListId;
|
||||
G4Transform3D fTransform;
|
||||
GLuint fPickName;
|
||||
@@ -110,9 +107,6 @@ protected:
|
||||
// Stop-gap solution of structure re-use.
|
||||
// A proper implementation would use geometry hierarchy.
|
||||
std::map <const G4VSolid*, G4int, std::less <const G4VSolid*> > fSolidMap;
|
||||
|
||||
private:
|
||||
G4bool fProcessing2D;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredViewer.hh,v 1.9 2006/06/29 21:18:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredWin32.hh,v 1.7 2006/06/29 21:18:04 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLStoredWin32 graphics system factory.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredWin32Viewer.hh,v 1.7 2006/06/29 21:18:06 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLStoredWin32Viewer : a class derived from
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredX.hh,v 1.7 2006/06/29 21:18:08 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXViewer.hh,v 1.7 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXm.hh,v 1.6 2006/06/29 21:18:12 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXmViewer.hh,v 1.7 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLTransform3D.hh,v 1.7 2006/06/29 21:18:16 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 24th October 1996
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLViewer.hh,v 1.21 2007/11/10 14:50:01 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLViewer.hh,v 1.23 2008/06/20 13:55:06 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 27th March 1996
|
||||
@@ -66,12 +66,16 @@ protected:
|
||||
void Pick(GLdouble x, GLdouble y);
|
||||
virtual void CreateFontLists () {}
|
||||
virtual void print();
|
||||
void rotateScene (G4double dx, G4double dy,G4double delta);
|
||||
//////////////////////////////Vectored PostScript production functions///
|
||||
void printBuffer(GLint, GLfloat*);
|
||||
GLfloat* spewPrimitiveEPS (FILE*, GLfloat*);
|
||||
void spewSortedFeedback (FILE*, GLint, GLfloat*);
|
||||
void spewWireframeEPS (FILE*, GLint, GLfloat*, const char*);
|
||||
void print3DcolorVertex(GLint, GLint*, GLfloat*);
|
||||
GLdouble getSceneNearWidth();
|
||||
GLdouble getSceneFarWidth();
|
||||
GLdouble getSceneDepth();
|
||||
G4float pointSize;
|
||||
char print_string[50];
|
||||
G4bool print_colour;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLViewerMessenger.hh,v 1.5 2007/05/08 11:04:11 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
|
||||
#ifndef G4OPENGLVIEWERMESSENGER_HH
|
||||
#define G4OPENGLVIEWERMESSENGER_HH
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLWin32Viewer.hh,v 1.14 2007/11/10 14:50:01 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// G4OpenGLWin32Viewer : Class to provide WindowsNT specific
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXViewer.hh,v 1.28 2007/11/10 14:50:01 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmBox.hh,v 1.7 2006/06/29 21:18:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Box container class
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmFourArrowButtons.hh,v 1.6 2006/06/29 21:18:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmFramedBox.hh,v 1.7 2006/06/29 21:18:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Framed box container class
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmPushButton.hh,v 1.7 2006/06/29 21:18:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Push button class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmRadioButton.hh,v 1.7 2006/06/29 21:18:32 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Radio button class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmResources.hh,v 1.5 2006/06/29 21:18:34 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Default resources file for GEANT4 OpenGL Motif windows.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmSeparator.hh,v 1.6 2006/06/29 21:18:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Separator class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmSliderBar.hh,v 1.7 2006/06/29 21:18:38 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Slider bar class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmTextField.hh,v 1.7 2006/06/29 21:18:40 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Text field class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmTopLevelShell.hh,v 1.6 2006/06/29 21:18:42 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Top level shell class
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetComponent.hh,v 1.6 2006/06/29 21:18:44 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Base class for all Motif component widgets
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetContainer.hh,v 1.6 2006/06/29 21:18:46 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Base class for all Motif container widgets
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetObject.hh,v 1.6 2006/06/29 21:18:48 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Virtual base class for all Motif widgets.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetShell.hh,v 1.6 2006/06/29 21:18:50 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
//Base class for all Motif window widgets (shells)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmViewer.hh,v 1.10 2006/06/29 21:18:52 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmViewerMessenger.hh,v 1.4 2006/06/29 21:18:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLXM_DRIVER
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLBitMapStore.cc,v 1.4 2007/11/15 10:14:23 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// John Allison 6th January 2007
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLFontBaseStore.cc,v 1.3 2006/06/29 21:18:56 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
|
||||
#include "G4OpenGLFontBaseStore.hh"
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateQt.cc,v 1.2 2007/11/15 18:24:28 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLImmediateQt.cc,v 1.4 2008/10/24 13:49:19 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLImmediateQt graphics system factory.
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
G4OpenGLImmediateQt::G4OpenGLImmediateQt ():
|
||||
G4VGraphicsSystem ("OpenGLImmediateQt",
|
||||
"OGLIQT",
|
||||
"OGLIQt",
|
||||
G4VisFeaturesOfOpenGLIQt (),
|
||||
G4VGraphicsSystem::threeD)
|
||||
{
|
||||
@@ -57,7 +57,7 @@ G4VSceneHandler* G4OpenGLImmediateQt::CreateSceneHandler
|
||||
|
||||
G4VViewer* G4OpenGLImmediateQt::CreateViewer
|
||||
(G4VSceneHandler& scene, const G4String& name) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQt::CreateViewer \n");
|
||||
#endif
|
||||
G4VViewer* pView =
|
||||
@@ -77,7 +77,7 @@ G4VViewer* G4OpenGLImmediateQt::CreateViewer
|
||||
G4cerr << "G4OpenGLImmediateQt::CreateViewer: null pointer on"
|
||||
" new G4OpenGLImmediateQtViewer." << G4endl;
|
||||
}
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQt::CreateViewer END \n");
|
||||
#endif
|
||||
return pView;
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateQtViewer.cc,v 1.3 2007/11/15 18:24:28 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLImmediateQtViewer.cc,v 1.7 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLImmediateQtViewer : a class derived from G4OpenGLQtViewer and
|
||||
@@ -34,216 +34,243 @@
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#include "G4OpenGLImmediateQtViewer.hh"
|
||||
#include "G4VisManager.hh"
|
||||
|
||||
#include "G4ios.hh"
|
||||
|
||||
G4OpenGLImmediateQtViewer::G4OpenGLImmediateQtViewer
|
||||
(G4OpenGLImmediateSceneHandler& sceneHandler,
|
||||
const G4String& name):
|
||||
G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
|
||||
G4OpenGLViewer (sceneHandler),
|
||||
G4OpenGLQtViewer (sceneHandler),
|
||||
G4OpenGLImmediateViewer (sceneHandler),
|
||||
QGLWidget() // FIXME : gerer le pb du parent !
|
||||
{
|
||||
nbPaint =0;
|
||||
G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
|
||||
G4OpenGLViewer (sceneHandler),
|
||||
G4OpenGLQtViewer (sceneHandler),
|
||||
G4OpenGLImmediateViewer (sceneHandler)
|
||||
{
|
||||
|
||||
//set true to picking
|
||||
fVP.SetPicking(true);
|
||||
#if QT_VERSION < 0x040000
|
||||
setFocusPolicy(QWidget::StrongFocus); // enable keybord events
|
||||
#else
|
||||
setFocusPolicy(Qt::StrongFocus); // enable keybord events
|
||||
#endif
|
||||
hasToRepaint =false;
|
||||
|
||||
if (fViewId < 0) return; // In case error in base class instantiation.
|
||||
}
|
||||
|
||||
G4OpenGLImmediateQtViewer::~G4OpenGLImmediateQtViewer() {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::~GLWidget \n");
|
||||
#endif
|
||||
makeCurrent();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::~GLWidget END\n");
|
||||
#endif
|
||||
makeCurrent();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::Initialise() {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::Initialise \n");
|
||||
#endif
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("readyToPaint = false \n");
|
||||
#endif
|
||||
readyToPaint = false;
|
||||
CreateGLQtContext ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::Initialise () 2\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::Initialise \n");
|
||||
#endif
|
||||
readyToPaint = false;
|
||||
CreateMainWindow (this,QString(fName));
|
||||
CreateFontLists ();
|
||||
|
||||
CreateMainWindow (this);
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::Initialise () 3\n");
|
||||
#endif
|
||||
|
||||
CreateFontLists (); // FIXME Does nothing!
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("readyToPaint = true \n");
|
||||
#endif
|
||||
readyToPaint = true;
|
||||
|
||||
// First Draw
|
||||
SetView();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf(" ClearView\n");
|
||||
#endif
|
||||
ClearView (); //ok, put the background correct
|
||||
ShowView();
|
||||
FinishView();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::initializeGL () {
|
||||
|
||||
InitializeGLView ();
|
||||
InitializeGLView ();
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::InitialiseGL () 1\n");
|
||||
#endif
|
||||
|
||||
// If a double buffer context has been forced upon us, ignore the
|
||||
// back buffer for this OpenGLImmediate view.
|
||||
glDrawBuffer (GL_FRONT); // FIXME : Ne marche pas avec cette ligne, mais affiche le run correctement...
|
||||
// clear the buffers and window.
|
||||
ClearView ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
// printf("G4OpenGLImmediateQtViewer::InitialiseGL () 2\n");
|
||||
// If a double buffer context has been forced upon us, ignore the
|
||||
// back buffer for this OpenGLImmediate view.
|
||||
// glDrawBuffer (GL_FRONT); // FIXME : Ne marche pas avec cette ligne, mais affiche le run correctement...
|
||||
// clear the buffers and window.
|
||||
ClearView ();
|
||||
FinishView ();
|
||||
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
glDepthMask (GL_TRUE);
|
||||
|
||||
if (fSceneHandler.GetScene() == 0) {
|
||||
hasToRepaint =false;
|
||||
} else {
|
||||
hasToRepaint =true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** To ensure compatibility with DrawView method
|
||||
*/
|
||||
void G4OpenGLImmediateQtViewer::DrawView() {
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
|
||||
#endif
|
||||
FinishView ();
|
||||
// That's no the same logic as Stored Viewer, I don't know why...
|
||||
// see G4OpenGLStoredQtViewer::DrawView for more informations
|
||||
|
||||
updateQWidget();
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::ComputeView () {
|
||||
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::ComputeView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
makeCurrent();
|
||||
// If a double buffer context has been forced upon us, ignore the
|
||||
// back buffer for this OpenGLImmediate view.
|
||||
// glDrawBuffer (GL_FRONT);
|
||||
|
||||
G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
|
||||
|
||||
//Make sure current viewer is attached and clean...
|
||||
//Qt version needed
|
||||
// glViewport (0, 0, WinSize_x, WinSize_y);
|
||||
|
||||
if(style!=G4ViewParameters::hlr &&
|
||||
haloing_enabled) {
|
||||
|
||||
HaloingFirstPass ();
|
||||
NeedKernelVisit ();
|
||||
ProcessView ();
|
||||
glFlush ();
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::ComputeView First ProcessView ok\n");
|
||||
#endif
|
||||
HaloingSecondPass ();
|
||||
|
||||
}
|
||||
|
||||
NeedKernelVisit (); // Always need to visit G4 kernel.
|
||||
ProcessView ();
|
||||
|
||||
if (isRecording()) {
|
||||
savePPMToTemp();
|
||||
}
|
||||
|
||||
|
||||
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
glDepthMask (GL_TRUE);
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::InitialiseGL -------------------------------------------------------------------------------------\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
hasToRepaint = true;
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::DrawView () {
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
// If a double buffer context has been forced upon us, ignore the
|
||||
// back buffer for this OpenGLImmediate view.
|
||||
glDrawBuffer (GL_FRONT);
|
||||
|
||||
G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
|
||||
|
||||
//Make sure current viewer is attached and clean...
|
||||
//Qt version needed
|
||||
glViewport (0, 0, WinSize_x, WinSize_y);
|
||||
|
||||
if(style!=G4ViewParameters::hlr &&
|
||||
haloing_enabled) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView DANS LE IF\n");
|
||||
#endif
|
||||
|
||||
HaloingFirstPass ();
|
||||
NeedKernelVisit ();
|
||||
ProcessView ();
|
||||
glFlush ();
|
||||
|
||||
HaloingSecondPass ();
|
||||
|
||||
}
|
||||
|
||||
NeedKernelVisit (); // Always need to visit G4 kernel.
|
||||
ProcessView ();
|
||||
FinishView ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::DrawView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
readyToPaint = false;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void G4OpenGLImmediateQtViewer::FinishView (
|
||||
)
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
|
||||
void G4OpenGLImmediateQtViewer::FinishView()
|
||||
{
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView() BEGIN\n");
|
||||
#endif
|
||||
|
||||
glFlush ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
glFlush ();
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::FinishView() END\n");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
- Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
|
||||
*/
|
||||
- Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
|
||||
*/
|
||||
void G4OpenGLImmediateQtViewer::resizeGL(
|
||||
int width
|
||||
,int height)
|
||||
int aWidth
|
||||
,int aHeight)
|
||||
{
|
||||
int side = width;
|
||||
if (width > height) {
|
||||
side = height;
|
||||
}
|
||||
glViewport((width - side) / 2, (height - side) / 2, side, side);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::resizeGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
G4resizeGL(aWidth,aHeight);
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::paintGL()
|
||||
{
|
||||
if (!readyToPaint) {
|
||||
readyToPaint= true;
|
||||
return;
|
||||
}
|
||||
// DO NOT RESIZE IF SIZE HAS NOT CHANGE
|
||||
if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) {
|
||||
return;
|
||||
}
|
||||
nbPaint++;
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("\n\nG4OpenGLImmediateQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %d ready %d\n",nbPaint,readyToPaint);
|
||||
{
|
||||
#ifdef G4DEBUG
|
||||
printf("\n\nG4OpenGLImmediateQtViewer::paintGL ??\n");
|
||||
#endif
|
||||
WinSize_x = (G4int) width();
|
||||
WinSize_y = (G4int) height();
|
||||
if (!readyToPaint) {
|
||||
readyToPaint= true;
|
||||
return;
|
||||
}
|
||||
// DO NOT RESIZE IF SIZE HAS NOT CHANGE
|
||||
if ( !hasToRepaint) {
|
||||
if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ready %d\n",readyToPaint);
|
||||
#endif
|
||||
WinSize_x = (G4int) width();
|
||||
WinSize_y = (G4int) height();
|
||||
|
||||
glViewport (0, 0, width(), height());
|
||||
setupViewport(width(),height());
|
||||
|
||||
SetView();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
// // printf("before ClearView\n");
|
||||
#endif
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf(" ClearView\n");
|
||||
#endif
|
||||
SetView();
|
||||
|
||||
ClearView (); //ok, put the background correct
|
||||
DrawView();
|
||||
readyToPaint = true; // could be set to false by DrawView
|
||||
ClearView (); //ok, put the background correct
|
||||
ComputeView();
|
||||
|
||||
hasToRepaint = false; // could be set to false by ComputeView
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n\n\n",nbPaint,readyToPaint);
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready %d\n\n\n",readyToPaint);
|
||||
#endif
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::updateQWidget() {
|
||||
updateGL();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MousePressEvent(event);
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::keyPressEvent (QKeyEvent * event)
|
||||
{
|
||||
G4keyPressEvent(event);
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::wheelEvent (QWheelEvent * event)
|
||||
{
|
||||
G4wheelEvent(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function was build in order to make a zoom on double clic event.
|
||||
* It was think to build a rubberband on the zoom area, but never work fine
|
||||
*/
|
||||
void G4OpenGLImmediateQtViewer::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MouseDoubleClickEvent();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MouseReleaseEvent();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MouseMoveEvent(event);
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::contextMenuEvent(QContextMenuEvent *e)
|
||||
{
|
||||
G4manageContextMenuEvent(e);
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateQtViewer::updateQWidget() {
|
||||
hasToRepaint= true;
|
||||
updateGL();
|
||||
hasToRepaint= false;
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLImmediateQtViewer::ShowView (
|
||||
)
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
setActiveWindow();
|
||||
#else
|
||||
activateWindow();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateSceneHandler.cc,v 1.27 2007/04/04 16:50:26 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLImmediateSceneHandler.cc,v 1.30 2008/04/04 13:32:22 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
@@ -129,11 +129,14 @@ void G4OpenGLImmediateSceneHandler::AddPrimitive (const G4NURBS& nurbs)
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateSceneHandler::BeginPrimitives
|
||||
(const G4Transform3D& objectTransformation) {
|
||||
(const G4Transform3D& objectTransformation)
|
||||
{
|
||||
G4OpenGLSceneHandler::BeginPrimitives (objectTransformation);
|
||||
glPushMatrix();
|
||||
|
||||
G4OpenGLTransform3D oglt (objectTransformation);
|
||||
|
||||
glPushMatrix();
|
||||
|
||||
/*************************** Check matrix.
|
||||
const GLdouble* m = oglt.GetGLMatrix ();
|
||||
G4cout << "G4OpenGLTransform3D matrix:";
|
||||
@@ -157,19 +160,22 @@ void G4OpenGLImmediateSceneHandler::EndPrimitives ()
|
||||
G4OpenGLSceneHandler::EndPrimitives ();
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateSceneHandler::BeginPrimitives2D()
|
||||
void G4OpenGLImmediateSceneHandler::BeginPrimitives2D
|
||||
(const G4Transform3D& objectTransformation)
|
||||
{
|
||||
G4OpenGLSceneHandler::BeginPrimitives2D();
|
||||
G4OpenGLSceneHandler::BeginPrimitives2D(objectTransformation);
|
||||
|
||||
// Push current 3D world matrices and load identity to define screen
|
||||
// coordinates...
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_DBL_MAX, G4OPENGL_DBL_MAX);
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_FLT_BIG, G4OPENGL_FLT_BIG);
|
||||
glMatrixMode (GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
G4OpenGLTransform3D oglt (objectTransformation);
|
||||
glMultMatrixd (oglt.GetGLMatrix ());
|
||||
}
|
||||
|
||||
void G4OpenGLImmediateSceneHandler::EndPrimitives2D()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateViewer.cc,v 1.8 2006/09/04 12:07:59 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateWin32.cc,v 1.11 2006/08/14 12:07:19 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLImmediateWin32 graphics system factory.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.16 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLImmediateWin32Viewer : a class derived from G4OpenGLWin32Viewer and
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateX.cc,v 1.13 2007/08/21 14:05:51 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 27th March 1996
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXViewer.cc,v 1.16 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXm.cc,v 1.13 2006/08/14 12:07:19 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLImmediateXmViewer.cc,v 1.17 2006/07/03 16:38:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLQtExportDialog.cc,v 1.4 2007/11/13 17:48:51 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLQtExportDialog.cc,v 1.9 2008/10/24 14:17:10 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
|
||||
@@ -44,14 +44,16 @@
|
||||
#include <qradiobutton.h>
|
||||
#include <qimage.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qbuttongroup.h>
|
||||
|
||||
G4OpenGLQtExportDialog::G4OpenGLQtExportDialog(
|
||||
QWidget* parent
|
||||
,QString nomFich
|
||||
,QString format
|
||||
,int aHeight
|
||||
,int aWidth
|
||||
)
|
||||
: QDialog( parent )
|
||||
: QDialog( parent ),
|
||||
isChangingSize(false)
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
setCaption( tr( " Export options" ));
|
||||
@@ -69,33 +71,227 @@ G4OpenGLQtExportDialog::G4OpenGLQtExportDialog(
|
||||
BWButton = NULL;
|
||||
|
||||
// global layout
|
||||
#if QT_VERSION < 0x040000
|
||||
QVBoxLayout* globalVLayout = new QVBoxLayout(this);
|
||||
#else
|
||||
QVBoxLayout* globalVLayout = new QVBoxLayout();
|
||||
#endif
|
||||
|
||||
globalVLayout->setMargin(10);
|
||||
globalVLayout->setSpacing(10);
|
||||
|
||||
if (nomFich.endsWith(".jpg") ||
|
||||
nomFich.endsWith(".jepg")) {
|
||||
|
||||
|
||||
// FIXME : L. Garnier 4/12/07
|
||||
// Not implented. Should deal with alpha channel
|
||||
|
||||
// if((format == "tif") ||
|
||||
// (format == "tiff") ||
|
||||
// (format == "jpg") ||
|
||||
// (format == "jpeg") ||
|
||||
// (format == "png") ||
|
||||
// (format == "xpm")) {
|
||||
|
||||
// QGroupBox *transparencyGroupBox = new QGroupBox(tr("Transparency"),this);
|
||||
// QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout(transparencyGroupBox);
|
||||
|
||||
// boxTransparency = new QCheckBox("Save transparency",transparencyGroupBox);
|
||||
// boxTransparency->setChecked( false );
|
||||
|
||||
// transparencyGroupBoxLayout->addWidget(boxTransparency);
|
||||
// #if QT_VERSION >= 0x040000
|
||||
// transparencyGroupBox->setLayout(transparencyGroupBoxLayout);
|
||||
// #endif
|
||||
// globalVLayout->addWidget(transparencyGroupBox);
|
||||
|
||||
// }
|
||||
|
||||
// FIXME : L. Garnier 4/12/07
|
||||
// This is not working for PS and PDF images, it does nothing.
|
||||
// Image is staying in color mode
|
||||
// if ((format == "ps") || (format == "pdf") || (format == "eps")) {
|
||||
|
||||
|
||||
// size box
|
||||
|
||||
QWidget * sizeWidget = new QWidget(this); // widget containing group button
|
||||
QVBoxLayout * sizeWidgetLayout = new QVBoxLayout(sizeWidget);
|
||||
sizeWidgetLayout->setMargin (10);
|
||||
|
||||
// original and modify radiobuttons
|
||||
#if QT_VERSION < 0x040000
|
||||
QButtonGroup * sizeButtonGroupBox = new QButtonGroup ( 2,Qt::Vertical, tr("Size"),this);
|
||||
sizeButtonGroupBox->setInsideMargin (15);
|
||||
|
||||
original = new QRadioButton("Original",sizeButtonGroupBox);
|
||||
modify = new QRadioButton("Modify",sizeButtonGroupBox);
|
||||
|
||||
sizeButtonGroupBox->insert(original);
|
||||
sizeButtonGroupBox->insert(modify);
|
||||
sizeButtonGroupBox->setExclusive(true);
|
||||
sizeWidgetLayout->add(sizeButtonGroupBox);
|
||||
|
||||
connect( sizeButtonGroupBox, SIGNAL( clicked(int) ), this, SLOT( changeSizeBox()) );
|
||||
#else
|
||||
|
||||
sizeGroupBox = new QGroupBox(tr("Size"));
|
||||
QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout(sizeGroupBox);
|
||||
QButtonGroup * sizeButtonGroupBox = new QButtonGroup();
|
||||
sizeGroupBoxLayout->setMargin (15);
|
||||
|
||||
original = new QRadioButton("Original");
|
||||
modify = new QRadioButton("Modify");
|
||||
|
||||
sizeButtonGroupBox->addButton(original);
|
||||
sizeButtonGroupBox->addButton(modify);
|
||||
sizeButtonGroupBox->setExclusive(true);
|
||||
|
||||
sizeGroupBoxLayout->addWidget(original);
|
||||
sizeGroupBoxLayout->addWidget(modify);
|
||||
|
||||
sizeGroupBox->setLayout(sizeGroupBoxLayout);
|
||||
sizeWidgetLayout->addWidget(sizeGroupBox);
|
||||
|
||||
connect( sizeButtonGroupBox, SIGNAL( buttonClicked(QAbstractButton*) ), this, SLOT( changeSizeBox()) );
|
||||
#endif
|
||||
original->setChecked( true );
|
||||
|
||||
|
||||
// height
|
||||
heightWidget = new QWidget(sizeWidget);
|
||||
|
||||
QHBoxLayout *heightLineLayout = new QHBoxLayout(heightWidget);
|
||||
|
||||
QString tmp;
|
||||
|
||||
heightLineLayout->addWidget(new QLabel("Height",heightWidget));
|
||||
height = new QLineEdit(tmp.setNum(originalHeight),heightWidget);
|
||||
height->setMaxLength(5);
|
||||
#if QT_VERSION < 0x040000
|
||||
heightLineLayout->add(height);
|
||||
#else
|
||||
heightLineLayout->addWidget(height);
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
heightWidget->setLayout(heightLineLayout);
|
||||
#endif
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
sizeWidgetLayout->add(heightWidget);
|
||||
#else
|
||||
sizeWidgetLayout->addWidget(heightWidget);
|
||||
#endif
|
||||
connect( height, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textHeightChanged(const QString &) ) );
|
||||
|
||||
|
||||
// width
|
||||
widthWidget = new QWidget(sizeWidget);
|
||||
|
||||
QHBoxLayout *widthLineLayout = new QHBoxLayout(widthWidget);
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
widthLineLayout->add(new QLabel("Width ",widthWidget));
|
||||
#else
|
||||
widthLineLayout->addWidget(new QLabel("Width ",widthWidget));
|
||||
#endif
|
||||
width = new QLineEdit(tmp.setNum(originalWidth),widthWidget);
|
||||
width->setMaxLength(5);
|
||||
#if QT_VERSION < 0x040000
|
||||
widthLineLayout->add(width);
|
||||
#else
|
||||
widthLineLayout->addWidget(width);
|
||||
#endif
|
||||
#if QT_VERSION >= 0x040000
|
||||
widthWidget->setLayout(widthLineLayout);
|
||||
#endif
|
||||
#if QT_VERSION < 0x040000
|
||||
sizeWidgetLayout->add(widthWidget);
|
||||
#else
|
||||
sizeWidgetLayout->addWidget(widthWidget);
|
||||
#endif
|
||||
connect( width, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textWidthChanged(const QString &) ) );
|
||||
|
||||
|
||||
|
||||
// ratio check box
|
||||
|
||||
ratioCheckBox = new QCheckBox( "Keep ratio",sizeWidget);
|
||||
ratioCheckBox->setChecked( true );
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
sizeWidgetLayout->add(ratioCheckBox);
|
||||
#else
|
||||
sizeWidgetLayout->addWidget(ratioCheckBox);
|
||||
#endif
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
ratioCheckBox->setEnabled ( false );
|
||||
heightWidget->setEnabled ( false );
|
||||
widthWidget->setEnabled ( false );
|
||||
#else
|
||||
ratioCheckBox->hide();
|
||||
heightWidget->hide();
|
||||
widthWidget->hide();
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
sizeWidget->setLayout(sizeWidgetLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(sizeWidget);
|
||||
|
||||
if (format == "eps") {
|
||||
|
||||
QGroupBox *EPSWidgetGroupBox = new QGroupBox(tr("EPS options"),this); // widget containing group button
|
||||
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
|
||||
EPSWidgetGroupBox->setInsideMargin (15);
|
||||
|
||||
// QButtonGroup * EPSColorButtonGroupBox = new QButtonGroup( 2,Qt::Vertical, tr("EPS options"),this);
|
||||
// EPSGroupBoxLayout = new QVBoxLayout(EPSColorButtonGroupBox);
|
||||
// colorButton = new QRadioButton("Color",EPSColorButtonGroupBox);
|
||||
// BWButton = new QRadioButton("Grayscale",EPSColorButtonGroupBox);
|
||||
// EPSColorButtonGroupBox->setInsideMargin (15);
|
||||
// EPSColorButtonGroupBox->insert(colorButton);
|
||||
// EPSColorButtonGroupBox->insert(BWButton);
|
||||
// EPSColorButtonGroupBox->setExclusive(true);
|
||||
// EPSWidgetGroupBox->add(EPSColorButtonGroupBox);
|
||||
|
||||
vectorEPSCheckBox = new QCheckBox( "Vector EPS File",EPSWidgetGroupBox);
|
||||
|
||||
#else
|
||||
QVBoxLayout * EPSGroupBoxLayout = new QVBoxLayout(EPSWidgetGroupBox);
|
||||
EPSGroupBoxLayout->setMargin (15);
|
||||
|
||||
// colorButton = new QRadioButton("Color",EPSWidgetGroupBox);
|
||||
// BWButton = new QRadioButton("Grayscale",EPSWidgetGroupBox);
|
||||
|
||||
// QButtonGroup * EPSColorButtonGroupBox = new QButtonGroup();
|
||||
// EPSColorButtonGroupBox->addButton(colorButton);
|
||||
// EPSColorButtonGroupBox->addButton(BWButton);
|
||||
// EPSColorButtonGroupBox->setExclusive(true);
|
||||
|
||||
// EPSGroupBoxLayout->addWidget(colorButton);
|
||||
// EPSGroupBoxLayout->addWidget(BWButton);
|
||||
|
||||
vectorEPSCheckBox = new QCheckBox( "Vector EPS File",EPSWidgetGroupBox);
|
||||
EPSGroupBoxLayout->addWidget(vectorEPSCheckBox);
|
||||
|
||||
EPSWidgetGroupBox->setLayout(EPSGroupBoxLayout);
|
||||
#endif
|
||||
// colorButton->setChecked( true );
|
||||
vectorEPSCheckBox->setChecked( true );
|
||||
|
||||
QGroupBox *imageGroupBox = new QGroupBox(tr("Image quality"));
|
||||
#if QT_VERSION < 0x040000
|
||||
QVBoxLayout *imageGroupBoxLayout = new QVBoxLayout(imageGroupBox);
|
||||
#else
|
||||
QVBoxLayout *imageGroupBoxLayout = new QVBoxLayout;
|
||||
#endif
|
||||
QWidget *sliderBox = new QWidget;
|
||||
globalVLayout->addWidget(EPSWidgetGroupBox);
|
||||
connect( vectorEPSCheckBox, SIGNAL( clicked() ), this, SLOT( changeVectorEPS()) );
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QHBoxLayout *hSlider = new QHBoxLayout(sliderBox);
|
||||
#else
|
||||
QHBoxLayout *hSlider = new QHBoxLayout;
|
||||
#endif
|
||||
}
|
||||
|
||||
// qualityLabel = new QLabel( tr( "Image quality" ) );
|
||||
// imageGroupBoxLayout->addWidget(qualityLabel);
|
||||
qualitySlider= new QSlider(Qt::Horizontal,0);
|
||||
if ((format == "jpg") ||
|
||||
(format == "jpeg")) {
|
||||
|
||||
QGroupBox *imageGroupBox = new QGroupBox(tr("Image quality"),this);
|
||||
QHBoxLayout *hSliderLayout = new QHBoxLayout(imageGroupBox);
|
||||
hSliderLayout->setMargin (15);
|
||||
|
||||
qualitySlider= new QSlider(Qt::Horizontal,imageGroupBox);
|
||||
#if QT_VERSION < 0x040000
|
||||
qualitySlider->setMinValue(0);
|
||||
qualitySlider->setMaxValue(100);
|
||||
@@ -106,185 +302,38 @@ G4OpenGLQtExportDialog::G4OpenGLQtExportDialog(
|
||||
qualitySlider->setTickPosition(QSlider::TicksBelow);
|
||||
#endif
|
||||
qualitySlider->setValue(60);
|
||||
hSlider->addWidget(new QLabel("low",0));
|
||||
hSlider->addWidget(qualitySlider);
|
||||
hSlider->addWidget(new QLabel("Maximum",0));
|
||||
hSliderLayout->addWidget(new QLabel("Low ",imageGroupBox));
|
||||
hSliderLayout->addWidget(qualitySlider);
|
||||
hSliderLayout->addWidget(new QLabel(" Maximum",imageGroupBox));
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
sliderBox->setLayout(hSlider);
|
||||
imageGroupBox->setLayout(hSliderLayout);
|
||||
#endif
|
||||
imageGroupBoxLayout->addWidget(sliderBox);
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
imageGroupBox->setLayout(imageGroupBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(imageGroupBox);
|
||||
}
|
||||
|
||||
if(nomFich.endsWith(".eps")) {
|
||||
QGroupBox *EPSGroupBox = new QGroupBox(tr("EPS options"));
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QVBoxLayout *EPSGroupBoxLayout = new QVBoxLayout(EPSGroupBox);
|
||||
#else
|
||||
QVBoxLayout *EPSGroupBoxLayout = new QVBoxLayout;
|
||||
#endif
|
||||
|
||||
// transparencyEPS = new QCheckBox( "transparencyEPS" );
|
||||
// transparencyEPS->setText( "save background" );
|
||||
// transparencyEPS->setChecked( true );
|
||||
|
||||
colorButton = new QRadioButton("Color",0);
|
||||
BWButton = new QRadioButton("Grayscale",0);
|
||||
colorButton->setChecked( true );
|
||||
BWButton->setChecked( false );
|
||||
|
||||
|
||||
// EPSGroupBoxLayout->addWidget(transparencyEPS);
|
||||
EPSGroupBoxLayout->addWidget(colorButton);
|
||||
EPSGroupBoxLayout->addWidget(BWButton);
|
||||
#if QT_VERSION >= 0x040000
|
||||
EPSGroupBox->setLayout(EPSGroupBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(EPSGroupBox);
|
||||
|
||||
}
|
||||
|
||||
if(nomFich.endsWith(".tif") ||
|
||||
nomFich.endsWith(".tiff") ||
|
||||
nomFich.endsWith(".jpg") ||
|
||||
nomFich.endsWith(".png") ||
|
||||
nomFich.endsWith(".xpm")) {
|
||||
|
||||
QGroupBox *transparencyGroupBox = new QGroupBox(tr("Transparency"));
|
||||
#if QT_VERSION < 0x040000
|
||||
QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout(transparencyGroupBox);
|
||||
#else
|
||||
QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout;
|
||||
#endif
|
||||
|
||||
boxTransparency = new QCheckBox("Save transparency",0);
|
||||
boxTransparency->setChecked( false );
|
||||
// boxTransparency->setEnabled(false);
|
||||
|
||||
transparencyGroupBoxLayout->addWidget(boxTransparency);
|
||||
#if QT_VERSION >= 0x040000
|
||||
transparencyGroupBox->setLayout(transparencyGroupBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(transparencyGroupBox);
|
||||
|
||||
}
|
||||
|
||||
// size box
|
||||
QGroupBox *sizeGroupBox = new QGroupBox(tr("Size"));
|
||||
QWidget* modifyAndRatioWidget = new QWidget;
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QHBoxLayout *modifyAndRatioLayout = new QHBoxLayout(modifyAndRatioWidget);
|
||||
QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout(sizeGroupBox);
|
||||
#else
|
||||
QHBoxLayout *modifyAndRatioLayout = new QHBoxLayout;
|
||||
QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout;
|
||||
#endif
|
||||
|
||||
// original button
|
||||
original = new QRadioButton("Original",0);
|
||||
original->setChecked( true );
|
||||
sizeGroupBoxLayout->addWidget(original);
|
||||
|
||||
// modify and ratio
|
||||
modify = new QRadioButton("Modify",0);
|
||||
modify->setChecked( false );
|
||||
|
||||
ratioCheckBox = new QCheckBox( "Keep ratio",0 );
|
||||
ratioCheckBox->setChecked( true );
|
||||
|
||||
modifyAndRatioLayout->addWidget(modify);
|
||||
modifyAndRatioLayout->addWidget(ratioCheckBox);
|
||||
#if QT_VERSION >= 0x040000
|
||||
modifyAndRatioWidget->setLayout(modifyAndRatioLayout);
|
||||
#endif
|
||||
sizeGroupBoxLayout->addWidget(modifyAndRatioWidget);
|
||||
if (modify->isChecked()) {
|
||||
ratioCheckBox->show();
|
||||
} else {
|
||||
ratioCheckBox->hide();
|
||||
}
|
||||
|
||||
connect( original, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(true)) );
|
||||
connect( modify, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(false) ) );
|
||||
|
||||
// height
|
||||
heightWidget = new QWidget;
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QHBoxLayout *heightLineLayout = new QHBoxLayout(heightWidget);
|
||||
#else
|
||||
QHBoxLayout *heightLineLayout = new QHBoxLayout;
|
||||
#endif
|
||||
|
||||
QString tmp;
|
||||
|
||||
heightLineLayout->addWidget(new QLabel("Height",0));
|
||||
height = new QLineEdit(tmp.setNum(originalHeight),0);
|
||||
height->setMaxLength(5);
|
||||
heightLineLayout->addWidget(height);
|
||||
#if QT_VERSION >= 0x040000
|
||||
heightWidget->setLayout(heightLineLayout);
|
||||
#endif
|
||||
sizeGroupBoxLayout->addWidget(heightWidget);
|
||||
connect( height, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textHeightChanged(const QString &) ) );
|
||||
|
||||
|
||||
// width
|
||||
widthWidget = new QWidget;
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QHBoxLayout *widthLineLayout = new QHBoxLayout(widthWidget);
|
||||
#else
|
||||
QHBoxLayout *widthLineLayout = new QHBoxLayout;
|
||||
#endif
|
||||
|
||||
widthLineLayout->addWidget(new QLabel("Width ",0));
|
||||
width = new QLineEdit(tmp.setNum(originalWidth),0);
|
||||
width->setMaxLength(5);
|
||||
widthLineLayout->addWidget(width);
|
||||
#if QT_VERSION >= 0x040000
|
||||
widthWidget->setLayout(widthLineLayout);
|
||||
#endif
|
||||
sizeGroupBoxLayout->addWidget(widthWidget);
|
||||
connect( width, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textWidthChanged(const QString &) ) );
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
sizeGroupBox->setLayout(sizeGroupBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(sizeGroupBox);
|
||||
|
||||
heightWidget->hide();
|
||||
widthWidget->hide();
|
||||
|
||||
// button ok/cancel box
|
||||
|
||||
QGroupBox *buttonGroupBox = new QGroupBox();
|
||||
QWidget *buttonBox = new QWidget(this);
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
QHBoxLayout *buttonGroupBoxLayout = new QHBoxLayout(buttonGroupBox);
|
||||
#else
|
||||
QHBoxLayout *buttonGroupBoxLayout = new QHBoxLayout;
|
||||
#endif
|
||||
QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox);
|
||||
|
||||
buttonOk = new QPushButton( tr( "&OK" ),0 );
|
||||
buttonOk = new QPushButton( tr( "&OK" ),buttonBox );
|
||||
buttonOk->setAutoDefault( TRUE );
|
||||
buttonOk->setDefault( TRUE );
|
||||
buttonGroupBoxLayout->addWidget(buttonOk);
|
||||
buttonBoxLayout->addWidget(buttonOk);
|
||||
|
||||
buttonCancel = new QPushButton( tr( "&Cancel" ),0 );
|
||||
buttonCancel = new QPushButton( tr( "&Cancel" ),buttonBox );
|
||||
buttonCancel->setAutoDefault( TRUE );
|
||||
buttonGroupBoxLayout->addWidget(buttonCancel);
|
||||
buttonBoxLayout->addWidget(buttonCancel);
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
buttonGroupBox->setLayout(buttonGroupBoxLayout);
|
||||
buttonBox->setLayout(buttonBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(buttonGroupBox);
|
||||
globalVLayout->addWidget(buttonBox);
|
||||
|
||||
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
@@ -306,17 +355,17 @@ int G4OpenGLQtExportDialog::getSliderValue()
|
||||
|
||||
int G4OpenGLQtExportDialog::getHeight()
|
||||
{
|
||||
if (!height) return -1;
|
||||
if (!height) return originalHeight;
|
||||
return height->text().toInt();
|
||||
}
|
||||
|
||||
int G4OpenGLQtExportDialog::getWidth()
|
||||
{
|
||||
if (!width) return -1;
|
||||
if (!width) return originalWidth;
|
||||
return width->text().toInt();
|
||||
}
|
||||
|
||||
bool G4OpenGLQtExportDialog::getTransparency()
|
||||
int G4OpenGLQtExportDialog::getTransparency()
|
||||
{
|
||||
if (!boxTransparency) return -1;
|
||||
return boxTransparency->isChecked();
|
||||
@@ -324,6 +373,7 @@ bool G4OpenGLQtExportDialog::getTransparency()
|
||||
|
||||
int G4OpenGLQtExportDialog::getNbColor()
|
||||
{
|
||||
if (!colorButton) return -1;
|
||||
// Black and white
|
||||
if (!colorButton->isChecked())
|
||||
return 1;
|
||||
@@ -331,32 +381,89 @@ int G4OpenGLQtExportDialog::getNbColor()
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtExportDialog::changeSizeBox(bool aClick)
|
||||
bool G4OpenGLQtExportDialog::getVectorEPS()
|
||||
{
|
||||
if (aClick) {
|
||||
modify->toggle();
|
||||
if (!vectorEPSCheckBox) return 0;
|
||||
return vectorEPSCheckBox->isChecked();
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtExportDialog::changeVectorEPS()
|
||||
{
|
||||
if (!vectorEPSCheckBox) return;
|
||||
if (vectorEPSCheckBox->isChecked()) {
|
||||
#if QT_VERSION < 0x040000
|
||||
original->setEnabled ( true );
|
||||
modify->setEnabled ( true );
|
||||
#else
|
||||
sizeGroupBox->show();
|
||||
original->show();
|
||||
modify->show();
|
||||
#endif
|
||||
changeSizeBox();
|
||||
} else {
|
||||
original->toggle();
|
||||
}
|
||||
if ( original->isChecked()) {
|
||||
#if QT_VERSION < 0x040000
|
||||
original->setEnabled ( false );
|
||||
modify->setEnabled ( false );
|
||||
ratioCheckBox->setEnabled ( false );
|
||||
heightWidget->setEnabled ( false );
|
||||
widthWidget->setEnabled ( false );
|
||||
#else
|
||||
sizeGroupBox->hide();
|
||||
original->hide();
|
||||
modify->hide();
|
||||
ratioCheckBox->hide();
|
||||
heightWidget->hide();
|
||||
widthWidget->hide();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtExportDialog::changeSizeBox()
|
||||
{
|
||||
if (!original) return;
|
||||
if (!heightWidget) return;
|
||||
if (!widthWidget) return;
|
||||
if (!ratioCheckBox) return;
|
||||
|
||||
if ( original->isChecked()) {
|
||||
#if QT_VERSION < 0x040000
|
||||
ratioCheckBox->setEnabled ( false );
|
||||
heightWidget->setEnabled ( false );
|
||||
widthWidget->setEnabled ( false );
|
||||
#else
|
||||
ratioCheckBox->hide();
|
||||
heightWidget->hide();
|
||||
widthWidget->hide();
|
||||
#endif
|
||||
} else {
|
||||
#if QT_VERSION < 0x040000
|
||||
ratioCheckBox->setEnabled ( true );
|
||||
heightWidget->setEnabled ( true );
|
||||
widthWidget->setEnabled ( true );
|
||||
#else
|
||||
heightWidget->show();
|
||||
widthWidget->show();
|
||||
ratioCheckBox->show();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtExportDialog::textWidthChanged(
|
||||
const QString & s
|
||||
)
|
||||
{
|
||||
if (!ratioCheckBox) return;
|
||||
if (!width) return;
|
||||
if (isChangingSize == true) return; // exclusive slot
|
||||
|
||||
if (ratioCheckBox->isChecked()){
|
||||
isChangingSize = true;
|
||||
QString tmp;
|
||||
width->setText(tmp.setNum(s.toInt()*originalHeight/originalHeight));
|
||||
height->setText(tmp.setNum((int)(s.toInt()*(double)((double)originalHeight/(double)originalWidth))));
|
||||
isChangingSize = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -364,9 +471,15 @@ void G4OpenGLQtExportDialog:: textHeightChanged(
|
||||
const QString & s
|
||||
)
|
||||
{
|
||||
if (!ratioCheckBox) return;
|
||||
if (!width) return;
|
||||
if (isChangingSize == true) return; // exclusive slot
|
||||
|
||||
if (ratioCheckBox->isChecked()){
|
||||
isChangingSize = true;
|
||||
QString tmp;
|
||||
width->setText(tmp.setNum(s.toInt()*originalWidth/originalWidth));
|
||||
width->setText(tmp.setNum(s.toInt()*originalWidth/originalHeight));
|
||||
isChangingSize = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,206 +0,0 @@
|
||||
/****************************************************************************
|
||||
** G4OpenGLQtExportDialog meta object code from reading C++ file 'G4OpenGLQtExportDialog.hh'
|
||||
**
|
||||
** Created: Mon Nov 12 10:36:59 2007
|
||||
** by: The Qt MOC ($Id: G4OpenGLQtExportDialog_moc.cc,v 1.5 2007/11/14 11:49:00 lgarnier Exp $)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#undef QT_NO_COMPAT
|
||||
#include "../include/G4OpenGLQtExportDialog.hh"
|
||||
#include <qmetaobject.h>
|
||||
#include <qapplication.h>
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
|
||||
#include <private/qucomextra_p.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
|
||||
#error "This file was generated using the moc from 3.3.5. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
const char *G4OpenGLQtExportDialog::className() const
|
||||
{
|
||||
return "G4OpenGLQtExportDialog";
|
||||
}
|
||||
|
||||
QMetaObject *G4OpenGLQtExportDialog::metaObj = 0;
|
||||
static QMetaObjectCleanUp cleanUp_G4OpenGLQtExportDialog( "G4OpenGLQtExportDialog", &G4OpenGLQtExportDialog::staticMetaObject );
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
QString G4OpenGLQtExportDialog::tr( const char *s, const char *c )
|
||||
{
|
||||
if ( qApp )
|
||||
return qApp->translate( "G4OpenGLQtExportDialog", s, c, QApplication::DefaultCodec );
|
||||
else
|
||||
return QString::fromLatin1( s );
|
||||
}
|
||||
#ifndef QT_NO_TRANSLATION_UTF8
|
||||
QString G4OpenGLQtExportDialog::trUtf8( const char *s, const char *c )
|
||||
{
|
||||
if ( qApp )
|
||||
return qApp->translate( "G4OpenGLQtExportDialog", s, c, QApplication::UnicodeUTF8 );
|
||||
else
|
||||
return QString::fromUtf8( s );
|
||||
}
|
||||
#endif // QT_NO_TRANSLATION_UTF8
|
||||
|
||||
#endif // QT_NO_TRANSLATION
|
||||
|
||||
QMetaObject* G4OpenGLQtExportDialog::staticMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return metaObj;
|
||||
QMetaObject* parentObject = QDialog::staticMetaObject();
|
||||
static const QUParameter param_slot_0[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_0 = {"changeSizeBox", 1, param_slot_0 };
|
||||
static const QUParameter param_slot_1[] = {
|
||||
{ 0, &static_QUType_QString, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_1 = {"textWidthChanged", 1, param_slot_1 };
|
||||
static const QUParameter param_slot_2[] = {
|
||||
{ 0, &static_QUType_QString, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_2 = {"textHeightChanged", 1, param_slot_2 };
|
||||
static const QMetaData slot_tbl[] = {
|
||||
{ "changeSizeBox(bool)", &slot_0, QMetaData::Public },
|
||||
{ "textWidthChanged(const QString&)", &slot_1, QMetaData::Public },
|
||||
{ "textHeightChanged(const QString&)", &slot_2, QMetaData::Public }
|
||||
};
|
||||
metaObj = QMetaObject::new_metaobject(
|
||||
"G4OpenGLQtExportDialog", parentObject,
|
||||
slot_tbl, 3,
|
||||
0, 0,
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
0, 0,
|
||||
0, 0,
|
||||
#endif // QT_NO_PROPERTIES
|
||||
0, 0 );
|
||||
cleanUp_G4OpenGLQtExportDialog.setMetaObject( metaObj );
|
||||
return metaObj;
|
||||
}
|
||||
|
||||
void* G4OpenGLQtExportDialog::qt_cast( const char* clname )
|
||||
{
|
||||
if ( !qstrcmp( clname, "G4OpenGLQtExportDialog" ) )
|
||||
return this;
|
||||
return QDialog::qt_cast( clname );
|
||||
}
|
||||
|
||||
bool G4OpenGLQtExportDialog::qt_invoke( int _id, QUObject* _o )
|
||||
{
|
||||
switch ( _id - staticMetaObject()->slotOffset() ) {
|
||||
case 0: changeSizeBox((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 1: textWidthChanged((const QString&)static_QUType_QString.get(_o+1)); break;
|
||||
case 2: textHeightChanged((const QString&)static_QUType_QString.get(_o+1)); break;
|
||||
default:
|
||||
return QDialog::qt_invoke( _id, _o );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool G4OpenGLQtExportDialog::qt_emit( int _id, QUObject* _o )
|
||||
{
|
||||
return QDialog::qt_emit(_id,_o);
|
||||
}
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
|
||||
bool G4OpenGLQtExportDialog::qt_property( int id, int f, QVariant* v)
|
||||
{
|
||||
return QDialog::qt_property( id, f, v);
|
||||
}
|
||||
|
||||
bool G4OpenGLQtExportDialog::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
|
||||
#endif // QT_NO_PROPERTIES
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'G4OpenGLQtExportDialog.hh'
|
||||
**
|
||||
** Created: Fri Sep 28 12:35:41 2007
|
||||
** by: The Qt Meta Object Compiler version 59 (Qt 4.2.2)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#include "../include/G4OpenGLQtExportDialog.hh"
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'G4OpenGLQtExportDialog.hh' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 59
|
||||
#error "This file was generated using the moc from 4.2.2. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
static const uint qt_meta_data_G4OpenGLQtExportDialog[] = {
|
||||
|
||||
// content:
|
||||
1, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
3, 10, // methods
|
||||
0, 0, // properties
|
||||
0, 0, // enums/sets
|
||||
|
||||
// slots: signature, parameters, type, tag, flags
|
||||
23, 43, 43, 43, 0x0a,
|
||||
44, 43, 43, 43, 0x0a,
|
||||
70, 43, 43, 43, 0x0a,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
static const char qt_meta_stringdata_G4OpenGLQtExportDialog[] = {
|
||||
"G4OpenGLQtExportDialog\0changeSizeBox(bool)\0"
|
||||
"\0textWidthChanged(QString)\0"
|
||||
"textHeightChanged(QString)\0"
|
||||
};
|
||||
|
||||
const QMetaObject G4OpenGLQtExportDialog::staticMetaObject = {
|
||||
{ &QDialog::staticMetaObject, qt_meta_stringdata_G4OpenGLQtExportDialog,
|
||||
qt_meta_data_G4OpenGLQtExportDialog, 0 }
|
||||
};
|
||||
|
||||
const QMetaObject *G4OpenGLQtExportDialog::metaObject() const
|
||||
{
|
||||
return &staticMetaObject;
|
||||
}
|
||||
|
||||
void *G4OpenGLQtExportDialog::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return 0;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_G4OpenGLQtExportDialog))
|
||||
return static_cast<void*>(const_cast<G4OpenGLQtExportDialog*>(this));
|
||||
return QDialog::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int G4OpenGLQtExportDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QDialog::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
switch (_id) {
|
||||
case 0: changeSizeBox((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 1: textWidthChanged((*reinterpret_cast< const QString(*)>(_a[1]))); break;
|
||||
case 2: textHeightChanged((*reinterpret_cast< const QString(*)>(_a[1]))); break;
|
||||
}
|
||||
_id -= 3;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,594 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLQtMovieDialog.cc,v 1.8 2008/10/24 13:49:19 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#include "G4OpenGLQtMovieDialog.hh"
|
||||
#include "G4OpenGLQtViewer.hh"
|
||||
|
||||
#include <qpushbutton.h>
|
||||
#include <qpalette.h>
|
||||
#include <qlabel.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <qlayout.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qfiledialog.h>
|
||||
#include <qprocess.h>
|
||||
|
||||
|
||||
// +---------------------------------------+
|
||||
// + Path for encoder +
|
||||
// + _______ +
|
||||
// + | select| ____________________ +
|
||||
// + ------- +
|
||||
// + Temp path +
|
||||
// + _______ +
|
||||
// + | select| ____________________ +
|
||||
// + ------- +
|
||||
// + +
|
||||
// + max number of frames ________ +
|
||||
// + .... +
|
||||
// + +
|
||||
// + Label : X frames Saves/Encoding +
|
||||
// + Cancel Encode +
|
||||
// +---------------------------------------+
|
||||
|
||||
G4OpenGLQtMovieDialog::G4OpenGLQtMovieDialog(
|
||||
G4OpenGLQtViewer* parentViewer,
|
||||
QWidget* parentWidget
|
||||
)
|
||||
: QDialog( parentWidget ),
|
||||
fParentViewer(parentViewer)
|
||||
{
|
||||
#if QT_VERSION > 0x030200
|
||||
setModal(false);
|
||||
#endif
|
||||
#if QT_VERSION < 0x040000
|
||||
setCaption( tr( " Movie parameters" ));
|
||||
#else
|
||||
setWindowTitle( tr( " Movie parameters" ));
|
||||
#endif
|
||||
|
||||
|
||||
// global layout
|
||||
QVBoxLayout* globalVLayout = new QVBoxLayout(this);
|
||||
globalVLayout->setMargin(10);
|
||||
globalVLayout->setSpacing(10);
|
||||
|
||||
// Encoder group box
|
||||
QGroupBox *encoderGroupBox = new QGroupBox(tr("Encoder path"),this);
|
||||
QVBoxLayout *encoderVGroupBoxLayout = new QVBoxLayout(encoderGroupBox);
|
||||
|
||||
// Encoder Path
|
||||
QWidget *encoderHBox = new QWidget(encoderGroupBox);
|
||||
QHBoxLayout *encoderHBoxLayout = new QHBoxLayout(encoderHBox);
|
||||
fEncoderPath = new QLineEdit("",encoderHBox);
|
||||
|
||||
QPushButton *encoderButton = new QPushButton(tr("..."),encoderHBox);
|
||||
encoderButton->setMaximumWidth (30);
|
||||
|
||||
fEncoderStatus = new QLabel(encoderGroupBox);
|
||||
|
||||
#if QT_VERSION > 0x040000
|
||||
fEncoderStatus->setWordWrap(true);
|
||||
encoderVGroupBoxLayout->setMargin(15);
|
||||
#else
|
||||
fEncoderStatus->setAlignment ( Qt::AlignAuto |Qt::WordBreak );
|
||||
encoderGroupBox->setInsideMargin(15);
|
||||
#endif
|
||||
|
||||
fEncoderStatus->setText("");
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
encoderHBoxLayout->add(fEncoderPath);
|
||||
encoderHBoxLayout->add(encoderButton);
|
||||
encoderVGroupBoxLayout->add(encoderHBox);
|
||||
encoderVGroupBoxLayout->add(fEncoderStatus);
|
||||
|
||||
globalVLayout->add(encoderGroupBox);
|
||||
#else
|
||||
encoderHBoxLayout->addWidget(fEncoderPath);
|
||||
encoderHBoxLayout->addWidget(encoderButton);
|
||||
encoderVGroupBoxLayout->addWidget(encoderHBox);
|
||||
encoderVGroupBoxLayout->addWidget(fEncoderStatus);
|
||||
|
||||
encoderGroupBox->setLayout(encoderVGroupBoxLayout);
|
||||
globalVLayout->addWidget(encoderGroupBox);
|
||||
#endif
|
||||
|
||||
connect( encoderButton, SIGNAL( clicked( ) ), this, SLOT(selectEncoderPathAction() ) );
|
||||
|
||||
|
||||
// temp folder group box
|
||||
QGroupBox *tempFolderGroupBox = new QGroupBox(tr("Temporary folder path"),this);
|
||||
QVBoxLayout *tempFolderVGroupBoxLayout = new QVBoxLayout(tempFolderGroupBox);
|
||||
|
||||
// temp folder Path
|
||||
QWidget *tempFolderHBox = new QWidget(tempFolderGroupBox);
|
||||
QHBoxLayout *tempFolderHBoxLayout = new QHBoxLayout(tempFolderHBox);
|
||||
|
||||
fTempFolderPath = new QLineEdit("",tempFolderHBox);
|
||||
|
||||
QPushButton *tempButton = new QPushButton(tr("..."),tempFolderHBox);
|
||||
tempButton->setMaximumWidth (30);
|
||||
|
||||
fTempFolderStatus = new QLabel(tempFolderGroupBox);
|
||||
#if QT_VERSION > 0x040000
|
||||
fTempFolderStatus->setWordWrap(true);
|
||||
tempFolderVGroupBoxLayout->setMargin(15);
|
||||
#else
|
||||
fTempFolderStatus->setAlignment ( Qt::AlignAuto |Qt::WordBreak );
|
||||
tempFolderGroupBox->setInsideMargin(15);
|
||||
#endif
|
||||
fTempFolderStatus->setText("");
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
tempFolderHBoxLayout->add(fTempFolderPath);
|
||||
tempFolderHBoxLayout->add(tempButton);
|
||||
tempFolderVGroupBoxLayout->add(tempFolderHBox);
|
||||
tempFolderVGroupBoxLayout->add(fTempFolderStatus);
|
||||
|
||||
globalVLayout->add(tempFolderGroupBox);
|
||||
#else
|
||||
tempFolderHBoxLayout->addWidget(fTempFolderPath);
|
||||
tempFolderHBoxLayout->addWidget(tempButton);
|
||||
tempFolderVGroupBoxLayout->addWidget(tempFolderHBox);
|
||||
tempFolderVGroupBoxLayout->addWidget(fTempFolderStatus);
|
||||
|
||||
tempFolderGroupBox->setLayout(tempFolderVGroupBoxLayout);
|
||||
globalVLayout->addWidget(tempFolderGroupBox);
|
||||
#endif
|
||||
|
||||
connect( tempButton, SIGNAL( clicked( ) ), this, SLOT(selectTempPathAction() ) );
|
||||
|
||||
|
||||
|
||||
|
||||
// save file group box
|
||||
QGroupBox *saveFileGroupBox = new QGroupBox(tr("Save as"),this);
|
||||
QVBoxLayout *saveFileVGroupBoxLayout = new QVBoxLayout(saveFileGroupBox);
|
||||
|
||||
// save file
|
||||
QWidget *saveFileHBox = new QWidget(saveFileGroupBox);
|
||||
QHBoxLayout *saveFileHBoxLayout = new QHBoxLayout(saveFileHBox);
|
||||
|
||||
fSaveFileName = new QLineEdit("G4Movie.mpeg",saveFileHBox);
|
||||
|
||||
QPushButton *saveButton = new QPushButton(tr("..."),saveFileHBox);
|
||||
saveButton->setMaximumWidth (30);
|
||||
|
||||
fSaveFileStatus = new QLabel(saveFileGroupBox);
|
||||
#if QT_VERSION > 0x040000
|
||||
fSaveFileStatus->setWordWrap(true);
|
||||
saveFileVGroupBoxLayout->setMargin(15);
|
||||
#else
|
||||
fSaveFileStatus->setAlignment ( Qt::AlignAuto |Qt::WordBreak );
|
||||
saveFileGroupBox->setInsideMargin(15);
|
||||
#endif
|
||||
fSaveFileStatus->setText("");
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
saveFileHBoxLayout->add(fSaveFileName);
|
||||
saveFileHBoxLayout->add(saveButton);
|
||||
saveFileVGroupBoxLayout->add(saveFileHBox);
|
||||
saveFileVGroupBoxLayout->add(fSaveFileStatus);
|
||||
|
||||
globalVLayout->add(saveFileGroupBox);
|
||||
#else
|
||||
saveFileHBoxLayout->addWidget(fSaveFileName);
|
||||
saveFileHBoxLayout->addWidget(saveButton);
|
||||
saveFileVGroupBoxLayout->addWidget(saveFileHBox);
|
||||
saveFileVGroupBoxLayout->addWidget(fSaveFileStatus);
|
||||
|
||||
saveFileGroupBox->setLayout(saveFileVGroupBoxLayout);
|
||||
globalVLayout->addWidget(saveFileGroupBox);
|
||||
#endif
|
||||
|
||||
connect( saveButton, SIGNAL( clicked( ) ), this, SLOT(selectSaveFileNameAction() ) );
|
||||
|
||||
|
||||
|
||||
// label
|
||||
|
||||
QLabel *infoLabel = new QLabel(" Press SPACE to Start/Pause video recording \n Press RETURN to Stop video recording",this);
|
||||
|
||||
// global status
|
||||
QGroupBox *statusGroupBox = new QGroupBox(tr("Status"),this);
|
||||
QVBoxLayout *statusVGroupBoxLayout = new QVBoxLayout(statusGroupBox);
|
||||
|
||||
fRecordingStatus = new QLabel(statusGroupBox);
|
||||
#if QT_VERSION > 0x040000
|
||||
statusVGroupBoxLayout->setMargin(15);
|
||||
fRecordingStatus->setWordWrap(true);
|
||||
#else
|
||||
statusGroupBox->setInsideMargin(15);
|
||||
fRecordingStatus->setAlignment ( Qt::AlignAuto |Qt::WordBreak );
|
||||
#endif
|
||||
QPalette palette( fRecordingStatus->palette() );
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Text, Qt::green);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Text, Qt::green);
|
||||
#endif
|
||||
fRecordingStatus->setPalette(palette);
|
||||
|
||||
fRecordingInfos = new QLabel(statusGroupBox);
|
||||
#if QT_VERSION > 0x040000
|
||||
fRecordingInfos->setWordWrap(true);
|
||||
#else
|
||||
fRecordingInfos->setAlignment ( Qt::AlignAuto |Qt::WordBreak );
|
||||
#endif
|
||||
setRecordingInfos("");
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
statusVGroupBoxLayout->add(fRecordingStatus);
|
||||
statusVGroupBoxLayout->add(fRecordingInfos);
|
||||
|
||||
globalVLayout->add(infoLabel);
|
||||
globalVLayout->add(statusGroupBox);
|
||||
#else
|
||||
statusVGroupBoxLayout->addWidget(fRecordingStatus);
|
||||
statusVGroupBoxLayout->addWidget(fRecordingInfos);
|
||||
|
||||
statusGroupBox->setLayout(statusVGroupBoxLayout);
|
||||
globalVLayout->addWidget(infoLabel);
|
||||
globalVLayout->addWidget(statusGroupBox);
|
||||
#endif
|
||||
|
||||
// buttons
|
||||
QWidget *buttonBox = new QWidget(this);
|
||||
|
||||
QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox);
|
||||
|
||||
QPushButton *buttonReset = new QPushButton( tr( "&Reset" ),buttonBox );
|
||||
buttonReset->setAutoDefault( TRUE );
|
||||
buttonBoxLayout->addWidget(buttonReset);
|
||||
|
||||
fButtonStartPause = new QPushButton( tr( " &Start " ),buttonBox );
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStartPause->setAutoDefault( TRUE );
|
||||
buttonBoxLayout->addWidget(fButtonStartPause);
|
||||
|
||||
fButtonStopFinishClose = new QPushButton( tr( "&Stop" ),buttonBox );
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonStopFinishClose->setAutoDefault( TRUE );
|
||||
buttonBoxLayout->addWidget(fButtonStopFinishClose);
|
||||
|
||||
fButtonSave = new QPushButton( tr( "&Save" ),buttonBox );
|
||||
fButtonSave->setEnabled(false);
|
||||
fButtonSave->setAutoDefault( TRUE );
|
||||
buttonBoxLayout->addWidget(fButtonSave);
|
||||
|
||||
QPushButton *buttonCancel = new QPushButton( tr( "&Cancel" ),buttonBox );
|
||||
buttonCancel->setAutoDefault( TRUE );
|
||||
buttonBoxLayout->addWidget(buttonCancel);
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
buttonBox->setLayout(buttonBoxLayout);
|
||||
#endif
|
||||
globalVLayout->addWidget(buttonBox);
|
||||
|
||||
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
setLayout(globalVLayout);
|
||||
#endif
|
||||
|
||||
// signals and slots connections
|
||||
connect( fButtonStartPause, SIGNAL( clicked() ), fParentViewer, SLOT( startPauseVideo() ) );
|
||||
connect( buttonReset, SIGNAL( clicked() ), this, SLOT( resetRecording() ) );
|
||||
connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
|
||||
connect( fButtonStopFinishClose, SIGNAL( clicked() ), this, SLOT( stopFinishClose() ) );
|
||||
connect( fButtonSave, SIGNAL( clicked() ), this, SLOT( save() ) );
|
||||
|
||||
// fill
|
||||
setRecordingStatus("");
|
||||
fEncoderPath->setText(fParentViewer->getEncoderPath());
|
||||
fTempFolderPath->setText(fParentViewer->getTempFolderPath());
|
||||
|
||||
// connect line edit signals
|
||||
connect (fEncoderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkEncoderSwParameters()));
|
||||
connect (fTempFolderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkTempFolderParameters()));
|
||||
connect (fSaveFileName,SIGNAL(textChanged ( const QString&)),this,SLOT(checkSaveFileNameParameters()));
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
connect (fEncoderPath,SIGNAL(editingFinished ()),this,SLOT(checkEncoderSwParameters()));
|
||||
connect (fTempFolderPath,SIGNAL(editingFinished ()),this,SLOT(checkTempFolderParameters()));
|
||||
connect (fSaveFileName,SIGNAL(editingFinished ()),this,SLOT(checkSaveFileNameParameters()));
|
||||
#else
|
||||
connect (fEncoderPath,SIGNAL(lostFocus ()),this,SLOT(checkEncoderSwParameters()));
|
||||
connect (fTempFolderPath,SIGNAL(lostFocus ()),this,SLOT(checkTempFolderParameters()));
|
||||
connect (fSaveFileName,SIGNAL(lostFocus ()),this,SLOT(checkSaveFileNameParameters()));
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4OpenGLQtMovieDialog::~G4OpenGLQtMovieDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void G4OpenGLQtMovieDialog::selectEncoderPathAction()
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
QString nomFich = QFileDialog::getOpenFileName ( ".",
|
||||
NULL,
|
||||
this,
|
||||
"Select your encoder",
|
||||
tr("Select your encoder ..."));
|
||||
#else
|
||||
QString nomFich = QFileDialog::getOpenFileName ( this,
|
||||
"Select your encoder",
|
||||
tr("Select your encoder ..."));
|
||||
|
||||
#endif
|
||||
|
||||
if (nomFich == "") {
|
||||
return;
|
||||
}
|
||||
fEncoderPath->setText(nomFich);
|
||||
checkEncoderSwParameters();
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::selectTempPathAction()
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
QString nomFich = QFileDialog::getExistingDirectory (NULL,
|
||||
this,
|
||||
"Select temporary folder",
|
||||
tr("Select temporary folder ..."));
|
||||
#else
|
||||
QString nomFich = QFileDialog::getExistingDirectory ( this,
|
||||
"Select temporary folder",
|
||||
tr("Select temporary folder ..."));
|
||||
|
||||
#endif
|
||||
if (nomFich == "") {
|
||||
return;
|
||||
}
|
||||
fTempFolderPath->setText(nomFich);
|
||||
checkTempFolderParameters();
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::selectSaveFileNameAction()
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
QString nomFich = QFileDialog::getSaveFileName ( ".",
|
||||
NULL,
|
||||
this,
|
||||
"Select saved file",
|
||||
tr("Select saved file ..."));
|
||||
#else
|
||||
QString nomFich = QFileDialog::getSaveFileName ( this,
|
||||
"Select saved file",
|
||||
tr("Select saved file ..."));
|
||||
|
||||
#endif
|
||||
if (nomFich == "") {
|
||||
return;
|
||||
}
|
||||
fSaveFileName->setText(nomFich);
|
||||
checkSaveFileNameParameters();
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::stopFinishClose() {
|
||||
fParentViewer->stopVideo();
|
||||
}
|
||||
|
||||
void G4OpenGLQtMovieDialog::save() {
|
||||
if (((fParentViewer->isPaused()) || fParentViewer->isRecording() || fParentViewer->isStopped())) {
|
||||
fParentViewer->saveVideo();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If one of parameter is incorrect, put it in red and don't valid it
|
||||
* If valid, save it
|
||||
*/
|
||||
bool G4OpenGLQtMovieDialog::checkEncoderSwParameters() {
|
||||
|
||||
bool status = true;
|
||||
QPalette palette( fEncoderPath->palette() );
|
||||
|
||||
QString temp = fParentViewer->setEncoderPath(fEncoderPath->text());
|
||||
setRecordingInfos("");
|
||||
fEncoderStatus->setText(temp);
|
||||
if (temp != "") {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::red);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::red);
|
||||
#endif
|
||||
if (fParentViewer->isReadyToEncode()) {
|
||||
setRecordingInfos("No valid encode defined, screen capture had been saved in the temp folder in ppm format.\nPlease define a encoder and clic on Apply button");
|
||||
}
|
||||
status = false;
|
||||
} else {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::white);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::white);
|
||||
#endif
|
||||
fEncoderPath->setText(fParentViewer->getEncoderPath());
|
||||
}
|
||||
fEncoderPath->setPalette(palette);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If one of parameter is incorrect, put it in red and don't valid it
|
||||
* If valid, save it
|
||||
*/
|
||||
bool G4OpenGLQtMovieDialog::checkTempFolderParameters() {
|
||||
|
||||
bool status = true;
|
||||
QPalette palette( fTempFolderPath->palette() );
|
||||
|
||||
QString temp = fParentViewer->setTempFolderPath(fTempFolderPath->text());
|
||||
fTempFolderStatus->setText(temp);
|
||||
if (temp != "") {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::red);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::red);
|
||||
#endif
|
||||
status = false;
|
||||
} else {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::white);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::white);
|
||||
#endif
|
||||
fTempFolderPath->setText(fParentViewer->getTempFolderPath());
|
||||
}
|
||||
fTempFolderPath->setPalette(palette);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If one of parameter is incorrect, put it in red and don't valid it
|
||||
* If valid, save it
|
||||
*/
|
||||
bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters() {
|
||||
|
||||
bool status = true;
|
||||
QPalette palette( fSaveFileName->palette() );
|
||||
|
||||
QString temp = fParentViewer->setSaveFileName(fSaveFileName->text());
|
||||
fSaveFileStatus->setText(temp);
|
||||
if (temp != "") {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::red);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::red);
|
||||
#endif
|
||||
status = false;
|
||||
} else {
|
||||
#if QT_VERSION > 0x040000
|
||||
palette.setColor( QPalette::Base, Qt::white);
|
||||
#else
|
||||
palette.setColor( QColorGroup::Base, Qt::white);
|
||||
#endif
|
||||
fSaveFileName->setText(fParentViewer->getSaveFileName());
|
||||
}
|
||||
fSaveFileName->setPalette(palette);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::resetRecording() {
|
||||
fParentViewer->resetRecording();
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::setRecordingStatus(QString txt) {
|
||||
fRecordingStatus->setText(txt);
|
||||
if (fParentViewer->isWaiting()) {
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isPaused()) {
|
||||
|
||||
fButtonStartPause->setText(" &Continue ");
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStopFinishClose->setEnabled(true);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isRecording()) {
|
||||
|
||||
fButtonStartPause->setText(" &Pause ");
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStopFinishClose->setEnabled(true);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isBadOutput()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isBadTmp()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(false);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isBadEncoder()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(true);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isSuccess()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(false);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isFailed()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(false);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(false);
|
||||
|
||||
} else if (fParentViewer->isStopped()) {
|
||||
|
||||
fButtonStartPause->setText(" &Start ");
|
||||
fButtonStartPause->setEnabled(false);
|
||||
fButtonStopFinishClose->setEnabled(false);
|
||||
fButtonSave->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::setRecordingInfos(QString txt) {
|
||||
fRecordingInfos->setText(txt);
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLQtMovieDialog::enabledApplyButton() {
|
||||
fButtonStartPause->setEnabled(true);
|
||||
}
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,308 +0,0 @@
|
||||
/****************************************************************************
|
||||
** G4OpenGLQtViewer meta object code from reading C++ file 'G4OpenGLQtViewer.hh'
|
||||
**
|
||||
** Created: Mon Nov 12 10:34:24 2007
|
||||
** by: The Qt MOC ($Id: G4OpenGLQtViewer_moc.cc,v 1.5 2007/11/14 11:49:00 lgarnier Exp $)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#undef QT_NO_COMPAT
|
||||
#include "../include/G4OpenGLQtViewer.hh"
|
||||
#include <qmetaobject.h>
|
||||
#include <qapplication.h>
|
||||
|
||||
#if QT_VERSION < 0x040000
|
||||
|
||||
#include <private/qucomextra_p.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
|
||||
#error "This file was generated using the moc from 3.3.5. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
const char *G4OpenGLQtViewer::className() const
|
||||
{
|
||||
return "G4OpenGLQtViewer";
|
||||
}
|
||||
|
||||
QMetaObject *G4OpenGLQtViewer::metaObj = 0;
|
||||
static QMetaObjectCleanUp cleanUp_G4OpenGLQtViewer( "G4OpenGLQtViewer", &G4OpenGLQtViewer::staticMetaObject );
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
QString G4OpenGLQtViewer::tr( const char *s, const char *c )
|
||||
{
|
||||
if ( qApp )
|
||||
return qApp->translate( "G4OpenGLQtViewer", s, c, QApplication::DefaultCodec );
|
||||
else
|
||||
return QString::fromLatin1( s );
|
||||
}
|
||||
#ifndef QT_NO_TRANSLATION_UTF8
|
||||
QString G4OpenGLQtViewer::trUtf8( const char *s, const char *c )
|
||||
{
|
||||
if ( qApp )
|
||||
return qApp->translate( "G4OpenGLQtViewer", s, c, QApplication::UnicodeUTF8 );
|
||||
else
|
||||
return QString::fromUtf8( s );
|
||||
}
|
||||
#endif // QT_NO_TRANSLATION_UTF8
|
||||
|
||||
#endif // QT_NO_TRANSLATION
|
||||
|
||||
QMetaObject* G4OpenGLQtViewer::staticMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return metaObj;
|
||||
QMetaObject* parentObject = QObject::staticMetaObject();
|
||||
static const QUMethod slot_0 = {"actionDrawingWireframe", 0, 0 };
|
||||
static const QUMethod slot_1 = {"actionDrawingLineRemoval", 0, 0 };
|
||||
static const QUMethod slot_2 = {"actionDrawingSurfaceRemoval", 0, 0 };
|
||||
static const QUMethod slot_3 = {"actionDrawingLineSurfaceRemoval", 0, 0 };
|
||||
static const QUMethod slot_4 = {"actionControlPanels", 0, 0 };
|
||||
static const QUMethod slot_5 = {"actionExitG4", 0, 0 };
|
||||
static const QUMethod slot_6 = {"actionCreateEPS", 0, 0 };
|
||||
static const QUParameter param_slot_7[] = {
|
||||
{ 0, &static_QUType_int, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_7 = {"toggleDrawingAction", 1, param_slot_7 };
|
||||
static const QUParameter param_slot_8[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_8 = {"toggleMouseAction", 1, param_slot_8 };
|
||||
static const QUParameter param_slot_9[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_9 = {"toggleRepresentation", 1, param_slot_9 };
|
||||
static const QUParameter param_slot_10[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_10 = {"toggleBackground", 1, param_slot_10 };
|
||||
static const QUParameter param_slot_11[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_11 = {"toggleTransparency", 1, param_slot_11 };
|
||||
static const QUParameter param_slot_12[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_12 = {"toggleAntialiasing", 1, param_slot_12 };
|
||||
static const QUParameter param_slot_13[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_13 = {"toggleHaloing", 1, param_slot_13 };
|
||||
static const QUParameter param_slot_14[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_14 = {"toggleAux", 1, param_slot_14 };
|
||||
static const QUParameter param_slot_15[] = {
|
||||
{ 0, &static_QUType_bool, 0, QUParameter::In }
|
||||
};
|
||||
static const QUMethod slot_15 = {"toggleFullScreen", 1, param_slot_15 };
|
||||
static const QUMethod slot_16 = {"dialogClosed", 0, 0 };
|
||||
static const QMetaData slot_tbl[] = {
|
||||
{ "actionDrawingWireframe()", &slot_0, QMetaData::Private },
|
||||
{ "actionDrawingLineRemoval()", &slot_1, QMetaData::Private },
|
||||
{ "actionDrawingSurfaceRemoval()", &slot_2, QMetaData::Private },
|
||||
{ "actionDrawingLineSurfaceRemoval()", &slot_3, QMetaData::Private },
|
||||
{ "actionControlPanels()", &slot_4, QMetaData::Private },
|
||||
{ "actionExitG4()", &slot_5, QMetaData::Private },
|
||||
{ "actionCreateEPS()", &slot_6, QMetaData::Private },
|
||||
{ "toggleDrawingAction(int)", &slot_7, QMetaData::Private },
|
||||
{ "toggleMouseAction(bool)", &slot_8, QMetaData::Private },
|
||||
{ "toggleRepresentation(bool)", &slot_9, QMetaData::Private },
|
||||
{ "toggleBackground(bool)", &slot_10, QMetaData::Private },
|
||||
{ "toggleTransparency(bool)", &slot_11, QMetaData::Private },
|
||||
{ "toggleAntialiasing(bool)", &slot_12, QMetaData::Private },
|
||||
{ "toggleHaloing(bool)", &slot_13, QMetaData::Private },
|
||||
{ "toggleAux(bool)", &slot_14, QMetaData::Private },
|
||||
{ "toggleFullScreen(bool)", &slot_15, QMetaData::Private },
|
||||
{ "dialogClosed()", &slot_16, QMetaData::Private }
|
||||
};
|
||||
metaObj = QMetaObject::new_metaobject(
|
||||
"G4OpenGLQtViewer", parentObject,
|
||||
slot_tbl, 17,
|
||||
0, 0,
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
0, 0,
|
||||
0, 0,
|
||||
#endif // QT_NO_PROPERTIES
|
||||
0, 0 );
|
||||
cleanUp_G4OpenGLQtViewer.setMetaObject( metaObj );
|
||||
return metaObj;
|
||||
}
|
||||
|
||||
void* G4OpenGLQtViewer::qt_cast( const char* clname )
|
||||
{
|
||||
if ( !qstrcmp( clname, "G4OpenGLQtViewer" ) )
|
||||
return this;
|
||||
if ( !qstrcmp( clname, "G4OpenGLViewer" ) )
|
||||
return (G4OpenGLViewer*)this;
|
||||
return QObject::qt_cast( clname );
|
||||
}
|
||||
|
||||
bool G4OpenGLQtViewer::qt_invoke( int _id, QUObject* _o )
|
||||
{
|
||||
switch ( _id - staticMetaObject()->slotOffset() ) {
|
||||
case 0: actionDrawingWireframe(); break;
|
||||
case 1: actionDrawingLineRemoval(); break;
|
||||
case 2: actionDrawingSurfaceRemoval(); break;
|
||||
case 3: actionDrawingLineSurfaceRemoval(); break;
|
||||
case 4: actionControlPanels(); break;
|
||||
case 5: actionExitG4(); break;
|
||||
case 6: actionCreateEPS(); break;
|
||||
case 7: toggleDrawingAction((int)static_QUType_int.get(_o+1)); break;
|
||||
case 8: toggleMouseAction((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 9: toggleRepresentation((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 10: toggleBackground((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 11: toggleTransparency((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 12: toggleAntialiasing((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 13: toggleHaloing((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 14: toggleAux((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 15: toggleFullScreen((bool)static_QUType_bool.get(_o+1)); break;
|
||||
case 16: dialogClosed(); break;
|
||||
default:
|
||||
return QObject::qt_invoke( _id, _o );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool G4OpenGLQtViewer::qt_emit( int _id, QUObject* _o )
|
||||
{
|
||||
return QObject::qt_emit(_id,_o);
|
||||
}
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
|
||||
bool G4OpenGLQtViewer::qt_property( int id, int f, QVariant* v)
|
||||
{
|
||||
return QObject::qt_property( id, f, v);
|
||||
}
|
||||
|
||||
bool G4OpenGLQtViewer::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
|
||||
#endif // QT_NO_PROPERTIES
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'G4OpenGLQtViewer.hh'
|
||||
**
|
||||
** Created: Tue Sep 18 17:43:43 2007
|
||||
** by: The Qt Meta Object Compiler version 59 (Qt 4.2.2)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#include "../include/G4OpenGLQtViewer.hh"
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'G4OpenGLQtViewer.hh' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 59
|
||||
#error "This file was generated using the moc from 4.2.2. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
static const uint qt_meta_data_G4OpenGLQtViewer[] = {
|
||||
|
||||
// content:
|
||||
1, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
17, 10, // methods
|
||||
0, 0, // properties
|
||||
0, 0, // enums/sets
|
||||
|
||||
// slots: signature, parameters, type, tag, flags
|
||||
17, 42, 42, 42, 0x08,
|
||||
43, 42, 42, 42, 0x08,
|
||||
70, 42, 42, 42, 0x08,
|
||||
100, 42, 42, 42, 0x08,
|
||||
134, 42, 42, 42, 0x08,
|
||||
156, 42, 42, 42, 0x08,
|
||||
171, 42, 42, 42, 0x08,
|
||||
189, 42, 42, 42, 0x08,
|
||||
214, 42, 42, 42, 0x08,
|
||||
238, 42, 42, 42, 0x08,
|
||||
265, 42, 42, 42, 0x08,
|
||||
288, 42, 42, 42, 0x08,
|
||||
313, 42, 42, 42, 0x08,
|
||||
338, 42, 42, 42, 0x08,
|
||||
358, 42, 42, 42, 0x08,
|
||||
374, 42, 42, 42, 0x08,
|
||||
397, 42, 42, 42, 0x08,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
static const char qt_meta_stringdata_G4OpenGLQtViewer[] = {
|
||||
"G4OpenGLQtViewer\0actionDrawingWireframe()\0"
|
||||
"\0actionDrawingLineRemoval()\0"
|
||||
"actionDrawingSurfaceRemoval()\0"
|
||||
"actionDrawingLineSurfaceRemoval()\0"
|
||||
"actionControlPanels()\0actionExitG4()\0"
|
||||
"actionCreateEPS()\0toggleDrawingAction(int)\0"
|
||||
"toggleMouseAction(bool)\0"
|
||||
"toggleRepresentation(bool)\0"
|
||||
"toggleBackground(bool)\0toggleTransparency(bool)\0"
|
||||
"toggleAntialiasing(bool)\0toggleHaloing(bool)\0"
|
||||
"toggleAux(bool)\0toggleFullScreen(bool)\0"
|
||||
"dialogClosed()\0"
|
||||
};
|
||||
|
||||
const QMetaObject G4OpenGLQtViewer::staticMetaObject = {
|
||||
{ &QObject::staticMetaObject, qt_meta_stringdata_G4OpenGLQtViewer,
|
||||
qt_meta_data_G4OpenGLQtViewer, 0 }
|
||||
};
|
||||
|
||||
const QMetaObject *G4OpenGLQtViewer::metaObject() const
|
||||
{
|
||||
return &staticMetaObject;
|
||||
}
|
||||
|
||||
void *G4OpenGLQtViewer::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return 0;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_G4OpenGLQtViewer))
|
||||
return static_cast<void*>(const_cast<G4OpenGLQtViewer*>(this));
|
||||
if (!strcmp(_clname, "G4OpenGLViewer"))
|
||||
return static_cast<G4OpenGLViewer*>(const_cast<G4OpenGLQtViewer*>(this));
|
||||
return QObject::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int G4OpenGLQtViewer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QObject::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
switch (_id) {
|
||||
case 0: actionDrawingWireframe(); break;
|
||||
case 1: actionDrawingLineRemoval(); break;
|
||||
case 2: actionDrawingSurfaceRemoval(); break;
|
||||
case 3: actionDrawingLineSurfaceRemoval(); break;
|
||||
case 4: actionControlPanels(); break;
|
||||
case 5: actionExitG4(); break;
|
||||
case 6: actionCreateEPS(); break;
|
||||
case 7: toggleDrawingAction((*reinterpret_cast< int(*)>(_a[1]))); break;
|
||||
case 8: toggleMouseAction((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 9: toggleRepresentation((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 10: toggleBackground((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 11: toggleTransparency((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 12: toggleAntialiasing((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 13: toggleHaloing((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 14: toggleAux((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 15: toggleFullScreen((*reinterpret_cast< bool(*)>(_a[1]))); break;
|
||||
case 16: dialogClosed(); break;
|
||||
}
|
||||
_id -= 17;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLSceneHandler.cc,v 1.51 2007/05/25 15:41:38 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLSceneHandler.cc,v 1.54 2008/04/04 13:32:22 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 27th March 1996
|
||||
@@ -71,6 +71,7 @@ G4OpenGLSceneHandler::G4OpenGLSceneHandler (G4VGraphicsSystem& system,
|
||||
const G4String& name):
|
||||
G4VSceneHandler (system, id, name),
|
||||
fPickName(0),
|
||||
fProcessing2D (false),
|
||||
fProcessingPolymarker(false)
|
||||
{}
|
||||
|
||||
@@ -123,13 +124,16 @@ void G4OpenGLSceneHandler::EndPrimitives ()
|
||||
G4VSceneHandler::EndPrimitives ();
|
||||
}
|
||||
|
||||
void G4OpenGLSceneHandler::BeginPrimitives2D ()
|
||||
void G4OpenGLSceneHandler::BeginPrimitives2D
|
||||
(const G4Transform3D& objectTransformation)
|
||||
{
|
||||
G4VSceneHandler::BeginPrimitives2D ();
|
||||
G4VSceneHandler::BeginPrimitives2D (objectTransformation);
|
||||
fProcessing2D = true;
|
||||
}
|
||||
|
||||
void G4OpenGLSceneHandler::EndPrimitives2D ()
|
||||
{
|
||||
fProcessing2D = false;
|
||||
G4VSceneHandler::EndPrimitives2D ();
|
||||
}
|
||||
|
||||
@@ -463,6 +467,9 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) {
|
||||
|
||||
G4bool clipping = pViewer->fVP.IsSection() || pViewer->fVP.IsCutaway();
|
||||
|
||||
// Lighting disabled unless otherwise requested
|
||||
glDisable (GL_LIGHTING);
|
||||
|
||||
switch (drawing_style) {
|
||||
case (G4ViewParameters::hlhsr):
|
||||
// Set up as for hidden line removal but paint polygon faces later...
|
||||
@@ -489,7 +496,6 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) {
|
||||
glPolygonMode (GL_FRONT, GL_LINE);
|
||||
}
|
||||
}
|
||||
glDisable (GL_LIGHTING);
|
||||
glColor3d (c.GetRed (), c.GetGreen (), c.GetBlue ());
|
||||
break;
|
||||
case (G4ViewParameters::hsr):
|
||||
@@ -514,14 +520,13 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) {
|
||||
}
|
||||
glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materialColour);
|
||||
}
|
||||
glEnable (GL_LIGHTING);
|
||||
if (!fProcessing2D) glEnable (GL_LIGHTING);
|
||||
break;
|
||||
case (G4ViewParameters::wireframe):
|
||||
default:
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
glDepthFunc (GL_LEQUAL); //??? was GL_ALWAYS
|
||||
glDisable (GL_CULL_FACE);
|
||||
glDisable (GL_LIGHTING);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
|
||||
glColor3d (c.GetRed (), c.GetGreen (), c.GetBlue ());
|
||||
break;
|
||||
@@ -600,11 +605,14 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) {
|
||||
// having glBegin/End pairs *inside* loop in the more
|
||||
// usual case of no hidden line removal.
|
||||
|
||||
// Lighting disabled unless otherwise requested
|
||||
glDisable (GL_LIGHTING);
|
||||
|
||||
// Draw through stencil...
|
||||
glStencilFunc (GL_EQUAL, 0, 1);
|
||||
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);
|
||||
if (drawing_style == G4ViewParameters::hlhsr) {
|
||||
glEnable (GL_LIGHTING);
|
||||
if (!fProcessing2D) glEnable (GL_LIGHTING);
|
||||
}
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
@@ -707,6 +715,7 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) {
|
||||
glEnd ();
|
||||
glDisable (GL_STENCIL_TEST); // Revert to default for next primitive.
|
||||
glDepthMask (1); // Revert to default for next primitive.
|
||||
glDisable (GL_LIGHTING); // Revert to default for next primitive.
|
||||
}
|
||||
|
||||
//Method for handling G4NURBS objects for drawing solids.
|
||||
@@ -726,18 +735,18 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4NURBS& nurb) {
|
||||
GLfloat *u_knot_array, *u_knot_array_ptr;
|
||||
u_knot_array = u_knot_array_ptr = new GLfloat [nurb.GetnbrKnots(G4NURBS::U)];
|
||||
G4NURBS::KnotsIterator u_iterator (nurb, G4NURBS::U);
|
||||
while (u_iterator.pick (u_knot_array_ptr++));
|
||||
while (u_iterator.pick (u_knot_array_ptr++)){}
|
||||
|
||||
GLfloat *v_knot_array, *v_knot_array_ptr;
|
||||
v_knot_array = v_knot_array_ptr = new GLfloat [nurb.GetnbrKnots(G4NURBS::V)];
|
||||
G4NURBS::KnotsIterator v_iterator (nurb, G4NURBS::V);
|
||||
while (v_iterator.pick (v_knot_array_ptr++));
|
||||
while (v_iterator.pick (v_knot_array_ptr++)){}
|
||||
|
||||
GLfloat *ctrl_pnt_array, *ctrl_pnt_array_ptr;
|
||||
ctrl_pnt_array = ctrl_pnt_array_ptr =
|
||||
new GLfloat [nurb.GettotalnbrCtrlPts () * G4NURBS::NofC];
|
||||
G4NURBS::CtrlPtsCoordsIterator c_p_iterator (nurb);
|
||||
while (c_p_iterator.pick (ctrl_pnt_array_ptr++));
|
||||
while (c_p_iterator.pick (ctrl_pnt_array_ptr++)){}
|
||||
|
||||
// Get vis attributes - pick up defaults if none.
|
||||
const G4VisAttributes* pVA =
|
||||
@@ -758,7 +767,7 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4NURBS& nurb) {
|
||||
// << "Using hidden surface removal." << G4endl;
|
||||
case (G4ViewParameters::hsr):
|
||||
{
|
||||
glEnable (GL_LIGHTING);
|
||||
if (!fProcessing2D) glEnable (GL_LIGHTING);
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
glEnable (GL_AUTO_NORMAL);
|
||||
glEnable (GL_NORMALIZE);
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredQt.cc,v 1.3 2007/11/15 18:24:28 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredQt.cc,v 1.9 2008/10/24 14:21:34 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLStoredQt graphics system factory.
|
||||
@@ -42,14 +42,11 @@
|
||||
|
||||
G4OpenGLStoredQt::G4OpenGLStoredQt ():
|
||||
G4VGraphicsSystem ("OpenGLStoredQt",
|
||||
"OGLSQT",
|
||||
G4VisFeaturesOfOpenGLIQt (),
|
||||
"OGLSQt",
|
||||
G4VisFeaturesOfOpenGLSQt (),
|
||||
G4VGraphicsSystem::threeD)
|
||||
{
|
||||
G4OpenGLViewerMessenger::GetInstance();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQt::Create \n");
|
||||
#endif
|
||||
}
|
||||
|
||||
G4VSceneHandler* G4OpenGLStoredQt::CreateSceneHandler
|
||||
@@ -60,7 +57,7 @@ G4VSceneHandler* G4OpenGLStoredQt::CreateSceneHandler
|
||||
|
||||
G4VViewer* G4OpenGLStoredQt::CreateViewer
|
||||
(G4VSceneHandler& scene, const G4String& name) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQt::CreateViewer \n");
|
||||
#endif
|
||||
G4VViewer* pView =
|
||||
@@ -80,7 +77,7 @@ G4VViewer* G4OpenGLStoredQt::CreateViewer
|
||||
G4cerr << "G4OpenGLStoredQt::CreateViewer: null pointer on"
|
||||
" new G4OpenGLStoredQtViewer." << G4endl;
|
||||
}
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQt::CreateViewer END \n");
|
||||
#endif
|
||||
return pView;
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredQtViewer.cc,v 1.6 2007/11/15 18:24:28 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredQtViewer.cc,v 1.20 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLStoredQtViewer : a class derived from G4OpenGLQtViewer and
|
||||
@@ -34,7 +34,6 @@
|
||||
#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
|
||||
|
||||
#include "G4OpenGLStoredQtViewer.hh"
|
||||
#include "G4VisManager.hh"
|
||||
|
||||
#include "G4ios.hh"
|
||||
|
||||
@@ -44,280 +43,249 @@
|
||||
G4OpenGLStoredQtViewer::G4OpenGLStoredQtViewer
|
||||
(G4OpenGLStoredSceneHandler& sceneHandler,
|
||||
const G4String& name):
|
||||
G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
|
||||
G4OpenGLViewer (sceneHandler),
|
||||
G4OpenGLQtViewer (sceneHandler),
|
||||
G4OpenGLStoredViewer (sceneHandler),
|
||||
QGLWidget() // FIXME : gerer le pb du parent !
|
||||
{
|
||||
nbPaint =0;
|
||||
hasToRepaint =false;
|
||||
G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
|
||||
G4OpenGLViewer (sceneHandler),
|
||||
G4OpenGLQtViewer (sceneHandler),
|
||||
G4OpenGLStoredViewer (sceneHandler) // FIXME : gerer le pb du parent !
|
||||
{
|
||||
|
||||
//set true to picking
|
||||
fVP.SetPicking(true);
|
||||
#if QT_VERSION < 0x040000
|
||||
setFocusPolicy(QWidget::StrongFocus); // enable keybord events
|
||||
#else
|
||||
setFocusPolicy(Qt::StrongFocus); // enable keybord events
|
||||
#endif
|
||||
hasToRepaint =false;
|
||||
|
||||
if (fViewId < 0) return; // In case error in base class instantiation.
|
||||
}
|
||||
|
||||
G4OpenGLStoredQtViewer::~G4OpenGLStoredQtViewer() {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::~GLWidget \n");
|
||||
#endif
|
||||
makeCurrent();
|
||||
// this is connect to the Dialog for deleting it properly
|
||||
// when close event.
|
||||
// ((QDialog*)window())->reject();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::~GLWidget END\n");
|
||||
#endif
|
||||
makeCurrent();
|
||||
// this is connect to the Dialog for deleting it properly
|
||||
// when close event.
|
||||
// ((QDialog*)window())->reject();
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::Initialise() {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("GLWidget::Initialise \n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::Initialise 1\n");
|
||||
#endif
|
||||
readyToPaint = false;
|
||||
CreateGLQtContext ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::Initialise () 2\n");
|
||||
#endif
|
||||
CreateMainWindow (this);
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::Initialise () 3\n");
|
||||
#endif
|
||||
CreateFontLists (); // FIXME Does nothing!
|
||||
readyToPaint = false;
|
||||
CreateMainWindow (this,QString(fName));
|
||||
CreateFontLists ();
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("readyToPaint = true \n");
|
||||
#endif
|
||||
readyToPaint = true;
|
||||
|
||||
// First Draw
|
||||
SetView();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf(" ClearView\n");
|
||||
#endif
|
||||
ClearView (); //ok, put the background correct
|
||||
ShowView();
|
||||
FinishView();
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::initializeGL () {
|
||||
|
||||
InitializeGLView ();
|
||||
InitializeGLView ();
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::InitialiseGL () 1\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::InitialiseGL () 1\n");
|
||||
#endif
|
||||
|
||||
// clear the buffers and window.
|
||||
ClearView ();
|
||||
// printf("G4OpenGLStoredQtViewer::InitialiseGL () 2\n");
|
||||
FinishView ();
|
||||
// clear the buffers and window.
|
||||
ClearView ();
|
||||
FinishView ();
|
||||
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
glDepthMask (GL_TRUE);
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
glDepthMask (GL_TRUE);
|
||||
|
||||
hasToRepaint =true;
|
||||
if (fSceneHandler.GetScene() == 0) {
|
||||
hasToRepaint =false;
|
||||
} else {
|
||||
hasToRepaint =true;
|
||||
}
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::InitialiseGL -------------------------------------------------------------------------------------\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::InitialiseGL END\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLStoredQtViewer::DrawView () {
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::DrawView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
|
||||
printf("G4OpenGLStoredQtViewer::DrawView Dialog adress : %d\n",GLWindow);
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::DrawView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
|
||||
#endif
|
||||
G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
|
||||
|
||||
//Make sure current viewer is attached and clean...
|
||||
//Qt version needed
|
||||
glViewport (0, 0, WinSize_x, WinSize_y);
|
||||
|
||||
//See if things have changed from last time and remake if necessary...
|
||||
// The fNeedKernelVisit flag might have been set by the user in
|
||||
// /vis/viewer/rebuild, but if not, make decision and set flag only
|
||||
// if necessary...
|
||||
if (!fNeedKernelVisit)
|
||||
|
||||
if (!fNeedKernelVisit) KernelVisitDecision ();
|
||||
|
||||
G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
|
||||
ProcessView ();
|
||||
|
||||
|
||||
if(style!=G4ViewParameters::hlr &&
|
||||
haloing_enabled) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::DrawView DANS LE IF\n");
|
||||
// That's no the same logic as Immediate Viewer, I don't know why...
|
||||
// But if I send updateGL here, we go here :
|
||||
// updateQWidget -> paintGL -> ComputeView
|
||||
// whih is not the same as ComputeView Directly
|
||||
// And we loose the redraw of things !
|
||||
|
||||
ComputeView();
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
|
||||
#endif
|
||||
|
||||
HaloingFirstPass ();
|
||||
DrawDisplayLists ();
|
||||
glFlush ();
|
||||
|
||||
HaloingSecondPass ();
|
||||
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
|
||||
} else {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("*************************** CASE 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
|
||||
// If kernel visit was needed, drawing and FinishView will already
|
||||
// have been done, so...
|
||||
if (!kernelVisitWasNeeded) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("*************************** CASE 2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
} else {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("*************************** CASE 3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
// However, union cutaways are implemented in DrawDisplayLists, so make
|
||||
// an extra pass...
|
||||
if (fVP.IsCutaway() &&
|
||||
fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
|
||||
ClearView();
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("*************************** CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
} else { // ADD TO AVOID KernelVisit=1 and nothing to display
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::DrawView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
hasToRepaint =true;
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::ComputeView () {
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void G4OpenGLStoredQtViewer::FinishView (
|
||||
)
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
|
||||
{
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::FinishView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n");
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::ComputeView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
makeCurrent();
|
||||
G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
|
||||
|
||||
//Make sure current viewer is attached and clean...
|
||||
|
||||
//See if things have changed from last time and remake if necessary...
|
||||
// The fNeedKernelVisit flag might have been set by the user in
|
||||
// /vis/viewer/rebuild, but if not, make decision and set flag only
|
||||
// if necessary...
|
||||
if (!fNeedKernelVisit) {
|
||||
KernelVisitDecision ();
|
||||
}
|
||||
G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
|
||||
ProcessView ();
|
||||
|
||||
|
||||
if(style!=G4ViewParameters::hlr &&
|
||||
haloing_enabled) {
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::ComputeView DANS LE IF\n");
|
||||
#endif
|
||||
|
||||
glFlush ();
|
||||
swapBuffers ();
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::FinishView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
HaloingFirstPass ();
|
||||
DrawDisplayLists ();
|
||||
glFlush ();
|
||||
|
||||
HaloingSecondPass ();
|
||||
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
|
||||
} else {
|
||||
|
||||
// If kernel visit was needed, drawing and FinishView will already
|
||||
// have been done, so...
|
||||
if (!kernelVisitWasNeeded) {
|
||||
#ifdef G4DEBUG
|
||||
printf("************************** G4OpenGLStoredQtViewer::ComputeView Don't need kernel Visit \n");
|
||||
#endif
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
} else {
|
||||
#ifdef G4DEBUG
|
||||
printf("************************** G4OpenGLStoredQtViewer::ComputeView need kernel Visit \n");
|
||||
#endif
|
||||
// However, union cutaways are implemented in DrawDisplayLists, so make
|
||||
// an extra pass...
|
||||
if (fVP.IsCutaway() &&
|
||||
fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
|
||||
ClearView();
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
#ifdef G4DEBUG
|
||||
printf("*************************** CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
|
||||
#endif
|
||||
} else { // ADD TO AVOID KernelVisit=1 and nothing to display
|
||||
DrawDisplayLists ();
|
||||
FinishView ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isRecording()) {
|
||||
savePPMToTemp();
|
||||
}
|
||||
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y);
|
||||
#endif
|
||||
hasToRepaint =true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
- Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
|
||||
*/
|
||||
- Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
|
||||
*/
|
||||
void G4OpenGLStoredQtViewer::resizeGL(
|
||||
int aWidth
|
||||
,int aHeight)
|
||||
int aWidth
|
||||
,int aHeight)
|
||||
{
|
||||
glViewport(0, 0, aWidth, aHeight);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
if (((WinSize_x != (G4int)aWidth)) || (WinSize_y != (G4int) aHeight)) {
|
||||
hasToRepaint =true;
|
||||
}
|
||||
WinSize_x = (G4int) aWidth;
|
||||
WinSize_y = (G4int) aHeight;
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::resizeGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d %d=%d %d=%d\n",hasToRepaint,width(),aWidth,height(),aHeight);
|
||||
#endif
|
||||
G4resizeGL(aWidth,aHeight);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4OpenGLStoredQtViewer::paintGL()
|
||||
{
|
||||
if (!readyToPaint) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL ============ Not ready %d\n",readyToPaint);
|
||||
{
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL ??\n");
|
||||
#endif
|
||||
readyToPaint= true;
|
||||
return;
|
||||
}
|
||||
// DO NOT RESIZE IF SIZE HAS NOT CHANGE :
|
||||
// WHEN CLICK ON THE FRAME FOR EXAMPLE
|
||||
// EXECEPT WHEN MOUSE MOVE EVENT
|
||||
if ( !hasToRepaint) {
|
||||
if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) {
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL ============ Dont repaint\n");
|
||||
if (!readyToPaint) {
|
||||
readyToPaint= true;
|
||||
return;
|
||||
}
|
||||
// DO NOT RESIZE IF SIZE HAS NOT CHANGE :
|
||||
// WHEN CLICK ON THE FRAME FOR EXAMPLE
|
||||
// EXECEPT WHEN MOUSE MOVE EVENT
|
||||
if ( !hasToRepaint) {
|
||||
if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ready %d\n",readyToPaint);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
nbPaint++;
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %d ready %d\n",nbPaint,readyToPaint);
|
||||
#endif
|
||||
WinSize_x = (G4int) width();
|
||||
WinSize_y = (G4int) height();
|
||||
|
||||
glViewport (0, 0, width(), height());
|
||||
// glLoadIdentity();
|
||||
|
||||
WinSize_x = (G4int) width();
|
||||
WinSize_y = (G4int) height();
|
||||
|
||||
SetView();
|
||||
setupViewport(width(),height());
|
||||
|
||||
// // printf("before ClearView\n");
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf(" ClearView\n");
|
||||
SetView();
|
||||
|
||||
ClearView (); //ok, put the background correct
|
||||
ComputeView();
|
||||
|
||||
hasToRepaint =false;
|
||||
|
||||
#ifdef G4DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ready %d\n",readyToPaint);
|
||||
#endif
|
||||
|
||||
ClearView (); //ok, put the background correct
|
||||
DrawView();
|
||||
|
||||
hasToRepaint =false;
|
||||
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n",nbPaint,readyToPaint);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::mousePressEvent\n");
|
||||
#endif
|
||||
G4MousePressEvent(event->pos());
|
||||
G4MousePressEvent(event);
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::keyPressEvent (QKeyEvent * event)
|
||||
{
|
||||
G4keyPressEvent(event);
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::wheelEvent (QWheelEvent * event)
|
||||
{
|
||||
G4wheelEvent(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function was build in order to make a zoom on double clic event.
|
||||
* It was think to build a rubberband on the zoom area, but never work fine
|
||||
*/
|
||||
void G4OpenGLStoredQtViewer::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MouseDoubleClickEvent();
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
G4MouseReleaseEvent();
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
#ifdef GEANT4_QT_DEBUG
|
||||
printf("G4OpenGLStoredQtViewer::mouseMoveEvent\n");
|
||||
#endif
|
||||
#if QT_VERSION < 0x040000
|
||||
G4MouseMoveEvent(event->x(),event->y(),event->button());
|
||||
#else
|
||||
G4MouseMoveEvent(event->x(),event->y(),event->buttons());
|
||||
#endif
|
||||
// DrawView();
|
||||
G4MouseMoveEvent(event);
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLStoredQtViewer::contextMenuEvent(QContextMenuEvent *e)
|
||||
{
|
||||
manageContextMenuEvent(e);
|
||||
G4manageContextMenuEvent(e);
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::updateQWidget() {
|
||||
@@ -326,4 +294,17 @@ void G4OpenGLStoredQtViewer::updateQWidget() {
|
||||
hasToRepaint= false;
|
||||
}
|
||||
|
||||
void G4OpenGLStoredQtViewer::ShowView (
|
||||
)
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
|
||||
{
|
||||
#if QT_VERSION < 0x040000
|
||||
setActiveWindow();
|
||||
#else
|
||||
activateWindow();
|
||||
#endif
|
||||
updateQWidget();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredSceneHandler.cc,v 1.34 2007/04/04 16:50:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredSceneHandler.cc,v 1.39 2008/11/06 13:43:44 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
@@ -54,13 +54,31 @@
|
||||
#include "G4Polyhedron.hh"
|
||||
#include "G4AttHolder.hh"
|
||||
|
||||
G4OpenGLStoredSceneHandler::G4OpenGLStoredSceneHandler (G4VGraphicsSystem& system,
|
||||
const G4String& name):
|
||||
G4OpenGLStoredSceneHandler::PO::PO
|
||||
(G4int id,
|
||||
const G4Transform3D& tr):
|
||||
fDisplayListId(id),
|
||||
fTransform(tr),
|
||||
fPickName(0)
|
||||
{}
|
||||
|
||||
G4OpenGLStoredSceneHandler::TO::TO
|
||||
(G4int id,
|
||||
const G4Transform3D& tr):
|
||||
fDisplayListId(id),
|
||||
fTransform(tr),
|
||||
fPickName(0),
|
||||
fStartTime(-DBL_MAX),
|
||||
fEndTime(DBL_MAX)
|
||||
{}
|
||||
|
||||
G4OpenGLStoredSceneHandler::G4OpenGLStoredSceneHandler
|
||||
(G4VGraphicsSystem& system,
|
||||
const G4String& name):
|
||||
G4OpenGLSceneHandler (system, fSceneIdCount++, name),
|
||||
fMemoryForDisplayLists (true),
|
||||
fAddPrimitivePreambleNestingDepth (0),
|
||||
fTopPODL (0),
|
||||
fProcessing2D (false)
|
||||
fTopPODL (0)
|
||||
{}
|
||||
|
||||
G4OpenGLStoredSceneHandler::~G4OpenGLStoredSceneHandler ()
|
||||
@@ -85,7 +103,7 @@ void G4OpenGLStoredSceneHandler::AddPrimitivePreamble(const G4Visible& visible)
|
||||
|
||||
if (fMemoryForDisplayLists) {
|
||||
fDisplayListId = glGenLists (1);
|
||||
if (!fDisplayListId) { // Could pre-allocate?
|
||||
if (glGetError() == GL_OUT_OF_MEMORY) { // Could pre-allocate?
|
||||
G4cout <<
|
||||
"********************* WARNING! ********************"
|
||||
"\nUnable to allocate any more display lists in OpenGL."
|
||||
@@ -133,10 +151,13 @@ void G4OpenGLStoredSceneHandler::AddPrimitivePreamble(const G4Visible& visible)
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_DBL_MAX, G4OPENGL_DBL_MAX);
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_FLT_BIG, G4OPENGL_FLT_BIG);
|
||||
glMatrixMode (GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
G4OpenGLTransform3D oglt (*fpObjectTransformation);
|
||||
glMultMatrixd (oglt.GetGLMatrix ());
|
||||
glColor3d (c.GetRed (), c.GetGreen (), c.GetBlue ());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,8 +171,21 @@ void G4OpenGLStoredSceneHandler::AddPrimitivePostamble()
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
// if ((glGetError() == GL_TABLE_TOO_LARGE) || (glGetError() == GL_OUT_OF_MEMORY)) { // Could close?
|
||||
if (glGetError() == GL_OUT_OF_MEMORY) { // Could close?
|
||||
G4cout <<
|
||||
"ERROR: G4OpenGLStoredSceneHandler::EndModeling: Failure to allocate"
|
||||
" display List for fTopPODL - try OpenGL Immediated mode."
|
||||
<< G4endl;
|
||||
}
|
||||
if (fMemoryForDisplayLists) {
|
||||
glEndList();
|
||||
if (glGetError() == GL_OUT_OF_MEMORY) { // Could close?
|
||||
G4cout <<
|
||||
"ERROR: G4OpenGLStoredSceneHandler::EndModeling: Failure to allocate"
|
||||
" display List for fTopPODL - try OpenGL Immediated mode."
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
if (fReadyForTransients || !fMemoryForDisplayLists) {
|
||||
glPopMatrix();
|
||||
@@ -238,15 +272,14 @@ void G4OpenGLStoredSceneHandler::EndPrimitives ()
|
||||
G4OpenGLSceneHandler::EndPrimitives ();
|
||||
}
|
||||
|
||||
void G4OpenGLStoredSceneHandler::BeginPrimitives2D()
|
||||
void G4OpenGLStoredSceneHandler::BeginPrimitives2D
|
||||
(const G4Transform3D& objectTransformation)
|
||||
{
|
||||
G4OpenGLSceneHandler::BeginPrimitives2D();
|
||||
fProcessing2D = true;
|
||||
G4OpenGLSceneHandler::BeginPrimitives2D(objectTransformation);
|
||||
}
|
||||
|
||||
void G4OpenGLStoredSceneHandler::EndPrimitives2D ()
|
||||
{
|
||||
fProcessing2D = false;
|
||||
G4OpenGLSceneHandler::EndPrimitives2D ();
|
||||
}
|
||||
|
||||
@@ -262,7 +295,7 @@ void G4OpenGLStoredSceneHandler::BeginModeling () {
|
||||
void G4OpenGLStoredSceneHandler::EndModeling () {
|
||||
// Make a List which calls the other lists.
|
||||
fTopPODL = glGenLists (1);
|
||||
if (!fTopPODL) {
|
||||
if (glGetError() == GL_OUT_OF_MEMORY) { // Could pre-allocate?
|
||||
G4cout <<
|
||||
"ERROR: G4OpenGLStoredSceneHandler::EndModeling: Failure to allocate"
|
||||
" display List for fTopPODL - try OpenGL Immediated mode."
|
||||
@@ -280,6 +313,12 @@ void G4OpenGLStoredSceneHandler::EndModeling () {
|
||||
}
|
||||
}
|
||||
glEndList ();
|
||||
if (glGetError() == GL_OUT_OF_MEMORY) { // Could close?
|
||||
G4cout <<
|
||||
"ERROR: G4OpenGLStoredSceneHandler::EndModeling: Failure to allocate"
|
||||
" display List for fTopPODL - try OpenGL Immediated mode."
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
G4VSceneHandler::EndModeling ();
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredViewer.cc,v 1.23 2007/04/04 16:50:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLStoredViewer.cc,v 1.24 2008/04/04 13:32:22 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
@@ -167,11 +167,11 @@ void G4OpenGLStoredViewer::DrawDisplayLists () {
|
||||
}
|
||||
|
||||
// Display time at "head" of time range, which is fEndTime...
|
||||
if (fDisplayHeadTime && fEndTime < G4OPENGL_DBL_MAX) {
|
||||
if (fDisplayHeadTime && fEndTime < DBL_MAX) {
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_DBL_MAX, G4OPENGL_DBL_MAX);
|
||||
glOrtho (-1., 1., -1., 1., -G4OPENGL_FLT_BIG, G4OPENGL_FLT_BIG);
|
||||
glMatrixMode (GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
@@ -192,7 +192,7 @@ void G4OpenGLStoredViewer::DrawDisplayLists () {
|
||||
}
|
||||
|
||||
// Display light front...
|
||||
if (fDisplayLightFront && fEndTime < G4OPENGL_DBL_MAX) {
|
||||
if (fDisplayLightFront && fEndTime < DBL_MAX) {
|
||||
G4double lightFrontRadius = (fEndTime - fDisplayLightFrontT) * c_light;
|
||||
if (lightFrontRadius > 0.) {
|
||||
G4Point3D lightFrontCentre(fDisplayLightFrontX, fDisplayLightFrontY, fDisplayLightFrontZ);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredWin32.cc,v 1.14 2006/08/14 12:07:19 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// OpenGLStoredWin32 graphics system factory.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredWin32Viewer.cc,v 1.19 2007/04/04 16:50:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Class G4OpenGLStoredWin32Viewer : a class derived from G4OpenGLWin32Viewer and
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredX.cc,v 1.14 2007/08/21 14:05:51 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXViewer.cc,v 1.22 2007/04/04 16:50:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXm.cc,v 1.11 2006/08/14 12:07:19 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLStoredXmViewer.cc,v 1.22 2007/04/04 16:50:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 10th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLTransform3D.cc,v 1.8 2006/06/29 21:19:32 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 24th October 1996
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLViewer.cc,v 1.34 2007/05/24 18:27:13 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLViewer.cc,v 1.41 2008/10/24 13:49:19 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 27th March 1996
|
||||
@@ -89,8 +89,8 @@ background (G4Colour(0.,0.,0.)),
|
||||
transparency_enabled (true),
|
||||
antialiasing_enabled (false),
|
||||
haloing_enabled (false),
|
||||
fStartTime(-G4OPENGL_DBL_MAX),
|
||||
fEndTime(G4OPENGL_DBL_MAX),
|
||||
fStartTime(-DBL_MAX),
|
||||
fEndTime(DBL_MAX),
|
||||
fFadeFactor(0.),
|
||||
fDisplayHeadTime(false),
|
||||
fDisplayHeadTimeX(-0.9),
|
||||
@@ -147,7 +147,12 @@ void G4OpenGLViewer::ClearView () {
|
||||
}
|
||||
|
||||
void G4OpenGLViewer::SetView () {
|
||||
|
||||
|
||||
if (!fSceneHandler.GetScene()) {
|
||||
G4cerr << "G4OpenGLStoredQtViewer: Creating a Viewer without a scene is not allowed. \nPlease use /vis/scene/create before /vis/open/.... "
|
||||
<< G4endl;
|
||||
return;
|
||||
}
|
||||
// Calculates view representation based on extent of object being
|
||||
// viewed and (initial) viewpoint. (Note: it can change later due
|
||||
// to user interaction via visualization system's GUI.)
|
||||
@@ -371,18 +376,16 @@ void G4OpenGLViewer::print() {
|
||||
// Print vectored PostScript
|
||||
|
||||
G4int size = 5000000;
|
||||
|
||||
GLfloat* feedback_buffer;
|
||||
GLint returned;
|
||||
FILE* file;
|
||||
|
||||
feedback_buffer = new GLfloat[size];
|
||||
GLfloat* feedback_buffer = new GLfloat[size];
|
||||
glFeedbackBuffer (size, GL_3D_COLOR, feedback_buffer);
|
||||
glRenderMode (GL_FEEDBACK);
|
||||
|
||||
DrawView();
|
||||
|
||||
GLint returned;
|
||||
returned = glRenderMode (GL_RENDER);
|
||||
|
||||
FILE* file;
|
||||
if (print_string) {
|
||||
file = fopen (print_string, "w");
|
||||
if (file) {
|
||||
@@ -723,6 +726,45 @@ extern "C" {
|
||||
}
|
||||
}
|
||||
|
||||
GLdouble G4OpenGLViewer::getSceneNearWidth()
|
||||
{
|
||||
const G4Point3D targetPoint
|
||||
= fSceneHandler.GetScene()->GetStandardTargetPoint()
|
||||
+ fVP.GetCurrentTargetPoint ();
|
||||
G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
|
||||
if(radius<=0.) radius = 1.;
|
||||
const G4double cameraDistance = fVP.GetCameraDistance (radius);
|
||||
const GLdouble pnear = fVP.GetNearDistance (cameraDistance, radius);
|
||||
return 2 * fVP.GetFrontHalfHeight (pnear, radius);
|
||||
}
|
||||
|
||||
GLdouble G4OpenGLViewer::getSceneFarWidth()
|
||||
{
|
||||
const G4Point3D targetPoint
|
||||
= fSceneHandler.GetScene()->GetStandardTargetPoint()
|
||||
+ fVP.GetCurrentTargetPoint ();
|
||||
G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
|
||||
if(radius<=0.) radius = 1.;
|
||||
const G4double cameraDistance = fVP.GetCameraDistance (radius);
|
||||
const GLdouble pnear = fVP.GetNearDistance (cameraDistance, radius);
|
||||
const GLdouble pfar = fVP.GetFarDistance (cameraDistance, pnear, radius);
|
||||
return 2 * fVP.GetFrontHalfHeight (pfar, radius);
|
||||
}
|
||||
|
||||
|
||||
GLdouble G4OpenGLViewer::getSceneDepth()
|
||||
{
|
||||
const G4Point3D targetPoint
|
||||
= fSceneHandler.GetScene()->GetStandardTargetPoint()
|
||||
+ fVP.GetCurrentTargetPoint ();
|
||||
G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
|
||||
if(radius<=0.) radius = 1.;
|
||||
const G4double cameraDistance = fVP.GetCameraDistance (radius);
|
||||
const GLdouble pnear = fVP.GetNearDistance (cameraDistance, radius);
|
||||
return fVP.GetFarDistance (cameraDistance, pnear, radius)- pnear;
|
||||
}
|
||||
|
||||
|
||||
void G4OpenGLViewer::spewSortedFeedback(FILE * file, GLint size, GLfloat * buffer)
|
||||
{
|
||||
int token;
|
||||
@@ -839,4 +881,93 @@ void G4OpenGLViewer::spewSortedFeedback(FILE * file, GLint size, GLfloat * buffe
|
||||
free(prims);
|
||||
}
|
||||
|
||||
void G4OpenGLViewer::rotateScene(G4double dx, G4double dy,G4double deltaRotation)
|
||||
{
|
||||
|
||||
G4Vector3D vp;
|
||||
G4Vector3D up;
|
||||
|
||||
G4Vector3D xprime;
|
||||
G4Vector3D yprime;
|
||||
G4Vector3D zprime;
|
||||
|
||||
G4double delta_alpha;
|
||||
G4double delta_theta;
|
||||
|
||||
G4Vector3D new_vp;
|
||||
G4Vector3D new_up;
|
||||
|
||||
G4double cosalpha;
|
||||
G4double sinalpha;
|
||||
|
||||
G4Vector3D a1;
|
||||
G4Vector3D a2;
|
||||
G4Vector3D delta;
|
||||
G4Vector3D viewPoint;
|
||||
|
||||
|
||||
//phi spin stuff here
|
||||
|
||||
vp = fVP.GetViewpointDirection ().unit ();
|
||||
up = fVP.GetUpVector ().unit ();
|
||||
|
||||
yprime = (up.cross(vp)).unit();
|
||||
zprime = (vp.cross(yprime)).unit();
|
||||
|
||||
if (fVP.GetLightsMoveWithCamera()) {
|
||||
delta_alpha = dy * deltaRotation;
|
||||
delta_theta = -dx * deltaRotation;
|
||||
} else {
|
||||
delta_alpha = -dy * deltaRotation;
|
||||
delta_theta = dx * deltaRotation;
|
||||
}
|
||||
|
||||
delta_alpha *= deg;
|
||||
delta_theta *= deg;
|
||||
|
||||
new_vp = std::cos(delta_alpha) * vp + std::sin(delta_alpha) * zprime;
|
||||
|
||||
// to avoid z rotation flipping
|
||||
// to allow more than 360° rotation
|
||||
|
||||
const G4Point3D targetPoint
|
||||
= fSceneHandler.GetScene()->GetStandardTargetPoint()
|
||||
+ fVP.GetCurrentTargetPoint ();
|
||||
G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
|
||||
if(radius<=0.) radius = 1.;
|
||||
const G4double cameraDistance = fVP.GetCameraDistance (radius);
|
||||
const G4Point3D cameraPosition =
|
||||
targetPoint + cameraDistance * fVP.GetViewpointDirection().unit();
|
||||
|
||||
if (fVP.GetLightsMoveWithCamera()) {
|
||||
new_up = (new_vp.cross(yprime)).unit();
|
||||
if (new_vp.z()*vp.z() <0) {
|
||||
new_up.set(new_up.x(),-new_up.y(),new_up.z());
|
||||
}
|
||||
} else {
|
||||
new_up = up;
|
||||
if (new_vp.z()*vp.z() <0) {
|
||||
new_up.set(new_up.x(),-new_up.y(),new_up.z());
|
||||
}
|
||||
}
|
||||
fVP.SetUpVector(new_up);
|
||||
////////////////
|
||||
// Rotates by fixed azimuthal angle delta_theta.
|
||||
|
||||
cosalpha = new_up.dot (new_vp.unit());
|
||||
sinalpha = std::sqrt (1. - std::pow (cosalpha, 2));
|
||||
yprime = (new_up.cross (new_vp.unit())).unit ();
|
||||
xprime = yprime.cross (new_up);
|
||||
// Projection of vp on plane perpendicular to up...
|
||||
a1 = sinalpha * xprime;
|
||||
// Required new projection...
|
||||
a2 = sinalpha * (std::cos (delta_theta) * xprime + std::sin (delta_theta) * yprime);
|
||||
// Required Increment vector...
|
||||
delta = a2 - a1;
|
||||
// So new viewpoint is...
|
||||
viewPoint = new_vp.unit() + delta;
|
||||
|
||||
fVP.SetViewAndLights (viewPoint);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLViewerMessenger.cc,v 1.11 2007/11/15 10:14:23 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLViewerMessenger.cc,v 1.12 2008/04/04 13:32:22 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
|
||||
#ifdef G4VIS_BUILD_OPENGL_DRIVER
|
||||
|
||||
@@ -157,7 +157,7 @@ G4OpenGLViewerMessenger::G4OpenGLViewerMessenger()
|
||||
new G4UIcommand("/vis/ogl/set/endTime", this);
|
||||
fpCommandEndTime->SetGuidance("Set end and range of track time.");
|
||||
parameter = new G4UIparameter ("end-time", 'd', omitable = false);
|
||||
parameter->SetDefaultValue(G4OPENGL_DBL_MAX);
|
||||
parameter->SetDefaultValue(DBL_MAX);
|
||||
fpCommandEndTime->SetParameter(parameter);
|
||||
parameter = new G4UIparameter ("end-time-unit", 's', omitable = false);
|
||||
parameter->SetDefaultValue("ns");
|
||||
@@ -187,7 +187,7 @@ G4OpenGLViewerMessenger::G4OpenGLViewerMessenger()
|
||||
new G4UIcommand("/vis/ogl/set/startTime", this);
|
||||
fpCommandStartTime->SetGuidance("Set start and range of track time.");
|
||||
parameter = new G4UIparameter ("start-time", 'd', omitable = false);
|
||||
parameter->SetDefaultValue(-G4OPENGL_DBL_MAX);
|
||||
parameter->SetDefaultValue(-DBL_MAX);
|
||||
fpCommandStartTime->SetParameter(parameter);
|
||||
parameter = new G4UIparameter ("start-time-unit", 's', omitable = false);
|
||||
parameter->SetDefaultValue("ns");
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLWin32Viewer.cc,v 1.17 2006/06/29 21:19:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// G4OpenGLWin32Viewer : Class to provide WindowsNT specific
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXViewer.cc,v 1.42 2007/05/25 10:47:17 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 7th February 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmBox.cc,v 1.6 2006/06/29 21:19:40 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Box container class
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmConvenienceRoutines.cc,v 1.11 2006/06/29 21:19:42 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 16th April 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmFourArrowButtons.cc,v 1.5 2006/06/29 21:19:44 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmFramedBox.cc,v 1.6 2006/06/29 21:19:46 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Framed box container class
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.13 2006/06/29 21:19:48 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 16th April 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmPanningCallbacks.cc,v 1.8 2006/06/29 21:19:50 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 16th April 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmPushButton.cc,v 1.6 2006/06/29 21:19:52 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Push button class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmRadioButton.cc,v 1.6 2006/06/29 21:19:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Radio button class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.14 2006/06/29 21:19:56 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.16 2008/07/28 15:36:45 lgarnier Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 16th April 1997
|
||||
@@ -63,6 +63,13 @@ void G4OpenGLXmViewer::rotate_in_theta (XtPointer clientData,
|
||||
{
|
||||
//theta spin stuff here
|
||||
G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData;
|
||||
|
||||
if (pView->rotate_right) {
|
||||
pView->rotateScene((G4double)pView->rot_sens,0,1);
|
||||
} else {
|
||||
pView->rotateScene(-(G4double)pView->rot_sens,0,1);
|
||||
}
|
||||
/*
|
||||
G4double delta_theta;
|
||||
|
||||
if (pView->fVP.GetLightsMoveWithCamera()) {
|
||||
@@ -99,6 +106,7 @@ void G4OpenGLXmViewer::rotate_in_theta (XtPointer clientData,
|
||||
G4Vector3D viewPoint = vp + delta;
|
||||
|
||||
pView->fVP.SetViewAndLights (viewPoint);
|
||||
*/
|
||||
|
||||
pView->SetView ();
|
||||
pView->ClearView ();
|
||||
@@ -131,9 +139,15 @@ void G4OpenGLXmViewer::rotate_in_phi (XtPointer clientData,
|
||||
XtIntervalId* timer_id)
|
||||
{
|
||||
//phi spin stuff here
|
||||
G4double delta_alpha;
|
||||
// G4double delta_alpha;
|
||||
G4OpenGLXmViewer* pView = (G4OpenGLXmViewer*) clientData;
|
||||
|
||||
if (pView -> rotate_up) {
|
||||
pView->rotateScene(0,-(G4double)pView->rot_sens,1);
|
||||
} else {
|
||||
pView->rotateScene(0,(G4double)pView->rot_sens,1);
|
||||
}
|
||||
/*
|
||||
if (pView->fVP.GetLightsMoveWithCamera()) {
|
||||
if (pView -> rotate_up) {
|
||||
delta_alpha = -((G4double)pView->rot_sens);
|
||||
@@ -166,6 +180,7 @@ void G4OpenGLXmViewer::rotate_in_phi (XtPointer clientData,
|
||||
pView->fVP.SetUpVector(new_up);
|
||||
}
|
||||
|
||||
*/
|
||||
pView->SetView ();
|
||||
pView->ClearView ();
|
||||
pView->DrawView ();
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmSeparator.cc,v 1.5 2006/06/29 21:19:58 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Separator class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmSliderBar.cc,v 1.7 2006/06/29 21:20:00 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Slider bar class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmStyleCallbacks.cc,v 1.14 2006/06/29 21:20:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// Andrew Walkden 16th April 1997
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmTextField.cc,v 1.7 2006/06/29 21:20:04 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Text field class. Inherits from G4OpenGLXmVWidgetComponent
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmTopLevelShell.cc,v 1.5 2006/06/29 21:20:06 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Top level shell class
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetComponent.cc,v 1.5 2006/06/29 21:20:08 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Base class for all Motif component widgets
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpenGLXmVWidgetContainer.cc,v 1.5 2006/06/29 21:20:10 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//Base class for all Motif container widgets
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user