Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F234
StatusBarPatch.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
stein
Jul 1 2009, 6:17 PM
2009-07-01 18:17:08 (UTC+2)
Size
10 KB
Referenced Files
None
Subscribers
None
StatusBarPatch.patch
View Options
Index: Core/Code/Controllers/mitkSliceNavigationController.cpp
===================================================================
--- Core/Code/Controllers/mitkSliceNavigationController.cpp (revision 17933)
+++ Core/Code/Controllers/mitkSliceNavigationController.cpp (working copy)
@@ -37,7 +37,10 @@
#include "mitkPlaneOperation.h"
#include "mitkUndoController.h"
#include "mitkOperationEvent.h"
+#include "mitkNodePredicateDataType.h"
+#include <ipPicTypeMultiplex.h>
+
#include <itkCommand.h>
namespace mitk {
@@ -614,8 +617,135 @@
m_UndoController->SetOperationEvent(operationEvent);
}
- this->ExecuteOperation( doOp );
+ this->ExecuteOperation( doOp );
+ if(baseRenderer == m_Renderer)
+ {
+ {
+ mitk::Image* image = NULL;
+ TNodePredicateDataType<mitk::Image>::Pointer isImageData = TNodePredicateDataType<mitk::Image>::New();
+
+ mitk::DataStorage::SetOfObjects::ConstPointer nodes = baseRenderer->GetDataStorage()->GetSubset(isImageData).GetPointer();
+ mitk::Point3D worldposition = posEvent->GetWorldPosition();
+ int maxlayer = 0;
+ int grvalue = 0;
+ mitk::Image::Pointer image3D;
+ for (unsigned int x = 0; x < nodes->size(); x++)
+ {
+ if(nodes->at(x)->GetData()->GetGeometry()->IsInside(worldposition))
+ {
+ int layer = 0;
+ if(!(nodes->at(x)->GetIntProperty("layer", layer))) continue;
+ if(layer > maxlayer)
+ {
+ maxlayer = layer;
+ image3D = dynamic_cast<mitk::Image*>(nodes->at(x)->GetData());
+ }
+ }
+ }
+ mitk::Point3D p;
+ image3D->GetGeometry()->WorldToIndex(posEvent->GetWorldPosition(), p);
+
+ ipPicDescriptor* pic = image3D->GetPic();
+ if ( pic )
+ {
+ mitk::FillVector3D(p, (int)(p[0]+0.5), (int)(p[1]+0.5), (int)(p[2]+0.5));
+ if ( image3D->GetGeometry()->IsIndexInside(p) )
+ {
+ itk::Point<int, 3> pi;
+ mitk::itk2vtk(p, pi);
+ if(pic->bpe!=24)
+ {
+ mitkIpPicTypeMultiplex2(buildstring, pic, pi, s);
+ }
+ else
+ buildstring(pic, pi, s, (unsigned char) 1);
+ }
+ }
+
+
+ image = GetImageFromDataTree();
+ QString s;
+ mitk::Point3D p = pointoperation->GetPoint();
+ mitk::ScalarType time = pointoperation->GetTimeInMS();
+
+ s.sprintf("<%.2f,%.2f,%.2f> mm", p[0], p[1], p[2]);
+ if(time>mitk::ScalarTypeNumericTraits::min())
+ {
+ QString tmp;
+ tmp.sprintf("; %.2f ms", time);
+ s+=tmp;
}
+
+
+ if (image==NULL)
+ {
+ m_TimeSelector->SetInput(NULL);
+ }
+ else if ( image->IsInitialized() )
+ {
+ m_TimeSelector->SetInput(image);
+ mitk::Image* image3D = m_TimeSelector->GetOutput();
+
+ const mitk::TimeSlicedGeometry* inputTimeGeometry = image->GetUpdatedTimeSlicedGeometry();
+
+ int timestep=0;
+ if(time>mitk::ScalarTypeNumericTraits::min())
+ timestep = inputTimeGeometry->MSToTimeStep( time );
+ if ( ( inputTimeGeometry->IsValidTime( timestep ) == false ) || ( image->IsVolumeSet(timestep) == false ) )
+ {
+ if(image3D!=NULL)
+ {
+
+ image3D->ReleaseData();
+ }
+ //m_TimeSelector->SetInput(NULL);
+ return;
+ }
+
+ m_TimeSelector->SetTimeNr(timestep);
+ m_TimeSelector->UpdateLargestPossibleRegion();
+
+ image3D->GetGeometry()->WorldToIndex(pointoperation->GetPoint(), p);
+
+ QString pixel;
+ if(time>mitk::ScalarTypeNumericTraits::min())
+ pixel.sprintf("; <%.2f,%.2f,%.2f,%u> pixel ", p[0], p[1], p[2],timestep);
+ else
+ pixel.sprintf("; <%.2f,%.2f,%.2f> pixel ", p[0], p[1], p[2]);
+ s+=pixel;
+
+ ipPicDescriptor* pic = image3D->GetPic();
+ if ( pic )
+ {
+
+ mitk::FillVector3D(p, (int)(p[0]+0.5), (int)(p[1]+0.5), (int)(p[2]+0.5));
+ if ( image3D->GetGeometry()->IsIndexInside(p) )
+ {
+ itk::Point<int, 3> pi;
+ mitk::itk2vtk(p, pi);
+ if(pic->bpe!=24)
+ {
+ mitkIpPicTypeMultiplex2(__buildstring, pic, pi, s);
+ }
+ else
+ __buildstring(pic, pi, s, (unsigned char) 1);
+ }
+ }
+
+ if(image3D!=NULL)
+ {
+ image3D->ReleaseData();
+ }
+ //m_TimeSelector->SetInput(NULL);
+ }
+
+
+ mitk::StatusBar::GetInstance();
+
+
+
+ }
+ }
ok = true;
break;
}
Index: Core/Code/Controllers/mitkSliceNavigationController.h
===================================================================
--- Core/Code/Controllers/mitkSliceNavigationController.h (revision 17933)
+++ Core/Code/Controllers/mitkSliceNavigationController.h (working copy)
@@ -25,7 +25,9 @@
#include "mitkTimeSlicedGeometry.h"
#include <itkEventObject.h>
#include <itkCommand.h>
+#include <ipPicTypeMultiplex.h>
+
namespace mitk {
#define mitkTimeSlicedGeometryEventMacro( classname , super ) \
@@ -433,6 +435,32 @@
SliceNavigationController(const char * type = NULL);
virtual ~SliceNavigationController();
+ template <class T>
+ static void buildstring( ipPicDescriptor *pic, itk::Point<int, 3> p, std::string &s, T = 0)
+ {
+ QString value;
+
+ if ( (p[0]>=0 && p[1] >=0 && p[2]>=0) && (unsigned int)p[0] < pic->n[0] && (unsigned int)p[1] < pic->n[1] && (unsigned int)p[2] < pic->n[2] )
+ {
+ if(pic->bpe!=24)
+ {
+ value.setNum(((T*) pic->data)[ p[0] + p[1]*pic->n[0] + p[2]*pic->n[0]*pic->n[1] ]);
+ }
+ else
+ {
+ value.setNum(((T*) pic->data)[p[0]*3 + 0 + p[1]*pic->n[0]*3 + p[2]*pic->n[0]*pic->n[1]*3 ]);
+ value.setNum(((T*) pic->data)[p[0]*3 + 1 + p[1]*pic->n[0]*3 + p[2]*pic->n[0]*pic->n[1]*3 ]);
+ value.setNum(((T*) pic->data)[p[0]*3 + 2 + p[1]*pic->n[0]*3 + p[2]*pic->n[0]*pic->n[1]*3 ]);
+ }
+ s += "; Pixelvalue: ";
+ s+= value;
+ }
+ else
+ {
+ s+= "point out of data";
+ }
+ };
+
mitk::Geometry3D::ConstPointer m_InputWorldGeometry;
mitk::Geometry3D::Pointer m_ExtendedInputWorldGeometry;
Index: Core/Code/Controllers/mitkStatusBar.cpp
===================================================================
--- Core/Code/Controllers/mitkStatusBar.cpp (revision 17933)
+++ Core/Code/Controllers/mitkStatusBar.cpp (working copy)
@@ -69,7 +69,11 @@
if (m_Implementation != NULL)
m_Implementation->DisplayDebugText(t);
}
-
+void StatusBar::DisplayGreyValueText(const char *t)
+{
+ if (m_Implementation != NULL)
+ m_Implementation->DisplayGreyValueText(t);
+}
void StatusBar::Clear()
{
if ( m_Implementation != NULL)
Index: Core/Code/Controllers/mitkStatusBar.h
===================================================================
--- Core/Code/Controllers/mitkStatusBar.h (revision 17933)
+++ Core/Code/Controllers/mitkStatusBar.h (working copy)
@@ -62,6 +62,7 @@
void DisplayWarningText(const char *t, int ms);
void DisplayGenericOutputText(const char *t);
void DisplayDebugText(const char *t);
+ void DisplayGreyValueText(const char *t);
//##Documentation
//## @brief removes any temporary message being shown.
Index: Core/Code/Controllers/mitkStatusBarImplementation.h
===================================================================
--- Core/Code/Controllers/mitkStatusBarImplementation.h (revision 17933)
+++ Core/Code/Controllers/mitkStatusBarImplementation.h (working copy)
@@ -45,7 +45,9 @@
virtual void DisplayWarningText(const char *t, int ms) = 0;
virtual void DisplayGenericOutputText(const char *t) = 0;
virtual void DisplayDebugText(const char *t) = 0;
+ virtual void DisplayGreyValueText(const char *t) = 0;
+
//##Documentation
//## @brief removes any temporary message being shown.
virtual void Clear() = 0;
Index: CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.cpp
===================================================================
--- CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.cpp (revision 17933)
+++ CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.cpp (working copy)
@@ -27,7 +27,6 @@
#include <itkObjectFactory.h>
-
/**
* Display the text in the statusbar of the applikation
*/
@@ -47,8 +46,15 @@
// TODO bug #1357
//qApp->processEvents(); // produces crashes!
}
-
/**
+ * Show the grey value text in the statusbar
+ */
+void DisplayGreyValueText(const char* t)
+{
+ QString text(t);
+ m_GreyValueLabel->setText(text);
+}
+/**
* Clear the text in the StatusBar
*/
void QmitkStatusBar::Clear()
@@ -73,6 +79,8 @@
:StatusBarImplementation()
{
m_StatusBar = instance;
+ m_GreyValueLabel = new QLabel(m_StatusBar,"0");
+ m_StatusBar->addPermanentWidget(m_GreyValueLabel);
mitk::StatusBar::SetImplementation(this);
}
Index: CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.h
===================================================================
--- CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.h (revision 17933)
+++ CoreUI/Bundles/org.mitk.gui.qt.application/src/QmitkStatusBar.h (working copy)
@@ -22,6 +22,7 @@
#include <mitkCommon.h>
#include <qstatusbar.h>
#include "mitkQtAppDll.h"
+#include <QLabel>
//##Documentation
//## @brief QT-Toolkit/GUI dependent class that provides to send a Message to the QT's StatusBar
@@ -59,6 +60,7 @@
virtual void DisplayWarningText(const char *t, int ms) { this->DisplayText(t, ms); };
virtual void DisplayGenericOutputText(const char *t) {this->DisplayText(t);}
virtual void DisplayDebugText(const char *t) { this->DisplayText(t); };
+ virtual void DisplayGreyValueText(const char *t);
//##Documentation
//## @brief removes any temporary message being shown.
@@ -73,6 +75,7 @@
private:
//static Pointer m_Instance;
QStatusBar* m_StatusBar;
+ QLabel* m_GreyValueLabel;
};
File Metadata
Details
Attached
Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
225
Default Alt Text
StatusBarPatch.patch (10 KB)
Attached To
Mode
T2132: StatusBar should show pixel values when clicking into render window
Attached
Detach File
Event Timeline
•
stein
added a comment.
Jul 1 2009, 6:17 PM
2009-07-01 18:17:08 (UTC+2)
Comment Actions
Second progress patch
Log In to Comment