]> Creatis software - bbtk.git/blobdiff - packages/kw/src/bbkwTransferFunctionEditor.cxx
*** empty log message ***
[bbtk.git] / packages / kw / src / bbkwTransferFunctionEditor.cxx
diff --git a/packages/kw/src/bbkwTransferFunctionEditor.cxx b/packages/kw/src/bbkwTransferFunctionEditor.cxx
new file mode 100644 (file)
index 0000000..b57c8b9
--- /dev/null
@@ -0,0 +1,181 @@
+/*=========================================================================                                                                               
+  Program:   bbtk
+  Module:    $RCSfile: bbkwTransferFunctionEditor.cxx,v $
+  Language:  C++
+  Date:      $Date: 2008/12/16 12:48:07 $
+  Version:   $Revision: 1.1 $
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+*  This software is governed by the CeCILL-B license under French law and 
+*  abiding by the rules of distribution of free software. You can  use, 
+*  modify and/ or redistribute the software under the terms of the CeCILL-B 
+*  license as circulated by CEA, CNRS and INRIA at the following URL 
+*  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+*  or in the file LICENSE.txt.
+*
+*  As a counterpart to the access to the source code and  rights to copy,
+*  modify and redistribute granted by the license, users are provided only
+*  with a limited warranty  and the software's author,  the holder of the
+*  economic rights,  and the successive licensors  have only  limited
+*  liability. 
+*
+*  The fact that you are presently reading this means that you have had
+*  knowledge of the CeCILL-B license and that you accept its terms.
+* ------------------------------------------------------------------------ */                                                                         
+
+/**
+ * \file 
+ * \brief Short description in one line
+ *
+ * Long 
+ * description
+ *  
+ */
+
+#ifdef USE_KWWIDGETS
+
+#include "bbkwTransferFunctionEditor.h"
+#include "bbkwPackage.h"
+//#include "bbtkUtilities.h"
+
+#include "vtkKWPiecewiseFunctionEditor.h"
+#include "vtkPointData.h"
+
+//#include "vtkKWScale.h"
+#include "vtkObjectFactory.h"
+#include "vtkCommand.h"
+
+namespace bbkw
+{
+
+  //--------------------------------------------------------------------------
+  //-------------------------------------------------------------------------
+  // KwBlackBox implementation
+  //--------------------------------------------------------------------------
+  //--------------------------------------------------------------------------
+
+   //--------------------------------------------------------------------------
+  BBTK_BLACK_BOX_IMPLEMENTATION(TransferFunctionEditor,bbtk::KWBlackBox);
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(kw,TransferFunctionEditor);
+  
+  //--------------------------------------------------------------------------
+  void TransferFunctionEditor::bbUserConstructor() 
+  { 
+    bbSetInputIn(0);
+    bbSetOutputOut(0);
+    bbSetOutputWidget(0);
+  }
+  
+ //--------------------------------------------------------------------------
+  void TransferFunctionEditor::Process() 
+  {
+    //    bbSetOutputOut( bbGetInputIn() );
+    vtkPiecewiseFunction* f = bbGetOutputOut();
+    if (!f) 
+      { 
+       f = vtkPiecewiseFunction::New();
+       bbSetOutputOut(f);
+      }
+  }
+  //--------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+  void TransferFunctionEditor::CreateWidget(vtkKWFrame* parent) 
+  {
+    vtkPiecewiseFunction* f = bbGetOutputOut();
+    if (!f) 
+      { 
+       f = vtkPiecewiseFunction::New();
+       bbSetOutputOut(f);
+      }
+
+    vtkKWPiecewiseFunctionEditor *w = vtkKWPiecewiseFunctionEditor::New();
+    bbSetOutputWidget(w);
+    //    w->SetWindowLevelModeChangedCommand((vtkObject*)this,(const char*)"OnChange");
+                                       //AddObserver(vtkKWPiecewiseFunctionEditor::FunctionChangedCommand,this);
+    w->SetParent((vtkKWWidget*)parent);
+    w->Create();
+
+    w->SetBorderWidth(2);
+    w->SetReliefToGroove();
+    w->SetPadX(2);
+    w->SetPadY(2);
+    //    w->ExpandCanvasWidthOff();
+    //    w->ExpandCanvasHeightOn();
+  //    w->SetCanvasWidth(450);
+    w->SetCanvasHeight( parent->GetHeight()  );
+    w->SetLabelText("");//Transfer Function Editor");
+    w->SetBalloonHelpString("Edit the transfer function");
+    w->LockEndPointsParameterOn();
+
+    w->PointIndexVisibilityOff();
+    w->SelectedPointIndexVisibilityOff();
+    w->MidPointVisibilityOff();
+    w->PointGuidelineVisibilityOff();
+    w->MidPointGuidelineVisibilityOff();
+    w->MidPointGuidelineValueVisibilityOff();
+    w->SetMidPointGuidelineValueFormat("%-#6.0f");
+    w->MidPointEntryVisibilityOff();
+    w->SharpnessEntryVisibilityOff();
+    w->SetLabelPositionToTop();
+
+    if ( bbGetInputIn()!=NULL ) 
+      {
+       vtkKWHistogram *h = vtkKWHistogram::New();
+       h->BuildHistogram( bbGetInputIn()->GetPointData()->GetScalars(), 0);
+       double *range = h->GetRange();
+       f->AddPoint(range[0], 0.0 );
+       f->AddPoint(range[1], 1.0 );
+       w->SetHistogram(h);
+       h->Delete();
+      }
+    else 
+      {
+       f->AddPoint(0.0, 0.0);
+       f->AddPoint(1.0, 1.0);  
+      }
+
+    w->SetPiecewiseFunction(f);
+
+    w->ParameterTicksVisibilityOn();
+    w->ComputeValueTicksFromHistogramOn();
+    w->SetParameterTicksFormat( w->GetMidPointGuidelineValueFormat());
+
+    w->Delete();
+    f->Delete();
+  
+  }
+  //--------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+      void TransferFunctionEditor::OnChange()
+
+      {
+       std::cout << "TransferFunctionEditor::OnChange()" << std::endl;
+      }
+  
+  void TransferFunctionEditor::Execute(vtkObject* caller, unsigned long, void*)
+  {
+    std::cout << "$$$$$$$$$$$$ TransferFunctionEditor CB $$$$$$$$$$$$"<<std::endl;
+    /*
+    vtkKWScale* scale = (vtkKWScale*)caller;
+    bbSetOutputOut( scale->GetValue() );
+    bbSetInputIn( scale->GetValue() );
+    // and signal that the output has changed
+    bbSignalOutputModification("Out");    
+    */
+  } 
+  //--------------------------------------------------------------------------
+  
+
+
+} //namespace bbkw
+
+#endif // USE_KWWIDGETS
+
+