瀏覽代碼

Remove dependencies to ctkDICOMImage in DICOM/Widgets and ctkDICOMObjectViewer

nherlambang 14 年之前
父節點
當前提交
94409292bb

+ 1 - 5
Applications/ctkDICOMObjectViewer/ctkDICOMObjectViewerMain.cpp

@@ -25,9 +25,6 @@
 // CTK Widgets
 #include "ctkDICOMDatasetView.h"
 
-// CTK DICOM Core
-#include "ctkDICOMImage.h"
-
 // DCMTK includes
 #include <dcmimage.h>
 
@@ -63,10 +60,9 @@ int main(int argv, char** argc)
     }
 
   DicomImage dcmImage( s.toStdString().c_str() );
-  ctkDICOMImage ctkImage( & dcmImage );
 
   ctkDICOMDatasetView imageView;
-  imageView.addImage( ctkImage );
+  imageView.addImage( dcmImage );
   imageView.show();
   imageView.raise();
 

+ 1 - 5
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMDatasetViewTest1.cpp

@@ -25,7 +25,6 @@
 #include <QTimer>
 
 // ctkDICOMCore includes
-#include "ctkDICOMImage.h"
 #include "ctkDICOMDatasetView.h"
 
 // DCMTK includes
@@ -48,14 +47,11 @@ int ctkDICOMDatasetViewTest1( int argc, char * argv [] )
     }
   
   DicomImage    img(argv[1]);
-  ctkDICOMImage dicomImage(&img);
-  ctkDICOMImage dicomImage2(0);
   QImage image;
   QImage image2(200, 200, QImage::Format_RGB32);
   
   ctkDICOMDatasetView datasetView;
-  datasetView.addImage(dicomImage);
-  datasetView.addImage(dicomImage2);
+  datasetView.addImage(img);
   datasetView.addImage(image);
   datasetView.addImage(image2);
   datasetView.update( false, false );

+ 0 - 1
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -17,7 +17,6 @@
 #include "ctkDICOMIndexer.h"
 
 // ctkDICOMWidgets includes
-#include "ctkDICOMImage.h"
 #include "ctkDICOMModel.h"
 #include "ctkDICOMAppWidget.h"
 #include "ctkDICOMQueryResultsTabWidget.h"

+ 32 - 15
Libs/DICOM/Widgets/ctkDICOMDatasetView.cpp

@@ -26,7 +26,6 @@
 // CTK includes
 #include "ctkLogger.h"
 #include "ctkQImageView.h"
-#include "ctkDICOMImage.h"
 #include "ctkDICOMModel.h"
 #include "ctkDICOMDatasetView.h"
 
@@ -111,13 +110,12 @@ void ctkDICOMDatasetViewPrivate::setImage(const QModelIndex &imageIndex){
         thumbnailPath.append("/").append(model->data(seriesIndex ,ctkDICOMModel::UIDRole).toString());
         thumbnailPath.append("/").append(model->data(imageIndex ,ctkDICOMModel::UIDRole).toString());
 
-        if (QFile(thumbnailPath).exists())
-        {
-          DicomImage dcmImage( thumbnailPath.toStdString().c_str() );
-          ctkDICOMImage ctkImage( & dcmImage );
-          q->clearImages();
-          q->addImage( ctkImage );
-          this->currentImageIndex = imageIndex;
+        if (QFile(thumbnailPath).exists()){
+            DicomImage dcmImage( thumbnailPath.toStdString().c_str() );
+
+            q->clearImages();
+            q->addImage( dcmImage );
+            this->currentImageIndex = imageIndex;
         }else{
           q->clearImages();
         }
@@ -238,18 +236,37 @@ QModelIndex ctkDICOMDatasetView::currentImageIndex(){
 }
 
 // -------------------------------------------------------------------------
-void ctkDICOMDatasetView::addImage( const ctkDICOMImage & image )
+void ctkDICOMDatasetView::addImage( const QImage & image )
 {
-  for( unsigned int i=0; i<image.frameCount(); ++i )
-    {
-    Superclass::addImage( image.frame( i ) );
-    }
+  Superclass::addImage( image );
 }
 
 // -------------------------------------------------------------------------
-void ctkDICOMDatasetView::addImage( const QImage & image )
+void ctkDICOMDatasetView::addImage( DicomImage & dcmImage )
 {
-  Superclass::addImage( image );
+    QImage image;
+    if ((dcmImage.getStatus() == EIS_Normal)){
+        dcmImage.setWindow(0);
+        /* get image extension */
+        const unsigned long width = dcmImage.getWidth();
+        const unsigned long height = dcmImage.getHeight();
+        QString header = QString("P5 %1 %2 255\n").arg(width).arg(height);
+        const unsigned long offset = header.length();
+        const unsigned long length = width * height + offset;
+        /* create output buffer for DicomImage class */
+        QByteArray buffer;
+        buffer.append(header);
+        buffer.resize(length);
+
+        /* copy PGM header to buffer */
+
+        if (dcmImage.getOutputData(static_cast<void *>(buffer.data() + offset), length - offset, 8, 0)){
+            if (!image.loadFromData( buffer )){
+                logger.error("QImage couldn't created");
+            }
+        }
+    }
+    this->addImage(image);
 }
 
 // -------------------------------------------------------------------------

+ 4 - 2
Libs/DICOM/Widgets/ctkDICOMDatasetView.h

@@ -29,10 +29,10 @@
 /// CTK includes
 #include "ctkQImageView.h"
 #include "ctkPimpl.h"
-#include "ctkDICOMImage.h"
 #include "ctkDICOMWidgetsExport.h"
 
 class ctkDICOMDatasetViewPrivate;
+class DicomImage;
 
 ///
 /// ctkDICOMDatasetView is the base class of image viewer widgets.
@@ -64,9 +64,11 @@ signals:
 
 public slots:
 
-  void addImage( const ctkDICOMImage & image );
   void addImage( const QImage & image );
 
+  // TEST
+  void addImage( DicomImage & dcmImage );
+
   void onModelSelected(const QModelIndex& index);
 
   virtual void update( bool zoomChanged=false, bool sizeChanged=false );