Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _CommonFunctionality__h_
00020 #define _CommonFunctionality__h_
00021
00022 #include "mitkConfig.h"
00023 #include "QmitkExtExports.h"
00024 #include <mitkCommon.h>
00025
00026
00027 #include <string>
00028 #include <vector>
00029
00030 #include <vtkRenderWindow.h>
00031
00032
00033 #include <itkMinimumMaximumImageCalculator.h>
00034
00035
00036 #include <mitkProperties.h>
00037 #include <mitkLevelWindowProperty.h>
00038 #include <mitkStringProperty.h>
00039 #include <mitkDataNode.h>
00040 #include <mitkDataNodeFactory.h>
00041 #include <mitkImageCast.h>
00042 #include <mitkSurface.h>
00043 #include "itkImage.h"
00044 #include <mitkFileWriterWithInformation.h>
00045
00046 #include <qstring.h>
00047 #include <qfiledialog.h>
00048
00049 #include <itksys/SystemTools.hxx>
00050
00051 #include "mitkLevelWindow.h"
00052 #include "vtkPolyData.h"
00053
00054 struct mitkIpPicDescriptor;
00055
00056 namespace mitk
00057 {
00058 class Surface;
00059 class Image;
00060 class VesselTreeData;
00061 }
00062
00067 namespace CommonFunctionality
00068 {
00069
00070 typedef std::vector<mitk::DataNode*> DataNodeVector;
00073 template < typename TImageType >
00074 static void MinMax(typename TImageType::Pointer image, float &min, float &max)
00075 {
00076 typedef itk::MinimumMaximumImageCalculator<TImageType> MinMaxCalcType;
00077 typename MinMaxCalcType::Pointer minmax = MinMaxCalcType::New();
00078 minmax->SetImage( image );
00079 minmax->ComputeMinimum();
00080 minmax->ComputeMaximum();
00081
00082 min = (float) minmax->GetMinimum();
00083 max = (float) minmax->GetMaximum();
00084
00085
00086 }
00087
00088 template < typename TImageType >
00089 static void AutoLevelWindow( mitk::DataNode::Pointer node )
00090 {
00091 mitk::Image::Pointer image = dynamic_cast<mitk::Image*> (node->GetData() );
00092 if ( image.IsNotNull() )
00093 {
00094 typename TImageType::Pointer itkImage= TImageType::New();
00095 mitk::CastToItkImage( image, itkImage);
00096 float extrema[2];
00097 extrema[0] = 0;
00098 extrema[1] = 4096;
00099 MinMax<TImageType>(itkImage,extrema[0],extrema[1]);
00100
00101 mitk::LevelWindowProperty::Pointer levWinProp = dynamic_cast<mitk::LevelWindowProperty*>(node->GetPropertyList()->GetProperty("levelwindow"));
00102 if( levWinProp.IsNull() )
00103 {
00104 levWinProp = mitk::LevelWindowProperty::New();
00105 node->GetPropertyList()->SetProperty("levelwindow", levWinProp);
00106 }
00107
00108 double window = (extrema[1] - extrema[0])/10.0;
00109 double level = window/2;
00110
00111 mitk::LevelWindow levWin = levWinProp->GetLevelWindow();
00112 levWin.SetRangeMinMax(extrema[0], extrema[1]);
00113 levWin.SetLevelWindow( level, window );
00114 levWinProp->SetLevelWindow(levWin);
00115
00116 }
00117 }
00118
00119 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpen( const QString& fileName);
00120 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpen( const char *fileName );
00121 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpenSpecific( const QString& fileExtensions);
00122 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpenSpecific( const char *fileExtensions );
00123 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpenImageSequence(const QString& fileName);
00124 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpenImageSequence(const char* fileName);
00125 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpenImageSequence();
00126 QmitkExt_EXPORT mitk::DataNode::Pointer FileOpen();
00127 QmitkExt_EXPORT mitk::DataNode::Pointer OpenVolumeOrSliceStack();
00128
00129 QmitkExt_EXPORT std::string SaveImage(mitk::Image* image, const char* aFileName = NULL, bool askForDifferentFilename = false);
00130
00131 QmitkExt_EXPORT std::string SaveSurface(mitk::Surface* surface, const char* fileName = NULL);
00132
00143 QmitkExt_EXPORT std::string SaveScreenshot( vtkRenderWindow* renderWindow , const char* filename = NULL );
00144
00145 QmitkExt_EXPORT void SaveToFileWriter( mitk::FileWriterWithInformation::Pointer fileWriter, mitk::BaseData::Pointer data, const char* aFileName, const char* propFileName);
00146
00147
00148
00149 QmitkExt_EXPORT void SaveBaseData( mitk::BaseData* data, const char* name = NULL );
00150
00151 };
00152 #endif // _CommonFunctionality__h_