00001 #include "vuHistogram.h" 00002 00003 vuHistogram::vuHistogram( HistType type) 00004 { 00005 reset(); 00006 setType(type); 00007 } 00008 00009 vuHistogram::~vuHistogram() 00010 { 00011 } 00012 00013 void vuHistogram::setType(HistType type) 00014 { 00015 m_Type = type; 00016 reset(); 00017 } 00018 00019 const char* vuHistogram::getTypeName() const 00020 { 00021 //histogram names 00022 const static char s_TypeName[][255] = 00023 {"Intensity", "Isosurface Area"}; 00024 return s_TypeName[(int)m_Type]; 00025 } 00026 00027 void vuHistogram::reset() 00028 { 00029 int i, len = m_Histogram.getLength(); 00030 for(i=0; i<len; i++) 00031 m_Histogram[i] = 0; 00032 } 00033 00034 void vuHistogram::setSize(dword size) 00035 { 00036 dword len = m_Histogram.getLength(); 00037 m_Histogram.setSize(size); 00038 if(size > len) 00039 { 00040 dword p; 00041 for(p = len; p<size; p++) 00042 m_Histogram[p] = 0; 00043 } 00044 } 00045 00046 void vuHistogram::recordIntensity(word intensity) 00047 { 00048 int len = m_Histogram.getLength(); 00049 if(intensity >= len) 00050 { 00051 int p; 00052 for(p = intensity; p>=len; p--) 00053 m_Histogram[p] = 0; 00054 } 00055 m_Histogram[intensity]++; 00056 } 00057 00058 ostream& operator<<(ostream& os, const vuHistogram& hist) 00059 { 00060 dword v; 00061 dword len = hist.m_Histogram.getLength(); 00062 for(v=0; v<len; v++) 00063 { 00064 os << v <<" \t" << hist.m_Histogram[v] << endl; 00065 } 00066 return os; 00067 } 00068