33 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
35 #ifndef G4OPENGLWTVIEWER_HH
36 #define G4OPENGLWTVIEWER_HH
45 #include <Wt/WContainerWidget>
46 #include <Wt/WMatrix4x4>
48 class G4OpenGLSceneHandler;
53 class WContextMenuEvent;
63 class G4OpenGLSceneHandler;
64 class G4OpenGLWtMovieDialog;
66 class G4OpenGLWtViewer:
virtual public G4OpenGLViewer {
69 G4OpenGLWtViewer (G4OpenGLSceneHandler& scene);
70 virtual ~G4OpenGLWtViewer ();
71 virtual void updateWWidget()=0;
73 Wt::WMatrix4x4 mMatrix;
76 Wt::WString setEncoderPath(Wt::WString path);
77 Wt::WString getEncoderPath();
78 Wt::WString setTempFolderPath(Wt::WString path);
79 Wt::WString getTempFolderPath();
80 Wt::WString setSaveFileName(Wt::WString path);
81 Wt::WString getSaveFileName();
96 bool isReadyToEncode();
97 void resetRecording();
101 bool generateMpegEncoderParameters();
102 void displayRecordingStatus();
104 void drawText(
const char * ,
int x,
int y,
int z,
int size);
106 void CreateGLWtContext ();
107 virtual void CreateMainWindow (Wt::WGLWidget*,Wt::WString);
108 #ifdef _A_FINIR_FIXME
109 void G4manageContextMenuEvent(Wt::WContextMenuEvent *e);
111 void G4MousePressEvent(Wt::WMouseEvent *event);
112 void G4MouseReleaseEvent();
113 void G4MouseDoubleClickEvent();
114 void G4MouseMoveEvent(Wt::WMouseEvent *event);
116 void G4keyPressEvent (Wt::WKeyEvent * event);
117 void rotateWtScene(
float,
float);
118 void rotateWtSceneToggle(
float,
float);
119 void moveScene(
float,
float,
float,
bool);
120 #ifdef _A_FINIR_FIXME
121 void updateKeyModifierState(Wt::KeyboardModifiers);
124 inline Wt::WGLWidget* getGLWindow() {
130 Wt::WGLWidget* fWindow;
131 Wt::WWidget* fGLWindow;
132 bool hasPendingEvents();
133 void resizeGL(
int width,
int height);
135 #ifdef _A_FINIR_FIXME
136 void savePPMToTemp();
138 int fRecordFrameNumber;
145 enum mouseActions {STYLE1,STYLE2,STYLE3,STYLE4};
146 enum RECORDING_STEP {WAIT,
START,PAUSE,CONTINUE,STOP,READY_TO_ENCODE,
ENCODING,FAILED,SUCCESS,BAD_ENCODER,BAD_OUTPUT,BAD_TMP,SAVE};
148 #ifdef _A_FINIR_FIXME
149 void createPopupMenu();
150 void createRadioAction(Wt::WAction *,Wt::WAction *,
const std::string&,
unsigned int a=1);
152 void rescaleImage(
int,
int);
153 #ifdef _A_FINIR_FIXME
154 bool printPDF(
const std::string,
int,WImage);
155 void showMovieParametersDialog();
156 void initMovieParameters();
157 Wt::WString createTempFolder();
158 Wt::WString removeTempFolder();
159 void setRecordingStatus(RECORDING_STEP);
160 void setRecordingInfos(Wt::WString);
161 Wt::WString getProcessErrorMsg();
166 mouseActions fMouseAction;
167 Wt::WPoint fLastPos1;
168 Wt::WPoint fLastPos2;
169 Wt::WPoint fLastPos3;
185 bool fHoldRotateEvent;
187 Wt::WString fEncoderPath;
188 Wt::WString fTempFolderPath;
189 Wt::WString fMovieTempFolderPath;
190 Wt::WString fSaveFileName;
191 Wt::WString fParameterFileName;
192 #ifdef _A_FINIR_FIXME
193 WAction *fRotateAction;
194 WAction *fMoveAction;
195 WAction *fPickAction;
196 WAction *fFullScreenOn;
197 WAction *fFullScreenOff;
198 WAction *fDrawingWireframe;
199 WAction *fDrawingLineRemoval;
200 WAction *fDrawingSurfaceRemoval;
201 WAction *fDrawingLineSurfaceRemoval;
203 G4OpenGLWtMovieDialog* fMovieParametersDialog;
204 RECORDING_STEP fRecordingStep;
206 Wt::WTime *fLastEventTime;
208 int fNbMaxFramesPerSec;
209 float fNbMaxAnglePerSec;
210 int fLaunchSpinDelay;
211 Wt::WTabWidget* fUISceneTreeComponentsTBWidget;
217 bool fControlKeyPress;
222 #ifdef _A_FINIR_FIXME
223 void rotateTheta(
int);
231 void startPauseVideo();
234 #ifdef _A_FINIR_FIXME
235 void actionMouseRotate();
236 void actionMouseMove();
237 void actionMousePick();
238 void actionDrawingWireframe();
239 void actionDrawingLineRemoval();
240 void actionDrawingSurfaceRemoval();
241 void actionDrawingLineSurfaceRemoval();
242 void actionSaveImage();
243 void actionChangeBackgroundColor();
244 void actionChangeTextColor();
245 void actionChangeDefaultColor();
246 void actionMovieParameters();
249 void showShortcuts();
250 #ifdef _A_FINIR_FIXME
251 void toggleDrawingAction(
int);
252 void toggleMouseAction(mouseActions);
253 void toggleRepresentation(
bool);
254 void toggleProjection(
bool);
255 void toggleTransparency(
bool);
256 void toggleAntialiasing(
bool);
257 void toggleHaloing(
bool);
258 void toggleAux(
bool);
259 void toggleFullScreen(
bool);
261 void processEncodeFinished();
262 void processLookForFinished();
263 void processEncodeStdout();