X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk_creaVtk_PKG%2Fsrc%2FbbcreaVtkBoxWidget.cxx;h=304e39dff05988a1d8fe029bf302befd4767f3f2;hb=265497fce49b7e3d51970ad97d30471c3cad8b73;hp=a973e3b59c3877b390528684f26a9480943f2bc3;hpb=8b897e95b16fec9d4da9e687b750101f6f16e173;p=creaVtk.git diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkBoxWidget.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkBoxWidget.cxx index a973e3b..304e39d 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkBoxWidget.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkBoxWidget.cxx @@ -6,136 +6,159 @@ #include "vtkRenderWindow.h" #include "vtkCommand.h" - +#include 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(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(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 = " <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 = " <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