Added ComputeHistogram
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -282,6 +282,16 @@ public:
 | 
			
		||||
// wxImage
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// GRG: Dic/99
 | 
			
		||||
class WXDLLEXPORT wxHNode
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    unsigned long index;
 | 
			
		||||
    unsigned long value;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class WXDLLEXPORT wxImage: public wxObject
 | 
			
		||||
{
 | 
			
		||||
  DECLARE_DYNAMIC_CLASS(wxImage)
 | 
			
		||||
@@ -379,6 +389,10 @@ public:
 | 
			
		||||
  static void CleanUpHandlers();
 | 
			
		||||
  static void InitStandardHandlers();
 | 
			
		||||
 | 
			
		||||
  // GRG: Dic/99
 | 
			
		||||
  unsigned long ComputeHistogram( wxHashTable &h );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
  static wxList sm_handlers;
 | 
			
		||||
 
 | 
			
		||||
@@ -2297,3 +2297,49 @@ public:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
IMPLEMENT_DYNAMIC_CLASS(wxImageModule, wxModule)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// GRG, Dic/99
 | 
			
		||||
// Computes the histogram of the image and fills a hash table, indexed
 | 
			
		||||
// with integer keys built as 0xRRGGBB, containing wxHNode objects. Each
 | 
			
		||||
// wxHNode contains an 'index' (useful to build a palette with the image
 | 
			
		||||
// colours) and a 'value', which is the number of pixels in the image with
 | 
			
		||||
// that colour.
 | 
			
		||||
 | 
			
		||||
unsigned long wxImage::ComputeHistogram( wxHashTable &h )
 | 
			
		||||
{
 | 
			
		||||
    unsigned char r, g, b, *p;
 | 
			
		||||
    unsigned long size, nentries, key;
 | 
			
		||||
    wxHNode *hnode;
 | 
			
		||||
 | 
			
		||||
    p = GetData();
 | 
			
		||||
    size = GetWidth() * GetHeight();
 | 
			
		||||
    nentries = 0;
 | 
			
		||||
 | 
			
		||||
    for (unsigned long j = 0; j < size; j++)
 | 
			
		||||
    {
 | 
			
		||||
        r = *(p++);
 | 
			
		||||
        g = *(p++);
 | 
			
		||||
        b = *(p++);
 | 
			
		||||
        key = (r << 16) | (g << 8) | b;
 | 
			
		||||
 | 
			
		||||
        hnode = (wxHNode *) h.Get(key);
 | 
			
		||||
 | 
			
		||||
        if (hnode)
 | 
			
		||||
            hnode->value++;
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            hnode = new wxHNode();
 | 
			
		||||
            hnode->index = nentries++;  
 | 
			
		||||
            hnode->value = 1;
 | 
			
		||||
 | 
			
		||||
            h.Put(key, (wxObject *)hnode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return nentries;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user