]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx
#2482 creaMaracasVisu Bug New High - ColorLayer refresh missing. The MPR is not...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / pHistogram.cxx
index 1c5aa115d4a39cb0af5cc3a43f35e56df6003635..cbfee52eeac8aedf549fbf9c1f1a37af899b9699 100644 (file)
 //----------------------------------------------------------------------------
 pHistogram::pHistogram(std::string filePath)
 {
-       path=filePath;
-       points= vtkImageData::New();
-       size=100;
-       sizeImage=0;
+       path                    = filePath;
+       points          = vtkImageData::New();
+       size                    = 100;
+       sizeImage       = 0;
        buildHistogram();
 }
 
 pHistogram::pHistogram(vtkImageData* imageData)
 {
-       points= vtkImageData::New();
-       size=100;
-       sizeImage=0;
+       points          = vtkImageData::New();
+       size                    = 100;
+       sizeImage       = 0;
        //cast
        /*
        vtkImageCast* cast= vtkImageCast::New();
@@ -85,19 +85,19 @@ pHistogram::pHistogram(vtkImageData* imageData)
        buildHistogram(imageData);
 }
 
+//----------------------------------------------------------------------------
 pHistogram::~pHistogram()
 {
        if(points!=NULL)points->Delete();
 }
-//----------------------------------------------------------------------------
-// Methods
-//----------------------------------------------------------------------------
 
+//----------------------------------------------------------------------------
 void pHistogram::setImagePath(std::string filePath)
 {
        path=filePath;
 }
 
+//----------------------------------------------------------------------------
 void pHistogram::buildHistogram()
 {
        /*
@@ -121,7 +121,6 @@ void pHistogram::buildHistogram()
        imageData->GetScalarRange(range);
        initializePoints(size);
        setPoints(imageData);
-       
 }
 
 /*
@@ -144,7 +143,7 @@ void pHistogram::initializePoints(int xDimension)
        //setting image data of the points
        points->SetDimensions(xDimension,1,1);
 //EED  points->SetScalarTypeToUnsignedShort();
-       points->SetScalarTypeToShort();
+       points->SetScalarTypeToDouble();
        points->AllocateScalars();
        points->Update();
 }
@@ -170,31 +169,32 @@ printf("EED pHistogram::setPoints colums:%d\n", (int)(resulttable->GetNumberOfCo
        /*
                Pointers
        */
-       unsigned short* dataImagePointerUS      = NULL;
-       short* dataImagePointerS                = NULL;
-       double* dataImagePointerD               = NULL;
 
-       short* dataHistogramPointer             = NULL;
+       char*                           dataImagePointerC               = (char*)imageData->GetScalarPointer(0,0,0);
+       unsigned char*  dataImagePointerUC      = (unsigned char*)imageData->GetScalarPointer(0,0,0);
+       short*                          dataImagePointerS               = (short*)imageData->GetScalarPointer(0,0,0);
+       unsigned short*         dataImagePointerUS      = (unsigned short*)imageData->GetScalarPointer(0,0,0);
+       float*                          dataImagePointerF               = (float*)imageData->GetScalarPointer(0,0,0);
+       double*                                 dataImagePointerD               = (double*)imageData->GetScalarPointer(0,0,0);
 
-       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);
+       double* dataHistogramPointer                            = (double*)points->GetScalarPointer(0,0,0);
        
        /*
         Range of greys
        */
        double range[2];
        if(imageData==NULL)
-               range[1]=1;
-       else
+       {
+               range[1] = 1;
+       } else {
                imageData->GetScalarRange(range);
+       } // imageData
+
        /*
         Setting the  minimun and maximum levels of grey
        */
-       maxLevelOfGrey=range[1];
-       minLevelOfGrey=range[0];
+       maxLevelOfGrey = range[1];
+       minLevelOfGrey = range[0];
        //std::cout<<"maxLevelOfGrey "<<maxLevelOfGrey<<" minLevelOfGrey "<<minLevelOfGrey<<std::endl;
        /*
         Image Size
@@ -202,9 +202,9 @@ printf("EED pHistogram::setPoints colums:%d\n", (int)(resulttable->GetNumberOfCo
        int ext[6];
        imageData->GetExtent(ext);
        int sx,sy,sz;
-       sx=ext[1]+1;
-       sy=ext[3]+1;
-       sz=ext[5]+1;
+       sx=ext[1]-ext[0]+1;
+       sy=ext[3]-ext[2]+1;
+       sz=ext[5]-ext[4]+1;
 
        sizeImage=sx*sy*sz;
 
@@ -217,49 +217,75 @@ printf("EED pHistogram::setPoints colums:%d\n", (int)(resulttable->GetNumberOfCo
                dataHistogramPointer[i]=0;
        }
        
-       /*
-       Constructing the Histogram
-       */
-       //int k=size/(maxLevelOfGrey-minLevelOfGrey);
        int j=0;
-       for(i=0;i<sizeImage;i++)
+
+
+       if (imageData->GetScalarType()==VTK_CHAR)
        {
-               /*
-                hashing the histogram
-               */
-               //double p=((float)*dataImagePointer-minLevelOfGrey);
-               //j=p*k;
-               if (imageData->GetScalarType()==VTK_UNSIGNED_SHORT)
-               { 
-                       j=getIndex(*dataImagePointerUS);
-                       dataImagePointerUS++;
-               }
-               if (imageData->GetScalarType()==VTK_SHORT) 
+               for(i=0;i<sizeImage;i++)
+               {
+                       j=getIndex(*dataImagePointerC);
+                       dataImagePointerC++;
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } //  CHAR
+
+       if (imageData->GetScalarType()==VTK_UNSIGNED_CHAR)
+       {
+               for(i=0;i<sizeImage;i++)
+               {
+                       j=getIndex(*dataImagePointerUC);
+                       dataImagePointerUC++;
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } // UNSIGNED CHAR
+
+
+       if (imageData->GetScalarType()==VTK_SHORT)
+       {
+               for(i=0;i<sizeImage;i++)
                {
                        j=getIndex(*dataImagePointerS);
                        dataImagePointerS++;
-               }
-               if (imageData->GetScalarType()==VTK_DOUBLE) 
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } // SHORT
+
+       if (imageData->GetScalarType()==VTK_UNSIGNED_SHORT)
+       {
+               for(i=0;i<sizeImage;i++)
+               {
+                       j=getIndex(*dataImagePointerUS);
+                       dataImagePointerUS++;
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } // UNSIGNED SHORT
+
+
+       if (imageData->GetScalarType()==VTK_FLOAT)
+       {
+               for(i=0;i<sizeImage;i++)
+               {
+                       j=getIndex(*dataImagePointerF);
+                       dataImagePointerF++;
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } // FLOAT
+
+
+       if (imageData->GetScalarType()==VTK_DOUBLE)
+       {
+               for(i=0;i<sizeImage;i++)
                {
                        j=getIndex(*dataImagePointerD);
                        dataImagePointerD++;
-               }
-//EED          j=getIndex(*dataImagePointer);
+                       dataHistogramPointer[j]++;
+               }  // for i
+       } // DOUBLE
 
-               //std::cout<<j<<std::endl;
-               dataHistogramPointer[j]++;
-       }
-       /*
-       BORRAME
-       */
-       /*
-       k=0;
-       for(i=0;i<size;i++)
-       {
-               k=dataHistogramPointer[i];
-       }
-       */
 }
+
+
 /*
 Returns the poins of the histograms
 */
@@ -325,9 +351,7 @@ int pHistogram::getHistogramPoint(int gValue)
        //double p=((float)gValue-minLevelOfGrey)/(maxLevelOfGrey-minLevelOfGrey); // JPRx
        //double k=p*size;
 
-       unsigned short* dataHistogramPointer=NULL;
-       dataHistogramPointer=(unsigned short*)points->GetScalarPointer(0,0,0);
-
+       double* dataHistogramPointer = dataHistogramPointer=(double*)points->GetScalarPointer(0,0,0);
        return dataHistogramPointer[gValue];
 }