#include "vtkRenderWindow.h"
#include "vtkCommand.h"
-
+#include <vtkTransform.h>
namespace bbcreaVtk
{
BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,BoxWidget)
BBTK_BLACK_BOX_IMPLEMENTATION(BoxWidget,bbtk::AtomicBlackBox);
-//=====
+//=====
// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
-//=====
+//=====
class bbBoxWidgetCallback : public vtkCommand
- {
- public:
- BoxWidget *_box;
- static bbBoxWidgetCallback *New()
- {
- return new bbBoxWidgetCallback;
- }
- void SetBox( BoxWidget* box )
- {
- _box=box;
- }
-
- void Execute(vtkObject *caller, unsigned long, void*) override
- {
- vtkBoxWidget *vtkwidget = reinterpret_cast<vtkBoxWidget*>(caller);
- vtkwidget->GetPlanes( _box->planes );
- _box->bbSignalOutputModification(std::string("ImplicitFunction"));
- }
- };
-
-
+{
+public:
+ BoxWidget *_box;
+ static bbBoxWidgetCallback *New()
+ {
+ return new bbBoxWidgetCallback;
+ }
+ void SetBox( BoxWidget* box )
+ {
+ _box=box;
+ }
+
+ void Execute(vtkObject *caller, unsigned long, void*) override
+ {
+ vtkBoxWidget *vtkwidget = reinterpret_cast<vtkBoxWidget*>(caller);
+ vtkwidget->GetPlanes( _box->planes );
+ vtkwidget->GetTransform( _box->transformOut );
+// _box->bbSignalOutputModification(std::string("ImplicitFunction"));
+ // _box->bbSignalOutputModification(std::string("TransformOut"));
+ _box->bbSignalOutputModification();
+ }
+};
+
+//-----------------------------------------------------
+//-----------------------------------------------------
+//-----------------------------------------------------
+//-----------------------------------------------------
+
+
+
+void BoxWidget::SetTransform( vtkLinearTransform* transform )
+{
+ if ( bbGetInputImageInitSize()!=NULL)
+ {
+ int ext[6];
+ double spc[3];
+ bbGetInputImageInitSize()->GetExtent( ext );
+ bbGetInputImageInitSize()->GetSpacing( spc );
+ boxWidget->PlaceWidget( ext[0]*spc[0] , ext[1]*spc[0] , ext[2]*spc[1] , ext[3]*spc[1] , ext[4]*spc[2] , ext[5]*spc[2] );
+ if (transform!=NULL)
+ {
+ boxWidget->SetTransform( (vtkTransform*)transform );
+ boxWidget->Modified();
+ boxWidget->GetPlanes( planes );
+ } // if
+ } else {
+ boxWidget->PlaceWidget(0,500,0,500,0,500);
+ }// if ImageInitSize
+}
void BoxWidget::Process()
{
-
-// THE MAIN PROCESSING METHOD BODY
-// Here we simply set the input 'In' value to the output 'Out'
-// And print out the output value
-// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
-// void bbSet{Input|Output}NAME(const TYPE&)
-// const TYPE& bbGet{Input|Output}NAME() const
-// Where :
-// * NAME is the name of the input/output
-// (the one provided in the attribute 'name' of the tag 'input')
-// * TYPE is the C++ type of the input/output
-// (the one provided in the attribute 'type' of the tag 'input')
-// bbSetOutputOut( bbGetInputIn() );
-// std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
-
-
- if ( bbGetInputRenderer()!=NULL )
- {
- if (firsttime==true)
- {
- firsttime = false;
- boxWidget = vtkBoxWidget::New();
- planes = vtkPlanes::New();
- boxWidget->SetInteractor( bbGetInputRenderer()->GetRenderWindow()->GetInteractor() );
- boxWidget->SetPlaceFactor(1.25);
- if (bbGetInputImageInitSize()!=NULL)
- {
- int ext[6];
- bbGetInputImageInitSize()->GetExtent( ext );
- double spc[3];
- bbGetInputImageInitSize()->GetSpacing( spc );
- boxWidget->PlaceWidget( ext[0]*spc[0] , ext[1]*spc[0] , ext[2]*spc[1] , ext[3]*spc[1] , ext[4]*spc[2] , ext[5]*spc[2] );
- } else {
- boxWidget->PlaceWidget(0,500,0,500,0,500);
- }// if ImageInitSize
- boxWidget->GetPlanes( planes );
- } // if firsttime
-
- // boxWidget->SetProp3D(coneActor);
- bbBoxWidgetCallback *callback = bbBoxWidgetCallback::New();
- callback->SetBox( this );
- boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);
-
- if (bbGetInputActive()==true)
- {
- boxWidget->On();
- } else {
- boxWidget->Off();
- } // if Active
- bbSetOutputImplicitFunction( planes );
- } else {
- printf("EED Warnning! BoxWidget::Process vtkRenderer not set.\n");
- }// vtkRenderer != NULL
-
+
+ // THE MAIN PROCESSING METHOD BODY
+ // Here we simply set the input 'In' value to the output 'Out'
+ // And print out the output value
+ // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+ // void bbSet{Input|Output}NAME(const TYPE&)
+ // const TYPE& bbGet{Input|Output}NAME() const
+ // Where :
+ // * NAME is the name of the input/output
+ // (the one provided in the attribute 'name' of the tag 'input')
+ // * TYPE is the C++ type of the input/output
+ // (the one provided in the attribute 'type' of the tag 'input')
+ // bbSetOutputOut( bbGetInputIn() );
+ // std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+ if ( bbGetInputRenderer()!=NULL )
+ {
+ if (firsttime==true)
+ {
+ firsttime = false;
+ boxWidget = vtkBoxWidget::New();
+ planes = vtkPlanes::New();
+ transformOut= vtkTransform::New();
+ boxWidget->SetInteractor( bbGetInputRenderer()->GetRenderWindow()->GetInteractor() );
+ SetTransform( bbGetInputTransformIn() );
+ } // if firsttime
+
+ // boxWidget->SetProp3D(coneActor);
+ bbBoxWidgetCallback *callback = bbBoxWidgetCallback::New();
+ callback->SetBox( this );
+ boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);
+
+ if (bbGetInputActive()==true)
+ {
+ boxWidget->On();
+ } else {
+ boxWidget->Off();
+ } // if Active
+ bbSetOutputImplicitFunction( planes );
+ boxWidget->GetTransform(transformOut);
+ bbSetOutputTransformOut( transformOut );
+ } else {
+ printf("EED Warnning! BoxWidget::Process vtkRenderer not set.\n");
+ }// vtkRenderer != NULL
+
+ bbSetOutputBox_BoxWidget( this );
+
+ printf("EED BoxWidget::Process A\n");
+
+
}
-//=====
+//=====
// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
-//=====
+//=====
void BoxWidget::bbUserSetDefaultValues()
{
-
-// SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
-// Here we initialize the input 'In' to 0
- firsttime=true;
+ // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
+ // Here we initialize the input 'In' to 0
+ firsttime=true;
bbSetInputRenderer(NULL);
+ bbSetInputTransformIn(NULL);
bbSetInputActive( false );
+ bbSetInputInitBoxChangeImage( false );
bbSetInputImageInitSize(NULL);
+ bbSetOutputTransformOut(NULL);
}
-//=====
+
+//=====
// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
-//=====
+//=====
void BoxWidget::bbUserInitializeProcessing()
{
-
-// THE INITIALIZATION METHOD BODY :
-// Here does nothing
-// but this is where you should allocate the internal/output pointers
-// if any
-
-
+ // THE INITIALIZATION METHOD BODY :
+ // Here does nothing
+ // but this is where you should allocate the internal/output pointers
+ // if any
}
-//=====
+
+//=====
// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
-//=====
+//=====
void BoxWidget::bbUserFinalizeProcessing()
{
-
-// THE FINALIZATION METHOD BODY :
-// Here does nothing
-// but this is where you should desallocate the internal/output pointers
-// if any
-
-}
+
+ // THE FINALIZATION METHOD BODY :
+ // Here does nothing
+ // but this is where you should desallocate the internal/output pointers
+ // if any
}
-// EO namespace bbcreaVtk
+
+} // EO namespace bbcreaVtk