#include <vtkCamera.h>
#include <vtkRenderer.h>
#include <vtkImageData.h>
-
+#include <creawxVTKRenderWindowInteractor.h>
#include <creaMessageManager.h>
#include <stdio.h>
#include <time.h>
using namespace crea;
-
+// Memory tracking allocation
namespace creaImageIO
{
{}
void* Entry();
- // void SetImagesToPlay(std::vector<vtkImageData*> im);
- // void ShowImage(vtkImageData* v);
- // void StartIterator();
void OnExit();
private:
- //std::vector<vtkImageData*> mImagesToPlay;
- //vtkImageViewer2* mViewer;
- /// Associated wxvtk interactor
- //crea::creawxVTKRenderWindowInteractor *mInteractor;
- //std::vector<vtkImageData*>::iterator i;
+
WxViewer* mWxViewer;
-
- // int mx1,mx2,my1,my2,mz1,mz2;
- // double mspx,mspy,mspz;
};
//=====================================================================
size)
{
wxMutexLocker lock(mMutex);
- GimmickDebugMessage(1,"WxViewer::WxViewer"
+ GimmickDebugMessage(6,"WxViewer::WxViewer"
<<std::endl);
mNeedRefresh = false;
wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
- // previewer
-
+ // previewer
mInteractor = new crea::creawxVTKRenderWindowInteractor(this,-1);
mInteractor->UseCaptureMouseOn();
WxViewer::~WxViewer()
{
wxMutexLocker lock(mMutex);
- GimmickDebugMessage(1,"WxViewer::~WxViewer"
+ GimmickDebugMessage(6,"WxViewer::~WxViewer"
<<std::endl);
// TO DO : desallocate cleanly
// delete mPlayer;
//=====================================================================
//================================================================
- void WxViewer::SetImageVector(std::vector<ImagePointerHolder*>& pointers)
+ void WxViewer::SetImageVector(std::vector<boost::shared_ptr<ImagePointerHolder> >& pointers)
{
wxMutexLocker lock(mMutex);
- GimmickMessage(1,"WxViewer::SetImageVector"<<std::endl);
+ GimmickDebugMessage(6,"WxViewer::SetImageVector"<<std::endl);
imagePointers=pointers;
}
wxMutexLocker lock(mMutex);
- GimmickMessage(10,"WxViewer::ShowNextImage() "
+ GimmickDebugMessage(10,"WxViewer::ShowNextImage() "
<<mCurrent+1<<"/"
<<imagePointers.size()<<std::endl);
{
if (mCurrent<imagePointers.size())
{
- ImagePointerHolder* iph=imagePointers[mCurrent];
+ boost::shared_ptr<ImagePointerHolder> iph = imagePointers[mCurrent];
+ //ImagePointerHolder* iph= imagePointers[mCurrent];
vtkImageData* currIm=iph->Get();
ShowImage(currIm);
if ( currIm != mLastImageShown )
else
{
mCurrent = 0;
- ImagePointerHolder* iph=imagePointers[mCurrent];
+ //ImagePointerHolder* iph=imagePointers[mCurrent];
+ boost::shared_ptr<ImagePointerHolder> iph = imagePointers[mCurrent];
vtkImageData* currIm=iph->Get();
ShowImage(currIm);
if ( currIm != mLastImageShown )
//=====================================================================
void WxViewer::ShowImage(vtkImageData* im)
{
-
- GimmickDebugMessage(5,"WxViewer::ShowImage"
+ GimmickDebugMessage(6,"WxViewer::ShowImage"
<<std::endl);
if (im==0) return;
mViewer->SetInput(im);
-
+
mViewer->SetSlice( 0 );
-
+
int x1,x2,y1,y2,z1,z2;
double spx,spy,spz;
im->Update();
-
+
+//std::cout << "in WxViewer::ShowImage PrintSelf() =";
+//im->PrintSelf(std::cout, vtkIndent(2));
+
im->GetSpacing(spx,spy,spz);
- im->GetExtent (x1,x2,y1,y2,z1,z2);
-
+ //im->GetExtent (x1,x2,y1,y2,z1,z2); // JPR
+ im->GetWholeExtent (x1,x2,y1,y2,z1,z2);
+/*
+std::cout << "in WxViewer::ShowImage GetWholeExtent ext =";
+ std::cout << " [x1]=" << x1;
+ std::cout << " [x2]=" << x2;
+ std::cout << " [y1]=" << y1;
+ std::cout << " [y2]=" << y2;
+ std::cout << " [z1]=" << z1;
+ std::cout << " [z2]=" << z2;
+std::cout << std::endl;
+*/
if ((x1!=mx1) ||
(x2!=mx2) ||
(y1!=my1) ||
mspx = spx;
mspy = spy;
mspz = spz;
-
+
double *range = im->GetScalarRange();
- mViewer->SetColorWindow(range[1] - range[0]);
- mViewer->SetColorLevel(0.5 * (range[1] + range[0]));
+ mViewer->SetColorWindow(range[1] - range[0]);
+ mViewer->SetColorLevel(0.5 * (range[1] + range[0]));
- mViewer->GetRenderer()->ResetCamera();
+ mViewer->GetRenderer()->ResetCamera();
double bounds[6];
+ mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds);
- mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds);
-
-
- mViewer->GetRenderer()->ResetCameraClippingRange(bounds);
-
-
- }
-
+ mViewer->GetRenderer()->ResetCameraClippingRange(bounds);
+ mViewer->GetRenderer()->SetBackground(0.1,0.1,0.2);
+ }
}
//================================================================
- //================================================================
+ //================================================================
bool WxViewer::RefreshIfNecessary()
{
if (mNeedRefresh)
{
- GimmickMessage(1,"WxViewer : Refreshing"<<std::endl);
+ GimmickDebugMessage(10,"WxViewer : Refreshing"<<std::endl);
mInteractor->Render();
mNeedRefresh = false;
void WxViewer::StopPlayer()
{
wxMutexLocker lock(mMutex);
- if (mPlayer==0) return;
+ if (mPlayer==0 ) return;
mPlayer->Delete();
mPlayer=0;
}
void* WxViewerPlayer::Entry()
{
- GimmickMessage(1,"WxViewerPlayer::Entry()"<<std::endl);
+ GimmickDebugMessage(6,"WxViewerPlayer::Entry()"<<std::endl);
while(!TestDestroy())
{
::wxWakeUpIdle();
clock_t endwait;
endwait = clock () + 0.2 * CLOCKS_PER_SEC ;
- while (clock() < endwait) {}
+ while (clock() < endwait ) {}
}
return 0;
//=====================================================================
void WxViewerPlayer::OnExit()
{
- GimmickMessage(1,"WxViewerPlayer::OnExit() "<<std::endl);
+ GimmickDebugMessage(6,"WxViewerPlayer::OnExit() "<<std::endl);
}