bool wxImage::FindFirstUnusedColour(
unsigned char *r, unsigned char *g, unsigned char *b,
- unsigned char startR, unsigned char startG, unsigned char startB)
+ unsigned char startR, unsigned char startG, unsigned char startB) const
{
- wxHashTable hTable;
+ wxImageHistogram histogram;
unsigned long key;
- ComputeHistogram( hTable );
+ ComputeHistogram(histogram);
unsigned char r2 = startR;
unsigned char g2 = startG;
key = (r2 << 16) | (g2 << 8) | b2;
- while ( (wxHNode *) hTable.Get(key) )
+ while ( histogram.find(key) != histogram.end() )
{
// color already used
r2++;
#endif // wxUSE_STREAMS
}
-bool wxImage::SaveFile( const wxString& filename, int type )
+bool wxImage::SaveFile( const wxString& filename, int type ) const
{
#if wxUSE_STREAMS
wxFileOutputStream stream(filename);
return FALSE;
}
-bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype )
+bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype ) const
{
#if wxUSE_STREAMS
wxFileOutputStream stream(filename);
return handler->LoadFile( this, stream, TRUE/*verbose*/, index );
}
-bool wxImage::SaveFile( wxOutputStream& stream, int type )
+bool wxImage::SaveFile( wxOutputStream& stream, int type ) const
{
wxCHECK_MSG( Ok(), FALSE, wxT("invalid image") );
return FALSE;
}
- return handler->SaveFile( this, stream );
+ return handler->SaveFile( (wxImage*)this, stream );
}
-bool wxImage::SaveFile( wxOutputStream& stream, const wxString& mimetype )
+bool wxImage::SaveFile( wxOutputStream& stream, const wxString& mimetype ) const
{
wxCHECK_MSG( Ok(), FALSE, wxT("invalid image") );
return FALSE;
}
- return handler->SaveFile( this, stream );
+ return handler->SaveFile( (wxImage*)this, stream );
}
#endif // wxUSE_STREAMS
// less, in this case it would be invoked as CountColours(256)). Default
// value for stopafter is -1 (don't care).
//
-unsigned long wxImage::CountColours( unsigned long stopafter )
+unsigned long wxImage::CountColours( unsigned long stopafter ) const
{
wxHashTable h;
wxObject dummy;
}
-// 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 long wxImage::ComputeHistogram( wxImageHistogram &h ) const
{
unsigned char r, g, b;
unsigned char *p;
unsigned long size, nentries, key;
- wxHNode *hnode;
+
+ h.clear();
p = GetData();
size = GetWidth() * GetHeight();
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);
- }
+ wxImageHistogramEntry& entry = h[key];
+ if ( entry.value++ == 0 )
+ entry.index = nentries++;
}
return nentries;