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
 | 
					// wxImage
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GRG: Dic/99
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxHNode
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    unsigned long index;
 | 
				
			||||||
 | 
					    unsigned long value;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WXDLLEXPORT wxImage: public wxObject
 | 
					class WXDLLEXPORT wxImage: public wxObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  DECLARE_DYNAMIC_CLASS(wxImage)
 | 
					  DECLARE_DYNAMIC_CLASS(wxImage)
 | 
				
			||||||
@@ -379,6 +389,10 @@ public:
 | 
				
			|||||||
  static void CleanUpHandlers();
 | 
					  static void CleanUpHandlers();
 | 
				
			||||||
  static void InitStandardHandlers();
 | 
					  static void InitStandardHandlers();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // GRG: Dic/99
 | 
				
			||||||
 | 
					  unsigned long ComputeHistogram( wxHashTable &h );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static wxList sm_handlers;
 | 
					  static wxList sm_handlers;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2297,3 +2297,49 @@ public:
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxImageModule, wxModule)
 | 
					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