]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx
2382 creaMaracasVisu Bug New High Box HistogramView not accept all formats
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / pHistogram.cxx
index 616d2f4247865fc4d48352b3311f549b4d99571c..4909265441e96e2403ab2d58ab2aceea360a6780 100644 (file)
@@ -142,7 +142,8 @@ void pHistogram::initializePoints(int xDimension)
 {
        //setting image data of the points
        points->SetDimensions(xDimension,1,1);
-       points->SetScalarTypeToUnsignedShort();
+//EED  points->SetScalarTypeToUnsignedShort();
+       points->SetScalarTypeToShort();
        points->AllocateScalars();
        points->Update();
 }
@@ -155,11 +156,17 @@ void pHistogram::setPoints(vtkImageData* imageData)
        /*
                Pointers
        */
-       unsigned short* dataImagePointer=NULL;
-       unsigned short* dataHistogramPointer=NULL;
+       unsigned short* dataImagePointerUS      = NULL;
+       short* dataImagePointerS                = NULL;
+       double* dataImagePointerD               = NULL;
 
-       dataImagePointer=(unsigned short*)imageData->GetScalarPointer(0,0,0);
-       dataHistogramPointer=(unsigned short*)points->GetScalarPointer(0,0,0);
+       short* dataHistogramPointer             = NULL;
+
+       dataImagePointerUS      = (unsigned short*)imageData->GetScalarPointer(0,0,0);
+       dataImagePointerS       = (short*)imageData->GetScalarPointer(0,0,0);
+       dataImagePointerD       = (double*)imageData->GetScalarPointer(0,0,0);
+
+       dataHistogramPointer    = (short*)points->GetScalarPointer(0,0,0);
        
        /*
         Range of greys
@@ -172,8 +179,8 @@ void pHistogram::setPoints(vtkImageData* imageData)
        /*
         Setting the  minimun and maximum levels of grey
        */
-       maxLevelOfGrey=(int)range[1];
-       minLevelOfGrey=(int)range[0];
+       maxLevelOfGrey=range[1];
+       minLevelOfGrey=range[0];
        //std::cout<<"maxLevelOfGrey "<<maxLevelOfGrey<<" minLevelOfGrey "<<minLevelOfGrey<<std::endl;
        /*
         Image Size
@@ -208,11 +215,25 @@ void pHistogram::setPoints(vtkImageData* imageData)
                */
                //double p=((float)*dataImagePointer-minLevelOfGrey);
                //j=p*k;
-               
-               j=getIndex(*dataImagePointer);
+               if (imageData->GetScalarType()==VTK_UNSIGNED_SHORT)
+               { 
+                       j=getIndex(*dataImagePointerUS);
+                       dataImagePointerUS++;
+               }
+               if (imageData->GetScalarType()==VTK_SHORT) 
+               {
+                       j=getIndex(*dataImagePointerS);
+                       dataImagePointerS++;
+               }
+               if (imageData->GetScalarType()==VTK_DOUBLE) 
+               {
+                       j=getIndex(*dataImagePointerD);
+                       dataImagePointerD++;
+               }
+//EED          j=getIndex(*dataImagePointer);
+
                //std::cout<<j<<std::endl;
                dataHistogramPointer[j]++;
-               dataImagePointer++;
        }
        /*
        BORRAME
@@ -238,7 +259,7 @@ hash por getting the index for the histogram vector of the original
 image
 @gValue: Level of grey for which wants the index in the histogrram
 */
-int pHistogram::getIndex(int gValue)
+int pHistogram::getIndex(double gValue)
 {
 
        double p=((double)gValue-minLevelOfGrey)/(maxLevelOfGrey-minLevelOfGrey);