Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
5.6 KiB

2 years ago
//---------------------------------------------------------------------------
#ifndef vtkBorlandRenderWindowH
#define vtkBorlandRenderWindowH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include "vtkCommand.h"
#include "vtkRenderer.h";
#include "vtkWin32OpenGLRenderWindow.h";
#include "vtkWin32RenderWindowInteractor.h";
typedef bool __fastcall (__closure *TvtkBorlandCloseEvent)(TObject *Sender);
// Callback for abort check
class vtkAbortCallback : public vtkCommand
{
public:
static vtkAbortCallback *New()
{ return new vtkAbortCallback; }
virtual void Execute(vtkObject *caller, unsigned long, void*)
{
vtkWin32OpenGLRenderWindow* ptrWin = reinterpret_cast<vtkWin32OpenGLRenderWindow*>(caller);
if (ptrWin)
{
if(ptrWin->GetEventPending())
{
ptrWin->SetAbortRender( 1 );
// Beep();
}
}
}
vtkAbortCallback(){};
};
//---------------------------------------------------------------------------
enum vtkBorlandInteractorMode { IM_JoystickCamera,IM_JoystickActor,
IM_TrackballCamera, IM_TrackballActor,
IM_Flight, IM_Image,IM_User };
//---------------------------------------------------------------------------
class PACKAGE TvtkBorlandRenderWindow : public TCustomControl
{
typedef TCustomControl inherited;
private:
protected:
//
// Events and control related stuff
//
DYNAMIC void __fastcall MouseMove(TShiftState shift, int x, int y );
DYNAMIC void __fastcall MouseDown(TMouseButton button, TShiftState shift, int x, int y );
DYNAMIC void __fastcall MouseUp(TMouseButton button, TShiftState shift, int x, int y );
DYNAMIC bool __fastcall DoMouseWheelDown(TShiftState Shift, const TPoint &MousePos);
DYNAMIC bool __fastcall DoMouseWheelUp(TShiftState Shift, const TPoint &MousePos);
//
// Messages : We want to directly intercept these
//
void __fastcall WMEraseBkgnd(TWMEraseBkgnd &Message);
void __fastcall WMGetDlgCode(TMessage &Message);
void __fastcall WMKeyDown(TWMKey &Message);
void __fastcall WMKeyUp(TWMKey &Message);
void __fastcall WMChar(TWMKey &Message);
void __fastcall WMTimer(TWMTimer &Message);
// Here's the Dispatch(void &Message) message map for the above functions
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd)
MESSAGE_HANDLER(WM_GETDLGCODE, TMessage, WMGetDlgCode)
MESSAGE_HANDLER(WM_KEYDOWN, TWMKeyDown, WMKeyDown)
MESSAGE_HANDLER(WM_KEYUP, TWMKeyUp, WMKeyUp)
MESSAGE_HANDLER(WM_CHAR, TWMChar, WMChar)
MESSAGE_HANDLER(WM_TIMER, TWMTimer, WMTimer)
END_MESSAGE_MAP(inherited)
//
DYNAMIC void __fastcall Resize(void);
//
// This does all the work
//
virtual void __fastcall Paint(void);
//
// Our Data Members
//
vtkWin32OpenGLRenderWindow *FRenderWindow;
vtkRenderer *FRenderer;
vtkWin32RenderWindowInteractor *FInteractor;
//
TvtkBorlandCloseEvent FOnVtkClose;
bool FUsevtkInteractor;
vtkBorlandInteractorMode FInteractorMode;
vtkAbortCallback *FAbortCallback;
//
public:
//
// Constructor and Destructor
//
__fastcall TvtkBorlandRenderWindow(TComponent* Owner);
virtual __fastcall ~TvtkBorlandRenderWindow(void);
//
// Make user friendly by handling a single rendererer and
// assorted bits for the user
//
virtual vtkWin32OpenGLRenderWindow * __fastcall GetRenderWindow(void);
virtual vtkRenderer * __fastcall GetRenderer(void);
virtual vtkWin32RenderWindowInteractor * __fastcall GetInteractor(void);
virtual void __fastcall SetInteractorMode(const vtkBorlandInteractorMode& im);
__published:
// Some
__property bool UsevtkInteractor = {read=FUsevtkInteractor, write=FUsevtkInteractor, default=true, stored=true};
__property vtkBorlandInteractorMode InteractorMode = {read=FInteractorMode, write=FInteractorMode, default=IM_TrackballCamera, stored=true};
//
// Cosmetic Properties inherited from TCustomControl
//
__property Align;
__property Anchors;
__property Color;
__property Constraints;
__property Enabled;
__property ParentColor;
__property PopupMenu;
__property TabOrder;
__property TabStop;
__property Visible;
//
// Cosmetic Properties inherited from TWinControl
//
__property BevelEdges;
__property BevelInner;
__property BevelOuter;
__property BevelKind;
__property BevelWidth;
__property BorderWidth;
//
// Useful Event notifications
//
__property OnCanResize;
__property OnClick;
__property OnConstrainedResize;
__property OnDblClick;
__property OnDragDrop;
__property OnDragOver;
__property OnEnter;
__property OnExit;
__property OnResize;
__property OnStartDrag;
__property TvtkBorlandCloseEvent OnVtkClose = {read=FOnVtkClose, write=FOnVtkClose};
//
// Main events for user interaction
//
__property OnKeyUp;
__property OnKeyDown;
__property OnKeyPress;
__property OnMouseDown;
__property OnMouseMove;
__property OnMouseUp;
__property OnMouseWheelDown;
__property OnMouseWheelUp;
};
//---------------------------------------------------------------------------
#endif
void CheckAbortFunc(void *);