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 #include <string>
00019
00020 #include <FL/Fl.h>
00021 #include <FL/Fl_Window.h>
00022 #include <FL/Fl_Box.h>
00023 #include <Fl/Fl_File_Chooser.h>
00024 #include "FLmitkRenderWindow/FLmitkRenderWindow.h"
00025
00026
00027 #include "mitkPicFileReader.h"
00028
00029 #include "mitkStringProperty.h"
00030 #include "mitkLevelWindowProperty.h"
00031 #include "mitkSliceNavigationController.h"
00032
00033 #include "mitkDataNodeFactory.h"
00034 #include "mitkSample.h"
00035
00036 int main(int argc, char **argv) {
00037 const char* fileName = NULL;
00038 if (argc == 2 && argv[1]) {
00039 fileName = argv[1];
00040 } else {
00041 fileName = fl_file_chooser("Open file","*.dcm;*.png;*.jog;*.tiff;*.dcm;*.DCM;*.seq;*.pic;*.pic.gz;*.seq.gz;*.pic;*.pic.gz;*.png;*.stl",NULL);
00042 }
00043 if (!fileName) { exit(0);}
00044
00045 UserInterface ui;
00046 mitk::SliceNavigationController::Pointer &sliceCtrl = ui.mainWid->sliceCtrl;
00047 sliceCtrl = mitk::SliceNavigationController::New("navigation");
00048 ui.mainWid->InitRenderer();
00049 ui.mainWid->GetRenderer()->SetMapperID(1);
00050 mitk::DataTree::Pointer tree = mitk::DataTree::New();
00051
00052 mitk::DataNodeFactory::Pointer factory = mitk::DataNodeFactory::New();
00053
00054 factory->SetFileName( fileName );
00055 factory->Update();
00056 if (factory->GetNumberOfOutputs() > 1) {
00057 fl_alert("WARNING: More than one image in file. Only showing first one.");
00058 }
00059 mitk::DataTreePreOrderIterator it(tree);
00060 mitk::DataNode::Pointer node = factory->GetOutput( 0 );
00061 assert(node.IsNotNull());
00062 {
00063 it.Add( node );
00064 ui.mainWid->SetNode(node);
00065 }
00066 ui.mainWid->GetRenderer()->SetData(&it);
00067 ui.mainWid->RequestUpdate();
00068
00069 mitk::BoundingBox::Pointer bb = mitk::DataTree::ComputeVisibleBoundingBox(&it);
00070
00071 mitk::Geometry3D::Pointer geometry = mitk::Geometry3D::New();
00072 geometry->Initialize();
00073 geometry->SetBounds(bb->GetBounds());
00074
00075
00076 sliceCtrl->SetInputWorldGeometry(geometry.GetPointer());
00077
00078 sliceCtrl->SetViewDirection(mitk::SliceNavigationController::Transversal);
00079
00080
00081
00082
00083
00084 sliceCtrl->ConnectGeometrySliceEvent(ui.mainWid->GetRenderer());
00085
00086 sliceCtrl->Update();
00087 sliceCtrl->GetSlice()->SetPos(3);
00088
00089 ui.sliceSlider->bounds(0,sliceCtrl->GetSlice()->GetSteps()-1);
00090 ui.sliceSlider->precision(0);
00091 ui.mainWid->RequestUpdate();
00092 ui.mainWin->show(argc, argv);
00093
00094 return Fl::run();
00095 }