VTK  9.4.20250322
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
295 virtual void UpdateSize(int x, int y);
296
314 virtual int CreateTimer(int timerType); // first group, for backward compatibility
315 virtual int DestroyTimer(); // first group, for backward compatibility
316
321 int CreateRepeatingTimer(unsigned long duration);
322
327 int CreateOneShotTimer(unsigned long duration);
328
333 int IsOneShotTimer(int timerId);
334
338 unsigned long GetTimerDuration(int timerId);
339
343 int ResetTimer(int timerId);
344
349 int DestroyTimer(int timerId);
350
354 virtual int GetVTKTimerId(int platformTimerId);
355
356 // Moved into the public section of the class so that classless timer procs
357 // can access these enum members without being "friends"...
358 enum
359 {
360 OneShotTimer = 1,
361 RepeatingTimer
362 };
363
365
374 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
375 vtkGetMacro(TimerDuration, unsigned long);
377
379
391 vtkSetMacro(TimerEventId, int);
392 vtkGetMacro(TimerEventId, int);
393 vtkSetMacro(TimerEventType, int);
394 vtkGetMacro(TimerEventType, int);
395 vtkSetMacro(TimerEventDuration, int);
396 vtkGetMacro(TimerEventDuration, int);
397 vtkSetMacro(TimerEventPlatformId, int);
398 vtkGetMacro(TimerEventPlatformId, int);
400
406 virtual void TerminateApp() { this->Done = true; }
407
409
416
418
422 vtkSetMacro(LightFollowCamera, vtkTypeBool);
423 vtkGetMacro(LightFollowCamera, vtkTypeBool);
424 vtkBooleanMacro(LightFollowCamera, vtkTypeBool);
426
428
435 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
436 vtkGetMacro(DesiredUpdateRate, double);
438
440
445 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
446 vtkGetMacro(StillUpdateRate, double);
448
450
454 vtkGetMacro(Initialized, int);
456
458
465 virtual void SetPicker(vtkAbstractPicker*);
467 vtkGetObjectMacro(Picker, vtkAbstractPicker);
469
474 virtual vtkAbstractPropPicker* CreateDefaultPicker();
475
477
483 virtual void SetPickingManager(vtkPickingManager*);
485 vtkGetObjectMacro(PickingManager, vtkPickingManager);
487
489
493 virtual void ExitCallback();
494 virtual void UserCallback();
495 virtual void StartPickCallback();
496 virtual void EndPickCallback();
498
502 virtual void GetMousePosition(int* x, int* y)
503 {
504 *x = 0;
505 *y = 0;
506 }
507
509
516
521 virtual void Render();
522
524
529 void FlyTo(vtkRenderer* ren, double x, double y, double z);
530 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
531 void FlyToImage(vtkRenderer* ren, double x, double y);
532 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
534
536
539 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
540 vtkGetMacro(NumberOfFlyFrames, int);
542
544
548 vtkSetMacro(Dolly, double);
549 vtkGetMacro(Dolly, double);
551
553
561 vtkGetVector2Macro(EventPosition, int);
562 vtkGetVector2Macro(LastEventPosition, int);
563 vtkSetVector2Macro(LastEventPosition, int);
564 virtual void SetEventPosition(int x, int y)
565 {
566 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
567 << "," << y << ")");
568 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
569 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
570 {
571 this->LastEventPosition[0] = this->EventPosition[0];
572 this->LastEventPosition[1] = this->EventPosition[1];
573 this->EventPosition[0] = x;
574 this->EventPosition[1] = y;
575 this->Modified();
576 }
577 }
578 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
579 virtual void SetEventPositionFlipY(int x, int y)
580 {
581 this->SetEventPosition(x, this->Size[1] - y - 1);
582 }
583 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
585
586 virtual int* GetEventPositions(int pointerIndex)
587 {
588 if (pointerIndex >= VTKI_MAX_POINTERS)
589 {
590 return nullptr;
591 }
592 return this->EventPositions[pointerIndex];
593 }
594 virtual int* GetLastEventPositions(int pointerIndex)
595 {
596 if (pointerIndex >= VTKI_MAX_POINTERS)
597 {
598 return nullptr;
599 }
600 return this->LastEventPositions[pointerIndex];
601 }
602 virtual void SetEventPosition(int x, int y, int pointerIndex)
603 {
604 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
605 {
606 return;
607 }
608 if (pointerIndex == 0)
609 {
610 this->LastEventPosition[0] = this->EventPosition[0];
611 this->LastEventPosition[1] = this->EventPosition[1];
612 this->EventPosition[0] = x;
613 this->EventPosition[1] = y;
614 }
615 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
616 << "," << y << ") for pointerIndex number " << pointerIndex);
617 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
618 this->LastEventPositions[pointerIndex][0] != x ||
619 this->LastEventPositions[pointerIndex][1] != y)
620 {
621 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
622 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
623 this->EventPositions[pointerIndex][0] = x;
624 this->EventPositions[pointerIndex][1] = y;
625 this->Modified();
626 }
627 }
628 virtual void SetEventPosition(int pos[2], int pointerIndex)
629 {
630 this->SetEventPosition(pos[0], pos[1], pointerIndex);
631 }
632 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
633 {
634 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
635 }
636 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
637 {
638 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
639 }
640
642
649 vtkSetMacro(AltKey, int);
650 vtkGetMacro(AltKey, int);
652
654
659 vtkSetMacro(ControlKey, int);
660 vtkGetMacro(ControlKey, int);
662
664
667 vtkSetMacro(ShiftKey, int);
668 vtkGetMacro(ShiftKey, int);
670
672
695 vtkSetMacro(KeyCode, char);
696 vtkGetMacro(KeyCode, char);
698
700
704 vtkSetMacro(RepeatCount, int);
705 vtkGetMacro(RepeatCount, int);
707
709
729 vtkSetStringMacro(KeySym);
730 vtkGetStringMacro(KeySym);
732
734
737 vtkSetMacro(PointerIndex, int);
738 vtkGetMacro(PointerIndex, int);
740
742
745 void SetRotation(double rotation);
746 vtkGetMacro(Rotation, double);
747 vtkGetMacro(LastRotation, double);
749
751
754 void SetScale(double scale);
755 vtkGetMacro(Scale, double);
756 vtkGetMacro(LastScale, double);
758
760
763 void SetTranslation(double val[2]);
764 vtkGetVector2Macro(Translation, double);
765 vtkGetVector2Macro(LastTranslation, double);
767
769
772 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
773 const char* keysym, int pointerIndex)
774 {
775 this->SetEventPosition(x, y, pointerIndex);
776 this->ControlKey = ctrl;
777 this->ShiftKey = shift;
778 this->KeyCode = keycode;
779 this->RepeatCount = repeatcount;
780 this->PointerIndex = pointerIndex;
781 if (keysym)
782 {
783 this->SetKeySym(keysym);
784 }
785 this->Modified();
786 }
787 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
788 int repeatcount = 0, const char* keysym = nullptr)
789 {
790 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
791 }
793
795
799 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
800 const char* keysym, int pointerIndex)
801 {
802 this->SetEventInformation(
803 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
804 }
805 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
806 int repeatcount = 0, const char* keysym = nullptr)
807 {
808 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
809 }
811
813
816 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
817 const char* keysym = nullptr)
818 {
819 this->ControlKey = ctrl;
820 this->ShiftKey = shift;
821 this->KeyCode = keycode;
822 this->RepeatCount = repeatcount;
823 if (keysym)
824 {
825 this->SetKeySym(keysym);
826 }
827 this->Modified();
828 }
830
832
843 vtkSetVector2Macro(Size, int);
844 vtkGetVector2Macro(Size, int);
845 vtkSetVector2Macro(EventSize, int);
846 vtkGetVector2Macro(EventSize, int);
848
854 virtual vtkRenderer* FindPokedRenderer(int, int);
855
864
866
874 vtkSetMacro(UseTDx, bool);
875 vtkGetMacro(UseTDx, bool);
877
879
884 virtual void MouseMoveEvent();
885 virtual void RightButtonPressEvent();
887 virtual void LeftButtonPressEvent();
893 virtual void MouseWheelLeftEvent();
894 virtual void MouseWheelRightEvent();
895 virtual void ExposeEvent();
896 virtual void ConfigureEvent();
897 virtual void EnterEvent();
898 virtual void LeaveEvent();
899 virtual void KeyPressEvent();
900 virtual void KeyReleaseEvent();
901 virtual void CharEvent();
902 virtual void ExitEvent();
905 virtual void FifthButtonPressEvent();
908
910
914 virtual void StartPinchEvent();
915 virtual void PinchEvent();
916 virtual void EndPinchEvent();
917 virtual void StartRotateEvent();
918 virtual void RotateEvent();
919 virtual void EndRotateEvent();
920 virtual void StartPanEvent();
921 virtual void PanEvent();
922 virtual void EndPanEvent();
923 virtual void TapEvent();
924 virtual void LongTapEvent();
925 virtual void SwipeEvent();
927
929
935 vtkSetMacro(RecognizeGestures, bool);
936 vtkGetMacro(RecognizeGestures, bool);
938
940
945 vtkGetMacro(PointersDownCount, int);
947
949
956 void ClearContact(size_t contactID);
957 int GetPointerIndexForContact(size_t contactID);
959 bool IsPointerIndexSet(int i);
960 void ClearPointerIndex(int i);
962
982
984
993
994protected:
997
1001
1002 // Used as a helper object to pick instances of vtkProp
1005
1006 bool Done; // is the event loop done running
1007
1013
1022
1023 // Event information
1028 double Rotation;
1030 double Scale;
1032 double Translation[2];
1033 double LastTranslation[2];
1035 char* KeySym;
1036 int EventPosition[2];
1037 int LastEventPosition[2];
1038 int EventSize[2];
1039 int Size[2];
1044
1045 int EventPositions[VTKI_MAX_POINTERS][2];
1046 int LastEventPositions[VTKI_MAX_POINTERS][2];
1048
1049 size_t PointerIndexLookup[VTKI_MAX_POINTERS];
1050
1051 // control the fly to
1053 double Dolly;
1054
1064 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
1065 {
1066 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
1067 }
1068 void ReleaseFocus() { this->Superclass::InternalReleaseFocus(); }
1069
1074
1075 // Timer related members
1076 friend struct vtkTimerStruct;
1077 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
1078 unsigned long TimerDuration; // in milliseconds
1080
1086 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
1087 virtual int InternalDestroyTimer(int platformTimerId);
1090
1091 // Force the interactor to handle the Start() event loop, ignoring any
1092 // overrides. (Overrides are registered by observing StartEvent on the
1093 // interactor.)
1095
1099 virtual void StartEventLoop() {}
1100
1101 bool UseTDx; // 3DConnexion device.
1102
1103 // when recognizing gestures VTK will take multitouch events
1104 // if it receives them and convert them to gestures
1107 int PointersDown[VTKI_MAX_POINTERS];
1109 int StartingEventPositions[VTKI_MAX_POINTERS][2];
1111
1112private:
1114 void operator=(const vtkRenderWindowInteractor&) = delete;
1115};
1116
1117VTK_ABI_NAMESPACE_END
1118#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:161
#define VTK_FLOAT_MAX
Definition vtkType.h:169
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)