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 #include <mitkImage.h>
00020
00021
00022 #include <mitkImageMapperGL2D.h>
00023 #include <mitkLevelWindow.h>
00024 #include <mitkLevelWindowProperty.h>
00025 #include <mitkVtkPropRenderer.h>
00026 #include <mitkVolumeDataVtkMapper3D.h>
00027 #include <mitkTransferFunctionProperty.h>
00028 #include <mitkTransferFunction.h>
00029
00030 #include <mitkNativeRenderWindowInteractor.h>
00031
00032 #include "mitkReferenceCountWatcher.h"
00033
00034 #include <fstream>
00035 int mitkImageMapper2DTest(int , char* [])
00036 {
00037
00038 mitk::Image::Pointer image;
00039 mitk::PixelType pt(typeid(int));
00040 unsigned int dim[]={100,100,20};
00041
00042 std::cout << "Creating image: ";
00043 image=mitk::Image::New();
00044 image->Initialize(pt, 3, dim);
00045 int *p = (int*)image->GetData();
00046 int size = dim[0]*dim[1]*dim[2];
00047 int i;
00048 for(i=0; i<size; ++i, ++p)
00049 *p=i;
00050 std::cout<<"[PASSED]"<<std::endl;
00051
00052 std::cout << "Creating node: ";
00053 mitk::DataNode::Pointer node = mitk::DataNode::New();
00054 node->SetData(image);
00055 std::cout<<"[PASSED]"<<std::endl;
00056
00057 std::cout << "Creating DataStorage: ";
00058 mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
00059 std::cout<<"[PASSED]"<<std::endl;
00060
00061 std::cout << "Testing reference count of tree: ";
00062 mitk::ReferenceCountWatcher::Pointer dsWatcher = new mitk::ReferenceCountWatcher(ds, "DataStorage");
00063 if(dsWatcher->GetReferenceCount() != 1)
00064 {
00065 std::cout << dsWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
00066 return EXIT_FAILURE;
00067 }
00068 std::cout<<"[PASSED]"<<std::endl;
00069
00070 std::cout << "Testing reference count of node: ";
00071 mitk::ReferenceCountWatcher::Pointer nodeWatcher = new mitk::ReferenceCountWatcher(node, "node");
00072 if(nodeWatcher->GetReferenceCount()!=1)
00073 {
00074 std::cout<<nodeWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
00075 return EXIT_FAILURE;
00076 }
00077 std::cout<<"[PASSED]"<<std::endl;
00078
00079
00080 std::cout << "Adding node via DataStorage: ";
00081 ds->Add(node);
00082 std::cout<<"[PASSED]"<<std::endl;
00083
00084 std::cout << "Adding level-window property: ";
00085 mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New();
00086 mitk::LevelWindow levelwindow;
00087 levelwindow.SetAuto( image );
00088 levWinProp->SetLevelWindow( levelwindow );
00089 node->GetPropertyList()->SetProperty( "levelwindow", levWinProp );
00090 std::cout<<"[PASSED]"<<std::endl;
00091
00092 std::cout << "Creating VtkPropRenderer: ";
00093 vtkRenderWindow *renderWindow = vtkRenderWindow::New();
00094 mitk::VtkPropRenderer::Pointer propRenderer = mitk::VtkPropRenderer::New( "the renderer", renderWindow );
00095 std::cout<<"[PASSED]"<<std::endl;
00096
00097 std::cout << "BaseRenderer::SetData(iterator): ";
00098 propRenderer->SetDataStorage(ds);
00099 std::cout<<"[PASSED]"<<std::endl;
00100
00101 std::cout << "Testing reference count of node: ";
00102 if(nodeWatcher->GetReferenceCount()!=2)
00103 {
00104 std::cout<<nodeWatcher->GetReferenceCount()<<"!=2 [FAILED]"<<std::endl;
00105 return EXIT_FAILURE;
00106 }
00107 std::cout<<"[PASSED]"<<std::endl;
00108
00109 std::cout << "Testing if an mitk::ImageMapperGL2D was created: ";
00110 if(dynamic_cast<mitk::ImageMapperGL2D*>(node->GetMapper(mitk::BaseRenderer::Standard2D))==NULL)
00111 {
00112 std::cout<<"[FAILED]"<<std::endl;
00113 return EXIT_FAILURE;
00114 }
00115 std::cout<<"[PASSED]"<<std::endl;
00116
00117 std::cout << "Testing if an mitk::VolumeDataVtkMapper3D was created: ";
00118 if(dynamic_cast<mitk::VolumeDataVtkMapper3D*>(node->GetMapper(mitk::BaseRenderer::Standard3D))==NULL)
00119 {
00120 std::cout<<"[FAILED]"<<std::endl;
00121 return EXIT_FAILURE;
00122 }
00123 std::cout<<"[PASSED]"<<std::endl;
00124
00125 std::cout << "Testing if an mitk::TransferFunctionProperty was created: ";
00126 mitk::TransferFunctionProperty::Pointer transferFctProperty;
00127 if(node->GetProperty<mitk::TransferFunctionProperty>(transferFctProperty, "TransferFunction") == false)
00128 {
00129 std::cout<<"[FAILED]"<<std::endl;
00130 return EXIT_FAILURE;
00131 }
00132 std::cout<<"[PASSED]"<<std::endl;
00133
00134 std::cout << "Testing if an mitk::TransferFunctionProperty contains an mitk::TransferFunction: ";
00135 mitk::TransferFunction::Pointer transferFct = transferFctProperty->GetValue();
00136 if(transferFct.IsNull())
00137 {
00138 std::cout<<"[FAILED]"<<std::endl;
00139 return EXIT_FAILURE;
00140 }
00141 std::cout<<"[PASSED]"<<std::endl;
00142
00143 std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
00144 mitk::ReferenceCountWatcher::Pointer transferFctPropertyWatcher = new mitk::ReferenceCountWatcher(transferFctProperty, "transferFctProperty");
00145 transferFctProperty = NULL;
00146 if(transferFctPropertyWatcher->GetReferenceCount()!=1)
00147 {
00148 std::cout<<transferFctPropertyWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
00149 return EXIT_FAILURE;
00150 }
00151 std::cout<<"[PASSED]"<<std::endl;
00152
00153 std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
00154 mitk::ReferenceCountWatcher::Pointer transferFctWatcher = new mitk::ReferenceCountWatcher(transferFct, "transferFct");
00155 transferFct = NULL;
00156 if(transferFctWatcher->GetReferenceCount()!=1)
00157 {
00158 std::cout<<transferFctWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
00159 return EXIT_FAILURE;
00160 }
00161 std::cout<<"[PASSED]"<<std::endl;
00162
00163 std::cout << "Deleting renderwindow, node and tree: ";
00164 renderWindow->Delete();
00165 node = NULL;
00166 ds = NULL;
00167 std::cout<<"[PASSED]"<<std::endl;
00168
00169 std::cout << "Testing reference count of tree: ";
00170 if(dsWatcher->GetReferenceCount() != 0)
00171 {
00172 std::cout << ds->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
00173 return EXIT_FAILURE;
00174 }
00175 std::cout<<"[PASSED]"<<std::endl;
00176
00177 std::cout << "Testing reference count of node: ";
00178 if(nodeWatcher->GetReferenceCount()!=0)
00179 {
00180 std::cout<<nodeWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
00181 return EXIT_FAILURE;
00182 }
00183 std::cout<<"[PASSED]"<<std::endl;
00184
00185 std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
00186 if(transferFctPropertyWatcher->GetReferenceCount()!=0)
00187 {
00188 std::cout<<transferFctPropertyWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
00189 return EXIT_FAILURE;
00190 }
00191 std::cout<<"[PASSED]"<<std::endl;
00192
00193 std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
00194 if(transferFctWatcher->GetReferenceCount()!=0)
00195 {
00196 std::cout<<transferFctWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
00197 return EXIT_FAILURE;
00198 }
00199 std::cout<<"[PASSED]"<<std::endl;
00200
00201 std::cout<<"[TEST DONE]"<<std::endl;
00202 return EXIT_SUCCESS;
00203 }