VTK  9.3.20240423
vtkRenderWindowInteractor.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
151#ifndef vtkRenderWindowInteractor_h
152#define vtkRenderWindowInteractor_h
153
154#include "vtkCommand.h" // for method sig
155#include "vtkObject.h"
156#include "vtkRenderingCoreModule.h" // For export macro
157#include "vtkSmartPointer.h" // For InteractorStyle
158#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
159
160VTK_ABI_NAMESPACE_BEGIN
161class vtkTimerIdMap;
162
163// Timer flags for win32/X compatibility
164#define VTKI_TIMER_FIRST 0
165#define VTKI_TIMER_UPDATE 1
166
167// maximum pointers active at once
168// for example in multitouch
169#define VTKI_MAX_POINTERS 5
170
173class vtkAssemblyPath;
176class vtkRenderWindow;
177class vtkRenderer;
181
182class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkRenderWindowInteractor : public vtkObject
183{
184
186
187public:
190 void PrintSelf(ostream& os, vtkIndent indent) override;
191
193
200 virtual void Initialize();
202 {
203 this->Initialized = 0;
204 this->Enabled = 0;
205 this->Initialize();
206 }
208
213 void UnRegister(vtkObjectBase* o) override;
214
220 virtual void Start();
221
228 virtual void ProcessEvents() {}
229
233 vtkGetMacro(Done, bool);
234 vtkSetMacro(Done, bool);
235
245 virtual void Enable()
246 {
247 this->Enabled = 1;
248 this->Modified();
249 }
250 virtual void Disable()
251 {
252 this->Enabled = 0;
253 this->Modified();
254 }
255 vtkGetMacro(Enabled, int);
256
258
262 vtkBooleanMacro(EnableRender, bool);
264 vtkSetMacro(EnableRender, bool);
266 vtkGetMacro(EnableRender, bool);
268
270
273 void SetRenderWindow(vtkRenderWindow* aren);
274 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
276
278
283 void SetHardwareWindow(vtkHardwareWindow* aren);
284 vtkGetObjectMacro(HardwareWindow, vtkHardwareWindow);
286
294 virtual void UpdateSize(int x, int y);
295
313 virtual int CreateTimer(int timerType); // first group, for backward compatibility
314 virtual int DestroyTimer(); // first group, for backward compatibility
315
320 int CreateRepeatingTimer(unsigned long duration);
321
326 int CreateOneShotTimer(unsigned long duration);
327
332 int IsOneShotTimer(int timerId);
333
337 unsigned long GetTimerDuration(int timerId);
338
342 int ResetTimer(int timerId);
343
348 int DestroyTimer(int timerId);
349
353 virtual int GetVTKTimerId(int platformTimerId);
354
355 // Moved into the public section of the class so that classless timer procs
356 // can access these enum members without being "friends"...
357 enum
358 {
359 OneShotTimer = 1,
360 RepeatingTimer
361 };
362
364
373 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
374 vtkGetMacro(TimerDuration, unsigned long);
376
378
390 vtkSetMacro(TimerEventId, int);
391 vtkGetMacro(TimerEventId, int);
392 vtkSetMacro(TimerEventType, int);
393 vtkGetMacro(TimerEventType, int);
394 vtkSetMacro(TimerEventDuration, int);
395 vtkGetMacro(TimerEventDuration, int);
396 vtkSetMacro(TimerEventPlatformId, int);
397 vtkGetMacro(TimerEventPlatformId, int);
399
405 virtual void TerminateApp() { this->Done = true; }
406
408
415
417
421 vtkSetMacro(LightFollowCamera, vtkTypeBool);
422 vtkGetMacro(LightFollowCamera, vtkTypeBool);
423 vtkBooleanMacro(LightFollowCamera, vtkTypeBool);
425
427
434 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
435 vtkGetMacro(DesiredUpdateRate, double);
437
439
444 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
445 vtkGetMacro(StillUpdateRate, double);
447
449
453 vtkGetMacro(Initialized, int);
455
457
464 virtual void SetPicker(vtkAbstractPicker*);
466 vtkGetObjectMacro(Picker, vtkAbstractPicker);
468
473 virtual vtkAbstractPropPicker* CreateDefaultPicker();
474
476
482 virtual void SetPickingManager(vtkPickingManager*);
484 vtkGetObjectMacro(PickingManager, vtkPickingManager);
486
488
492 virtual void ExitCallback();
493 virtual void UserCallback();
494 virtual void StartPickCallback();
495 virtual void EndPickCallback();
497
501 virtual void GetMousePosition(int* x, int* y)
502 {
503 *x = 0;
504 *y = 0;
505 }
506
508
515
520 virtual void Render();
521
523
528 void FlyTo(vtkRenderer* ren, double x, double y, double z);
529 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
530 void FlyToImage(vtkRenderer* ren, double x, double y);
531 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
533
535
538 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
539 vtkGetMacro(NumberOfFlyFrames, int);
541
543
547 vtkSetMacro(Dolly, double);
548 vtkGetMacro(Dolly, double);
550
552
560 vtkGetVector2Macro(EventPosition, int);
561 vtkGetVector2Macro(LastEventPosition, int);
562 vtkSetVector2Macro(LastEventPosition, int);
563 virtual void SetEventPosition(int x, int y)
564 {
565 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
566 << "," << y << ")");
567 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
568 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
569 {
570 this->LastEventPosition[0] = this->EventPosition[0];
571 this->LastEventPosition[1] = this->EventPosition[1];
572 this->EventPosition[0] = x;
573 this->EventPosition[1] = y;
574 this->Modified();
575 }
576 }
577 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
578 virtual void SetEventPositionFlipY(int x, int y)
579 {
580 this->SetEventPosition(x, this->Size[1] - y - 1);
581 }
582 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
584
585 virtual int* GetEventPositions(int pointerIndex)
586 {
587 if (pointerIndex >= VTKI_MAX_POINTERS)
588 {
589 return nullptr;
590 }
591 return this->EventPositions[pointerIndex];
592 }
593 virtual int* GetLastEventPositions(int pointerIndex)
594 {
595 if (pointerIndex >= VTKI_MAX_POINTERS)
596 {
597 return nullptr;
598 }
599 return this->LastEventPositions[pointerIndex];
600 }
601 virtual void SetEventPosition(int x, int y, int pointerIndex)
602 {
603 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
604 {
605 return;
606 }
607 if (pointerIndex == 0)
608 {
609 this->LastEventPosition[0] = this->EventPosition[0];
610 this->LastEventPosition[1] = this->EventPosition[1];
611 this->EventPosition[0] = x;
612 this->EventPosition[1] = y;
613 }
614 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
615 << "," << y << ") for pointerIndex number " << pointerIndex);
616 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
617 this->LastEventPositions[pointerIndex][0] != x ||
618 this->LastEventPositions[pointerIndex][1] != y)
619 {
620 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
621 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
622 this->EventPositions[pointerIndex][0] = x;
623 this->EventPositions[pointerIndex][1] = y;
624 this->Modified();
625 }
626 }
627 virtual void SetEventPosition(int pos[2], int pointerIndex)
628 {
629 this->SetEventPosition(pos[0], pos[1], pointerIndex);
630 }
631 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
632 {
633 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
634 }
635 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
636 {
637 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
638 }
639
641
648 vtkSetMacro(AltKey, int);
649 vtkGetMacro(AltKey, int);
651
653
658 vtkSetMacro(ControlKey, int);
659 vtkGetMacro(ControlKey, int);
661
663
666 vtkSetMacro(ShiftKey, int);
667 vtkGetMacro(ShiftKey, int);
669
671
694 vtkSetMacro(KeyCode, char);
695 vtkGetMacro(KeyCode, char);
697
699
703 vtkSetMacro(RepeatCount, int);
704 vtkGetMacro(RepeatCount, int);
706
708
728 vtkSetStringMacro(KeySym);
729 vtkGetStringMacro(KeySym);
731
733
736 vtkSetMacro(PointerIndex, int);
737 vtkGetMacro(PointerIndex, int);
739
741
744 void SetRotation(double rotation);
745 vtkGetMacro(Rotation, double);
746 vtkGetMacro(LastRotation, double);
748
750
753 void SetScale(double scale);
754 vtkGetMacro(Scale, double);
755 vtkGetMacro(LastScale, double);
757
759
762 void SetTranslation(double val[2]);
763 vtkGetVector2Macro(Translation, double);
764 vtkGetVector2Macro(LastTranslation, double);
766
768
771 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
772 const char* keysym, int pointerIndex)
773 {
774 this->SetEventPosition(x, y, pointerIndex);
775 this->ControlKey = ctrl;
776 this->ShiftKey = shift;
777 this->KeyCode = keycode;
778 this->RepeatCount = repeatcount;
779 this->PointerIndex = pointerIndex;
780 if (keysym)
781 {
782 this->SetKeySym(keysym);
783 }
784 this->Modified();
785 }
786 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
787 int repeatcount = 0, const char* keysym = nullptr)
788 {
789 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
790 }
792
794
798 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
799 const char* keysym, int pointerIndex)
800 {
801 this->SetEventInformation(
802 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
803 }
804 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
805 int repeatcount = 0, const char* keysym = nullptr)
806 {
807 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
808 }
810
812
815 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
816 const char* keysym = nullptr)
817 {
818 this->ControlKey = ctrl;
819 this->ShiftKey = shift;
820 this->KeyCode = keycode;
821 this->RepeatCount = repeatcount;
822 if (keysym)
823 {
824 this->SetKeySym(keysym);
825 }
826 this->Modified();
827 }
829
831
842 vtkSetVector2Macro(Size, int);
843 vtkGetVector2Macro(Size, int);
844 vtkSetVector2Macro(EventSize, int);
845 vtkGetVector2Macro(EventSize, int);
847
853 virtual vtkRenderer* FindPokedRenderer(int, int);
854
863
865
873 vtkSetMacro(UseTDx, bool);
874 vtkGetMacro(UseTDx, bool);
876
878
883 virtual void MouseMoveEvent();
884 virtual void RightButtonPressEvent();
886 virtual void LeftButtonPressEvent();
892 virtual void MouseWheelLeftEvent();
893 virtual void MouseWheelRightEvent();
894 virtual void ExposeEvent();
895 virtual void ConfigureEvent();
896 virtual void EnterEvent();
897 virtual void LeaveEvent();
898 virtual void KeyPressEvent();
899 virtual void KeyReleaseEvent();
900 virtual void CharEvent();
901 virtual void ExitEvent();
904 virtual void FifthButtonPressEvent();
907
909
913 virtual void StartPinchEvent();
914 virtual void PinchEvent();
915 virtual void EndPinchEvent();
916 virtual void StartRotateEvent();
917 virtual void RotateEvent();
918 virtual void EndRotateEvent();
919 virtual void StartPanEvent();
920 virtual void PanEvent();
921 virtual void EndPanEvent();
922 virtual void TapEvent();
923 virtual void LongTapEvent();
924 virtual void SwipeEvent();
926
928
934 vtkSetMacro(RecognizeGestures, bool);
935 vtkGetMacro(RecognizeGestures, bool);
937
939
944 vtkGetMacro(PointersDownCount, int);
946
948
955 void ClearContact(size_t contactID);
956 int GetPointerIndexForContact(size_t contactID);
958 bool IsPointerIndexSet(int i);
959 void ClearPointerIndex(int i);
961
981
983
992
993protected:
996
1000
1001 // Used as a helper object to pick instances of vtkProp
1004
1005 bool Done; // is the event loop done running
1006
1012
1021
1022 // Event information
1027 double Rotation;
1029 double Scale;
1031 double Translation[2];
1032 double LastTranslation[2];
1034 char* KeySym;
1035 int EventPosition[2];
1036 int LastEventPosition[2];
1037 int EventSize[2];
1038 int Size[2];
1043
1044 int EventPositions[VTKI_MAX_POINTERS][2];
1045 int LastEventPositions[VTKI_MAX_POINTERS][2];
1047
1048 size_t PointerIndexLookup[VTKI_MAX_POINTERS];
1049
1050 // control the fly to
1052 double Dolly;
1053
1063 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
1064 {
1065 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
1066 }
1067 void ReleaseFocus() { this->Superclass::InternalReleaseFocus(); }
1068
1073
1074 // Timer related members
1075 friend struct vtkTimerStruct;
1076 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
1077 unsigned long TimerDuration; // in milliseconds
1079
1085 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
1086 virtual int InternalDestroyTimer(int platformTimerId);
1089
1090 // Force the interactor to handle the Start() event loop, ignoring any
1091 // overrides. (Overrides are registered by observing StartEvent on the
1092 // interactor.)
1094
1098 virtual void StartEventLoop() {}
1099
1100 bool UseTDx; // 3DConnexion device.
1101
1102 // when recognizing gestures VTK will take multitouch events
1103 // if it receives them and convert them to gestures
1106 int PointersDown[VTKI_MAX_POINTERS];
1108 int StartingEventPositions[VTKI_MAX_POINTERS][2];
1110
1111private:
1113 void operator=(const vtkRenderWindowInteractor&) = delete;
1114};
1115
1116VTK_ABI_NAMESPACE_END
1117#endif
define API for picking subclasses
abstract API for pickers that can pick an instance of vtkProp
a list of nodes that form an assembly path
superclass for callback/observer methods
Definition vtkCommand.h:384
create a window for renderers to draw into
a simple class to control print indentation
Definition vtkIndent.h:108
record and play VTK events passing through a vtkRenderWindowInteractor
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
abstract base class for most VTK objects
const char * GetClassName() const
Return the class name as a string.
abstract base class for most VTK objects
Definition vtkObject.h:162
virtual void Modified()
Update the modification time for this object.
manage contention for cursors and other resources
Class defines API to manage the picking process.
platform-independent render window interaction including picking and frame rate control.
void HideCursor()
Hide or show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual void StartEventLoop()
Run the event loop (does not return until TerminateApp is called).
virtual void FourthButtonReleaseEvent()
Fire various events.
virtual void PinchEvent()
Fire various gesture based events.
virtual void SwipeEvent()
Fire various gesture based events.
virtual void StartRotateEvent()
Fire various gesture based events.
void SetKeyEventInformation(int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Set all the keyboard-related event information in one call.
void UnRegister(vtkObjectBase *o) override
This Method detects loops of RenderWindow-Interactor, so objects are freed properly.
virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
virtual void EndPinchEvent()
Fire various gesture based events.
virtual void KeyReleaseEvent()
Fire various events.
virtual int * GetLastEventPositions(int pointerIndex)
virtual void Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
Internal methods for creating and destroying timers that must be implemented by subclasses.
vtkObserverMediator * ObserverMediator
Widget mediators are used to resolve contention for cursors and other resources.
virtual void EndRotateEvent()
Fire various gesture based events.
virtual void ExitEvent()
Fire various events.
void FlyToImage(vtkRenderer *ren, double x, double y)
Given a position x, move the current camera's focal point to x.
void SetRotation(double rotation)
Set/get the rotation for the gesture in degrees, update LastRotation.
virtual void ExposeEvent()
Fire various events.
virtual void EndPanEvent()
Fire various gesture based events.
virtual void Render()
Render the scene.
virtual vtkRenderer * FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
virtual void MouseWheelLeftEvent()
Fire various events.
virtual void MouseWheelForwardEvent()
Fire various events.
virtual void SetEventPosition(int x, int y)
Set/Get information about the current event.
virtual void TerminateApp()
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
virtual void LeftButtonReleaseEvent()
Fire various events.
virtual void CharEvent()
Fire various events.
void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount, const char *keysym, int pointerIndex)
Set all the event information in one call.
vtkObserverMediator * GetObserverMediator()
Return the object used to mediate between vtkInteractorObservers contending for resources.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual vtkPickingManager * CreateDefaultPickingManager()
Create default pickingManager.
virtual void LeaveEvent()
Fire various events.
static bool InteractorManagesTheEventLoop
This flag is useful when you are integrating VTK in a larger system.
virtual vtkInteractorObserver * GetInteractorStyle()
External switching between joystick/trackball/new? modes.
virtual void FourthButtonPressEvent()
Fire various events.
virtual void MouseWheelRightEvent()
Fire various events.
virtual void EnterEvent()
Fire various events.
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
~vtkRenderWindowInteractor() override
virtual void RightButtonPressEvent()
Fire various events.
virtual void Start()
Start the event loop.
void SetEventInformation(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Set all the event information in one call.
void ShowCursor()
Hide or show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual void ConfigureEvent()
Fire various events.
virtual void FifthButtonPressEvent()
Fire various events.
virtual int * GetEventPositions(int pointerIndex)
virtual void StartPanEvent()
Fire various gesture based events.
int GetCurrentTimerId()
Internal methods for creating and destroying timers that must be implemented by subclasses.
virtual void MouseWheelBackwardEvent()
Fire various events.
virtual void SetInteractorStyle(vtkInteractorObserver *)
External switching between joystick/trackball/new? modes.
void ClearContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
void FlyTo(vtkRenderer *ren, double x, double y, double z)
Given a position x, move the current camera's focal point to x.
void ReInitialize()
Prepare for handling events and set the Enabled flag to true.
void SetEventInformationFlipY(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Calls SetEventInformation, but flips the Y based on the current Size[1] value (i.e.
vtkSmartPointer< vtkInteractorObserver > InteractorStyle
void SetTranslation(double val[2])
Set/get the translation for pan/swipe gestures, update LastTranslation.
virtual void SetCurrentGesture(vtkCommand::EventIds eid)
Get the current gesture that was recognized when handling multitouch and VR events.
void FlyToImage(vtkRenderer *ren, double *x)
Given a position x, move the current camera's focal point to x.
virtual void PanEvent()
Fire various gesture based events.
virtual void ProcessEvents()
Process all user-interaction, timer events and return.
virtual void RightButtonReleaseEvent()
Fire various events.
virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount, const char *keysym, int pointerIndex)
Calls SetEventInformation, but flips the Y based on the current Size[1] value (i.e.
virtual void SetEventPositionFlipY(int x, int y)
Set/Get information about the current event.
int GetPointerIndexForContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
static vtkRenderWindowInteractor * New()
virtual void FifthButtonReleaseEvent()
Fire various events.
bool IsPointerIndexSet(int i)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void LeftButtonPressEvent()
Fire various events.
void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
virtual vtkCommand::EventIds GetCurrentGesture() const
Get the current gesture that was recognized when handling multitouch and VR events.
virtual void MiddleButtonPressEvent()
Fire various events.
int GetPointerIndexForExistingContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void MouseMoveEvent()
Fire various events.
void FlyTo(vtkRenderer *ren, double *x)
Given a position x, move the current camera's focal point to x.
virtual void StartPinchEvent()
Fire various gesture based events.
virtual void SetEventPosition(int pos[2])
Set/Get information about the current event.
void SetScale(double scale)
Set/get the scale for the gesture, updates LastScale.
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
virtual void RotateEvent()
Fire various gesture based events.
virtual void TapEvent()
Fire various gesture based events.
virtual void SetEventPositionFlipY(int pos[2])
Set/Get information about the current event.
virtual void SetEventPosition(int x, int y, int pointerIndex)
void ClearPointerIndex(int i)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void LongTapEvent()
Fire various gesture based events.
virtual void MiddleButtonReleaseEvent()
Fire various events.
virtual void RecognizeGesture(vtkCommand::EventIds)
virtual void SetEventPosition(int pos[2], int pointerIndex)
virtual void KeyPressEvent()
Fire various events.
create a window for renderers to draw into
abstract specification for renderers
Hold a reference to a vtkObjectBase instance.
int vtkTypeBool
Definition vtkABI.h:64
#define VTKI_MAX_POINTERS
#define VTK_INT_MAX
Definition vtkType.h:144
#define VTK_FLOAT_MAX
Definition vtkType.h:152
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)