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