33 #ifdef G4VIS_BUILD_OPENGL_DRIVER 
   35 #ifndef G4OPENGLVIEWER_HH 
   36 #define G4OPENGLVIEWER_HH 
   40 #ifdef G4OPENGL_VERSION_2 
   44 class G4OpenGLSceneHandler;
 
   48 class G4OpenGLViewerPickMap {
 
   54   inline void setHitNumber(
G4int n) {
 
   58   inline void setSubHitNumber(
G4int n) {
 
   61   inline void setPickName(
G4int n) {
 
   65   inline void addAttributes(
G4String att) {
 
   66     fAttributes.push_back(att);
 
   73   inline G4int getHitNumber() {
 
   77   inline G4int getSubHitNumber() {
 
   81   inline G4int getPickName() {
 
   85   inline std::vector <G4String > getAttributes() {
 
   96   std::vector <G4String > fAttributes;
 
  101 class G4OpenGLViewer: 
virtual public G4VViewer {
 
  103   friend class G4OpenGLSceneHandler;
 
  104   friend class G4OpenGLImmediateSceneHandler;
 
  105   friend class G4OpenGLStoredSceneHandler;
 
  106   friend class G4OpenGLFileSceneHandler;
 
  111   void ClearViewWithoutFlush ();
 
  114   virtual bool exportImage(std::string 
name=
"", 
int width=-1, 
int height=-1);
 
  116   bool setExportImageFormat(std::string format,
bool quiet = 
false);
 
  120 #ifdef G4OPENGL_VERSION_2 
  121   inline G4OpenGLVboDrawer* getWtDrawer() {
return fVboDrawer;}
 
  124   void setVboDrawer(G4OpenGLVboDrawer* drawer);
 
  125   G4OpenGLVboDrawer* fVboDrawer;
 
  128     return fGlViewInitialized;
 
  133   G4OpenGLViewer (G4OpenGLSceneHandler& scene);
 
  134   virtual ~G4OpenGLViewer ();
 
  137   G4OpenGLViewer(
const G4OpenGLViewer&);
 
  138   G4OpenGLViewer& operator= (
const G4OpenGLViewer&);
 
  144   virtual void DrawText(
const G4Text&);
 
  145   void ChangePointSize(
G4double size);
 
  147   void HaloingFirstPass ();
 
  148   void HaloingSecondPass ();
 
  149   void HLRFirstPass ();
 
  150   void HLRSecondPass ();
 
  151   void HLRThirdPass ();
 
  152   void InitializeGLView ();
 
  154   void ResizeWindow(
unsigned int, 
unsigned int);
 
  155   virtual G4String Pick(GLdouble x, GLdouble y);
 
  156   std::vector < G4OpenGLViewerPickMap* > GetPickDetails(GLdouble x, GLdouble y);
 
  157   virtual void CreateFontLists () {}
 
  172   std::string getRealPrintFilename();
 
  173   unsigned int getWinWidth() 
const;
 
  174   unsigned int getWinHeight() 
const;
 
  177   GLdouble getSceneNearWidth();
 
  178   GLdouble getSceneFarWidth();
 
  179   GLdouble getSceneDepth();
 
  180   void addExportImageFormat(std::string format);
 
  183   void g4GluPickMatrix(GLdouble x, GLdouble y, GLdouble 
width, GLdouble height,
 
  187   void g4GluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
 
  188                    GLdouble centerx, GLdouble centery, GLdouble
 
  190                    GLdouble upx, GLdouble upy, GLdouble upz );
 
  196   G4OpenGLSceneHandler& fOpenGLSceneHandler;
 
  199     transparency_enabled,   
 
  200     antialiasing_enabled,   
 
  205   G4double fDisplayHeadTimeX, fDisplayHeadTimeY;  
 
  207   G4double fDisplayHeadTimeRed, fDisplayHeadTimeGreen, fDisplayHeadTimeBlue;
 
  208   G4bool fDisplayLightFront;
 
  209   G4double fDisplayLightFrontX, fDisplayLightFrontY, fDisplayLightFrontZ,
 
  211   G4double fDisplayLightFrontRed, fDisplayLightFrontGreen, fDisplayLightFrontBlue;
 
  216   unsigned int fWinSize_x;
 
  217   unsigned int fWinSize_y;
 
  218   std::vector < std::string > fExportImageFormatVector;
 
  219   std::string fDefaultExportImageFormat;
 
  220   std::string fExportImageFormat;
 
  221   int fExportFilenameIndex;
 
  231   int fGl2psDefaultLineWith;
 
  232   int fGl2psDefaultPointSize;
 
  233   bool fGlViewInitialized;
 
  239   G4int getRealExportWidth();
 
  240   G4int getRealExportHeight();
 
  241   GLubyte* grabPixels (
int inColor,
 
  243                        unsigned int height);
 
  244   bool printNonVectoredEPS ();
 
  247   bool printVectoredEPS();
 
  250   bool fIsGettingPickInfos;
 
  253 #ifdef G4OPENGL_VERSION_2 
  255 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER 
  256   inline Wt::WGLWidget::Program getShaderProgram() {
 
  257     return fShaderProgram;
 
  259   inline Wt::WGLWidget::UniformLocation getShaderProjectionMatrix() {
 
  260     return fpMatrixUniform;
 
  262   inline Wt::WGLWidget::UniformLocation getShaderTransformMatrix() {
 
  263     return ftMatrixUniform;
 
  266   inline GLuint getShaderProgram() {
 
  267     return fShaderProgram;
 
  269   inline GLuint getShaderProjectionMatrix() {
 
  270     return fpMatrixUniform;
 
  272   inline GLuint getShaderTransformMatrix() {
 
  273     return ftMatrixUniform;
 
  275   inline GLuint getShaderViewModelMatrix() {
 
  276     return fmvMatrixUniform;
 
  283 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER 
  284 #define Shader Wt::WGLWidget::Shader 
  286 #define Shader GLuint 
  290 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER 
  291   Wt::WGLWidget::Program fShaderProgram;
 
  294   Wt::WGLWidget::AttribLocation fVertexPositionAttribute;
 
  295   Wt::WGLWidget::AttribLocation fVertexNormalAttribute;
 
  296   Wt::WGLWidget::UniformLocation fpMatrixUniform;
 
  297   Wt::WGLWidget::UniformLocation fcMatrixUniform;
 
  298   Wt::WGLWidget::UniformLocation fmvMatrixUniform;
 
  299   Wt::WGLWidget::UniformLocation fnMatrixUniform;
 
  300   Wt::WGLWidget::UniformLocation ftMatrixUniform;
 
  302   GLuint fShaderProgram;
 
  305   GLuint fVertexPositionAttribute;
 
  306   GLuint fVertexNormalAttribute;
 
  307   GLuint fpMatrixUniform;
 
  308   GLuint fcMatrixUniform;
 
  309   GLuint fmvMatrixUniform;
 
  310   GLuint fnMatrixUniform;
 
  311   GLuint ftMatrixUniform;
 
virtual void ClearView()=0
 
void print(const std::vector< T > &data)
 
G4bool isInitialized()
Check if the generator is initialized. 
 
std::string getName(const ParticleType t)
Get the native INCL name of the particle.