00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00029 #ifndef __vtkKWRenderWidget_h
00030 #define __vtkKWRenderWidget_h
00031
00032 #include "vtkKWCompositeWidget.h"
00033 #include "vtkWindows.h"
00034
00035 class vtkCamera;
00036 class vtkCornerAnnotation;
00037 class vtkProp;
00038 class vtkRenderWindow;
00039 class vtkRenderer;
00040 class vtkTextActor;
00041 class vtkKWMenu;
00042 class vtkKWRenderWidgetInternals;
00043 class vtkRenderWindowInteractor;
00044
00045 class KWWidgets_EXPORT vtkKWRenderWidget : public vtkKWCompositeWidget
00046 {
00047
00048 public:
00049 static vtkKWRenderWidget* New();
00050 vtkTypeRevisionMacro(vtkKWRenderWidget, vtkKWCompositeWidget);
00051 void PrintSelf(ostream& os, vtkIndent indent);
00052
00056 virtual void Close();
00057
00059 virtual void Render();
00060
00062
00063 vtkGetMacro(RenderState, int);
00064 vtkSetClampMacro(RenderState, int, 0, 1);
00065 vtkBooleanMacro(RenderState, int);
00067
00069
00070 enum
00071 {
00072 InteractiveRender = 0,
00073 StillRender = 1,
00074 DisabledRender = 2,
00075 SingleRender = 3
00076 };
00077
00078 vtkSetClampMacro(RenderMode, int,
00079 vtkKWRenderWidget::InteractiveRender,
00080 vtkKWRenderWidget::SingleRender);
00081 vtkGetMacro(RenderMode, int);
00082 virtual void SetRenderModeToInteractive()
00083 { this->SetRenderMode(vtkKWRenderWidget::InteractiveRender); };
00084 virtual void SetRenderModeToStill()
00085 { this->SetRenderMode(vtkKWRenderWidget::StillRender); };
00086 virtual void SetRenderModeToSingle()
00087 { this->SetRenderMode(vtkKWRenderWidget::SingleRender); };
00088 virtual void SetRenderModeToDisabled()
00089 { this->SetRenderMode(vtkKWRenderWidget::DisabledRender); };
00091
00093
00096 virtual void SetCollapsingRenders(int);
00097 vtkBooleanMacro(CollapsingRenders, int);
00098 vtkGetMacro(CollapsingRenders, int);
00100
00103 virtual void Reset();
00104
00106
00110 virtual void ResetCamera();
00111 virtual void ResetCameraClippingRange();
00113
00115
00124 virtual void AddBindings();
00125 virtual void RemoveBindings();
00126 virtual void AddInteractionBindings();
00127 virtual void RemoveInteractionBindings();
00129
00131
00134 virtual void SetAnnotationsVisibility(int v);
00135 vtkBooleanMacro(AnnotationsVisibility, int);
00137
00139
00143 virtual void SetCornerAnnotationVisibility(int v);
00144 virtual int GetCornerAnnotationVisibility();
00145 virtual void ToggleCornerAnnotationVisibility();
00146 vtkBooleanMacro(CornerAnnotationVisibility, int);
00147 virtual void SetCornerAnnotationColor(double r, double g, double b);
00148 virtual void SetCornerAnnotationColor(double *rgb)
00149 { this->SetCornerAnnotationColor(rgb[0], rgb[1], rgb[2]); };
00150 virtual double* GetCornerAnnotationColor();
00151 vtkGetObjectMacro(CornerAnnotation, vtkCornerAnnotation);
00152 vtkGetMacro(SupportCornerAnnotation, int);
00153 virtual void SetSupportCornerAnnotation(int);
00154 vtkBooleanMacro(SupportCornerAnnotation, int);
00156
00158
00159 virtual void SetHeaderAnnotationVisibility(int v);
00160 virtual int GetHeaderAnnotationVisibility();
00161 virtual void ToggleHeaderAnnotationVisibility();
00162 vtkBooleanMacro(HeaderAnnotationVisibility, int);
00163 virtual void SetHeaderAnnotationColor(double r, double g, double b);
00164 virtual void SetHeaderAnnotationColor(double *rgb)
00165 { this->SetHeaderAnnotationColor(rgb[0], rgb[1], rgb[2]); };
00166 virtual double* GetHeaderAnnotationColor();
00167 virtual void SetHeaderAnnotationText(const char*);
00168 virtual char* GetHeaderAnnotationText();
00169 vtkGetObjectMacro(HeaderAnnotation, vtkTextActor);
00171
00173
00174 virtual void SetDistanceUnits(const char*);
00175 vtkGetStringMacro(DistanceUnits);
00177
00179
00180 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
00181 virtual vtkRenderWindowInteractor* GetRenderWindowInteractor();
00183
00185
00186 vtkGetObjectMacro(VTKWidget, vtkKWCoreWidget);
00188
00190
00197 virtual vtkRenderer* GetRenderer() { return this->GetNthRenderer(0); }
00198 virtual vtkRenderer* GetNthRenderer(int index);
00199 virtual int GetNumberOfRenderers();
00200 virtual int GetRendererIndex(vtkRenderer*);
00201 virtual void AddRenderer(vtkRenderer*);
00202 virtual void RemoveRenderer(vtkRenderer*);
00203 virtual void RemoveNthRenderer(int index);
00204 virtual void RemoveAllRenderers();
00206
00208
00210 virtual vtkRenderer* GetOverlayRenderer()
00211 { return this->GetNthOverlayRenderer(0); }
00212 virtual vtkRenderer* GetNthOverlayRenderer(int index);
00213 virtual int GetNumberOfOverlayRenderers();
00214 virtual int GetOverlayRendererIndex(vtkRenderer*);
00215 virtual void AddOverlayRenderer(vtkRenderer*);
00216 virtual void RemoveOverlayRenderer(vtkRenderer*);
00217 virtual void RemoveNthOverlayRenderer(int index);
00218 virtual void RemoveAllOverlayRenderers();
00220
00222
00224 virtual void GetRendererBackgroundColor(double *r, double *g, double *b);
00225 virtual void SetRendererBackgroundColor(double r, double g, double b);
00226 virtual void SetRendererBackgroundColor(double rgb[3])
00227 { this->SetRendererBackgroundColor(rgb[0], rgb[1], rgb[2]); };
00228 virtual void GetRendererBackgroundColor2(double *r, double *g, double *b);
00229 virtual void SetRendererBackgroundColor2(double r, double g, double b);
00230 virtual void SetRendererBackgroundColor2(double rgb[3])
00231 { this->SetRendererBackgroundColor2(rgb[0], rgb[1], rgb[2]); };
00232 virtual void SetRendererGradientBackground(int);
00233 virtual int GetRendererGradientBackground();
00234 virtual void ToggleRendererGradientBackground();
00236
00238
00241 virtual void AddViewProp(vtkProp *prop);
00242 virtual void AddViewPropToNthRenderer(vtkProp *p, int index);
00243 virtual void AddOverlayViewProp(vtkProp *prop);
00244 virtual void AddViewPropToNthOverlayRenderer(vtkProp *p, int index);
00246
00248
00250 virtual int HasViewProp(vtkProp *prop);
00251 virtual void RemoveViewProp(vtkProp *prop);
00252 virtual void RemoveAllViewProps();
00254
00258 virtual void ComputeVisiblePropBounds(int index, double bounds[6]);
00259
00261
00262 virtual void SetPrinting(int arg);
00263 vtkBooleanMacro(Printing, int);
00264 vtkGetMacro(Printing, int);
00266
00268
00269 vtkBooleanMacro(OffScreenRendering, int);
00270 virtual void SetOffScreenRendering(int);
00271 virtual int GetOffScreenRendering();
00273
00275
00277 vtkSetMacro(UseContextMenu, int);
00278 vtkGetMacro(UseContextMenu, int);
00279 vtkBooleanMacro(UseContextMenu, int);
00281
00288 virtual void UpdateEnableState();
00289
00291
00294 virtual void Register(vtkObjectBase* o);
00295 virtual void UnRegister(vtkObjectBase* o);
00297
00299
00300 #if defined(_WIN32) && !defined(__CYGWIN__)
00301 virtual void SetupPrint(RECT &rcDest, HDC ghdc,
00302 int printerPageSizeX, int printerPageSizeY,
00303 int printerDPIX, int printerDPIY,
00304 float scaleX, float scaleY,
00305 int screenSizeX, int screenSizeY);
00307 #endif
00308
00310 virtual void* GetMemoryDC();
00311
00313
00317 virtual void AddCallbackCommandObservers();
00318 virtual void RemoveCallbackCommandObservers();
00320
00322
00323 virtual void MouseMoveCallback(
00324 int num, int x, int y, int ctrl, int shift, int alt);
00325 virtual void MouseWheelCallback(
00326 int delta, int ctrl, int shift, int alt);
00327 virtual void MouseButtonPressCallback(
00328 int num, int x, int y, int ctrl, int shift, int alt, int repeat);
00329 virtual void MouseButtonReleaseCallback(
00330 int num, int x, int y, int ctrl, int shift, int alt);
00331 virtual void KeyPressCallback(
00332 char key, int x, int y, int ctrl, int shift, int alt, char *keysym);
00333 virtual void KeyReleaseCallback(
00334 char key, int x, int y, int ctrl, int shift, int alt, char *keysym);
00335 virtual void ConfigureCallback(int width, int height);
00336 virtual void ExposeCallback();
00337 virtual void EnterCallback(int x, int y);
00338 virtual void LeaveCallback(int x, int y);
00339 virtual void FocusInCallback();
00340 virtual void FocusOutCallback();
00341 virtual int RendererBackgroundColorCallback();
00342 virtual int RendererBackgroundColor2Callback();
00343 virtual void RendererGradientBackgroundCallback();
00345
00347
00348 enum
00349 {
00350 CornerAnnotationVisibilityChangedEvent = 24000,
00351 RendererGradientBackgroundChangedEvent,
00352 RendererBackgroundColorChangedEvent,
00353 RendererBackgroundColor2ChangedEvent
00354 };
00355
00357
00359
00360 vtkGetStringMacro(RendererBackgroundColorRegKey);
00361 vtkSetStringMacro(RendererBackgroundColorRegKey);
00362 vtkGetStringMacro(RendererBackgroundColor2RegKey);
00363 vtkSetStringMacro(RendererBackgroundColor2RegKey);
00364 vtkGetStringMacro(RendererGradientBackgroundRegKey);
00365 vtkSetStringMacro(RendererGradientBackgroundRegKey);
00367
00368
00369
00370 protected:
00371 vtkKWRenderWidget();
00372 ~vtkKWRenderWidget();
00373
00375 virtual void CreateWidget();
00376
00377 vtkKWCoreWidget *VTKWidget;
00378 vtkRenderWindow *RenderWindow;
00379 vtkCornerAnnotation *CornerAnnotation;
00380 vtkTextActor *HeaderAnnotation;
00381
00382 int RenderMode;
00383 int PreviousRenderMode;
00384 int InExpose;
00385 int RenderState;
00386 int Printing;
00387
00388 char *DistanceUnits;
00389
00390 int CollapsingRenders;
00391 int CollapsingRendersCount;
00392
00395 virtual void CreateDefaultRenderers();
00396
00400 virtual void InstallRenderers();
00401
00403 virtual void SetRenderersDefaultValues();
00404
00407 virtual void UpdateAccordingToUnits() {};
00408
00410
00411 virtual void SetupMemoryRendering(int width, int height, void *cd);
00412 virtual void ResumeScreenRendering();
00414
00416
00419 virtual void ProcessCallbackCommandEvents(
00420 vtkObject *caller, unsigned long event, void *calldata);
00422
00423
00424
00425 int UseContextMenu;
00426 vtkKWMenu *ContextMenu;
00427
00429
00441 virtual void PopulateContextMenu(vtkKWMenu*);
00442 virtual void PopulateContextMenuWithInteractionEntries(vtkKWMenu*) {};
00443 virtual void PopulateContextMenuWithAnnotationEntries(vtkKWMenu*);
00444 virtual void PopulateContextMenuWithOptionEntries(vtkKWMenu*) {};
00445 virtual void PopulateContextMenuWithCameraEntries(vtkKWMenu*);
00446 virtual void PopulateContextMenuWithColorEntries(vtkKWMenu*);
00448
00450 virtual void UpdateRenderWindowInteractorSize(int width, int height);
00451
00452
00453
00454 vtkKWRenderWidgetInternals *Internals;
00455
00456 int SupportCornerAnnotation;
00457
00459
00460 char *RendererBackgroundColorRegKey;
00461 char *RendererBackgroundColor2RegKey;
00462 char *RendererGradientBackgroundRegKey;
00464
00465
00466
00467 private:
00468 vtkKWRenderWidget(const vtkKWRenderWidget&);
00469 void operator=(const vtkKWRenderWidget&);
00470 };
00471
00472 #endif
00473
00474