Skip to content
Snippets Groups Projects
Commit 9ecfac01 authored by Grégoire Mercier's avatar Grégoire Mercier
Browse files

View manager dealing with ImageSeriesReader

parent f3f73b4e
No related branches found
No related tags found
No related merge requests found
......@@ -40,19 +40,30 @@ ImageViewerManagerController
void
unsigned int
ImageViewerManagerController
::OpenInputImage(const char * filename)
{
unsigned int numberOfOpenedImages = 0;
try
{
std::string strFilename = filename;
m_Model->OpenImage( strFilename );
numberOfOpenedImages = m_Model->OpenImage( strFilename );
}
catch (itk::ExceptionObject & err)
catch ( ... )
{
MsgReporter::GetInstance()->SendError(err.GetDescription());
try
{
std::string strFilename = filename;
numberOfOpenedImages = m_Model->OpenImageList( strFilename );
}
catch (itk::ExceptionObject & err)
{
MsgReporter::GetInstance()->SendError(err.GetDescription());
}
}
return numberOfOpenedImages;
}
/**
......
......@@ -100,7 +100,7 @@ public:
//virtual void AddController(VisuModelPointerType modelRenderingLayer ,VisuViewPointerType visuView);
virtual void OpenInputImage(const char * filename);
virtual unsigned int OpenInputImage(const char * filename);
virtual void CloseImage(unsigned int selectedItem);
virtual void UpdateRGBChannelOrder(int redChoice , int greenChoice, int BlueChoice, unsigned int selectedItem);
virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem );
......
......@@ -68,7 +68,7 @@ public:
itkTypeMacro(ImageViewerManagerControllerInterface,Superclass);
/** Users actions */
virtual void OpenInputImage(const char * filename) =0;
virtual unsigned int OpenInputImage(const char * filename) =0;
virtual void CloseImage(unsigned int selectedItem) = 0;
virtual void UpdateRGBChannelOrder(int redChoice , int greenChoice, int BlueChoice, unsigned int selectedItem) = 0;
virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem) = 0;
......
......@@ -22,6 +22,7 @@ See OTBCopyright.txt for details.
#include "otbMacro.h"
#include "otbImageFileWriter.h"
#include "otbImageSeriesFileReader.h"
#include "otbFltkFilterWatcher.h"
......@@ -61,7 +62,7 @@ ImageViewerManagerModel
listener->Notify();
}
void
unsigned int
ImageViewerManagerModel
::OpenImage(std::string filename)
{
......@@ -132,8 +133,92 @@ ImageViewerManagerModel
this->NotifyAll();
m_HasImageOpened = false;
return 1;
}
/**
* Read a series of images, including cropping facilities throught
* the ImageSeriesFileReader
*/
unsigned int
ImageViewerManagerModel
::OpenImageList(std::string filename)
{
/** Reader*/
typedef ImageSeriesFileReader< ImageType > ImageSeriesReaderType;
ImageSeriesReaderType::Pointer reader = ImageSeriesReaderType::New();
reader->SetFileName(filename);
reader->Update();
for ( unsigned int i = 0; i < reader->GetOutput()->Size(); i++ )
{
/** Generate the layer*/
LayerGeneratorPointerType visuGenerator = LayerGeneratorType::New();
visuGenerator->SetImage(reader->GetOutput()->GetNthElement(i));
FltkFilterWatcher qlwatcher(visuGenerator->GetResampler(),0,0,200,20,"Generating QuickLook ...");
visuGenerator->GenerateLayer();
RenderingFunctionType::Pointer rendrerFunction = visuGenerator->GetRenderingFunction();
/** Rendering image*/
VisuModelPointerType rendering = VisuModelType::New();
rendering->AddLayer(visuGenerator->GetLayer());
rendering->Update();
/** View*/
VisuViewPointerType visuView = this->BuiltVisu(rendering);
/** Build the pixelDescription View*/
PixelDescriptionViewType::Pointer pixelView = PixelDescriptionViewType::New();
PixelDescriptionModelPointerType pixelModel = PixelDescriptionModelType::New();
pixelModel->SetLayers(rendering->GetLayers());
pixelView->SetModel(pixelModel);
/** Controller*/
WidgetControllerPointerType controller = this->BuiltController(rendering, visuView ,pixelModel );
/** Finish Builting the visu*/
visuView->SetController(controller);
/** Build the curve Widget */
CurvesWidgetType::Pointer curveWidget = CurvesWidgetType::New();
/** Store all the information in the structure*/
ObjectsTracked currentComponent;
currentComponent.fileName = reader->GetFileName(i);
currentComponent.pLayer = visuGenerator->GetLayer();
currentComponent.pReader = reader->GetImageFileReader(i);
currentComponent.pRendering = rendering;
currentComponent.pVisuView = visuView;
currentComponent.pWidgetController = controller;
currentComponent.pRenderFunction = rendrerFunction;
currentComponent.pPixelView = pixelView;
currentComponent.pPixelModel = pixelModel;
currentComponent.pCurveWidget = curveWidget;
assert(currentComponent.pLayer);
assert(currentComponent.pReader);
assert(currentComponent.pRendering);
assert(currentComponent.pVisuView);
assert(currentComponent.pWidgetController);
assert(currentComponent.pRenderFunction);
assert(currentComponent.pPixelView);
assert(currentComponent.pPixelModel);
assert(currentComponent.pCurveWidget);
/** Add the the struct in the list*/
m_ObjectTrackedList.push_back(currentComponent);
m_HasImageOpened = true;
this->NotifyAll();
m_HasImageOpened = false;
}
return reader->GetOutput()->Size();
}
/**
* Built a part of the visu, create a pointer and add a model to the visu
*/
......
......@@ -152,7 +152,8 @@ public:
/** Get the unique instanc1e of the model */
static Pointer GetInstance();
virtual void OpenImage(std::string strfilename);
virtual unsigned int OpenImage(std::string strfilename);
virtual unsigned int OpenImageList(std::string strfilename);
virtual void CloseImage(unsigned int selectedItem);
virtual void UpdateRGBChannelOrder(int redChoice , int greenChoice, int BlueChoice, unsigned int selectedItem);
virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem);
......
......@@ -113,39 +113,43 @@ void
ImageViewerManagerViewGUI
::Initialize(const char * cfname)
{
//Initialise the boolean pair
PairType pair(false,false); //(Not displayed , Packed View)
unsigned int numberOfOpenedImages = m_ImageViewerManagerController->OpenInputImage(cfname);
for ( unsigned int i = 0; i < numberOfOpenedImages; i++ )
{
//Initialise the boolean pair
PairType pair(false,false); //(Not displayed , Packed View)
//Put a new WidgetManager in the list
if(bSplitted->value() && !bPacked->value())
{
SplittedWidgetManagerType::Pointer widgetManager = SplittedWidgetManagerType::New();
SplittedWidgetManagerType::Pointer linkwidgetManager = SplittedWidgetManagerType::New();
//Put a new WidgetManager in the list
if(bSplitted->value() && !bPacked->value())
{
SplittedWidgetManagerType::Pointer widgetManager = SplittedWidgetManagerType::New();
SplittedWidgetManagerType::Pointer linkwidgetManager = SplittedWidgetManagerType::New();
m_WidgetManagerList->PushBack(widgetManager);
m_LinkWidgetManagerList->PushBack(linkwidgetManager);
pair.second = true;
}
else
{
PackedWidgetManagerType::Pointer widgetManager = PackedWidgetManagerType::New();
PackedWidgetManagerType::Pointer linkwidgetManager = PackedWidgetManagerType::New();
m_WidgetManagerList->PushBack(widgetManager);
m_LinkWidgetManagerList->PushBack(linkwidgetManager);
}
m_WidgetManagerList->PushBack(widgetManager);
m_LinkWidgetManagerList->PushBack(linkwidgetManager);
pair.second = true;
}
else
{
PackedWidgetManagerType::Pointer widgetManager = PackedWidgetManagerType::New();
PackedWidgetManagerType::Pointer linkwidgetManager = PackedWidgetManagerType::New();
m_WidgetManagerList->PushBack(widgetManager);
m_LinkWidgetManagerList->PushBack(linkwidgetManager);
}
//Put the status of the last added image
m_DisplayStatusList.push_back(pair);
m_LinkedDisplayStatusList.push_back(false);
//Put the status of the last added image
m_DisplayStatusList.push_back(pair);
m_LinkedDisplayStatusList.push_back(false);
// Call the Controller
m_ImageViewerManagerController->OpenInputImage(cfname);
// Call the Controller
//m_ImageViewerManagerController->OpenInputImage(cfname);
//Update the Progress Bar
this->UpdateDiaporamaProgressBar();
//Update the Progress Bar
this->UpdateDiaporamaProgressBar();
//Update the Link Setup
this->UpdateLinkSetupWindow();
//Update the Link Setup
this->UpdateLinkSetupWindow();
}
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment