Fix building with wxUSE_STL enabled in VS2019 16.6
Exporting standard C++ library types is not allowed any more, see https://developercommunity.visualstudio.com/content/problem/1042081/142628801includexhash201332-error-c2338-this-funct.html so don't use DLL export declarations for wxHash{Map,Set} classes, which derive from std::{map,set}. Since the classes are header-only, this should have no direct consequences. Only classes that extend wxHashMap or wxHashSet, like wxImageHistogram, have to be made header only as well. Remove the wxLogError message in wxImageHistogram::FindFirstUnusedColour, so log.h and translation.h do not have to be included in the header. Closes https://github.com/wxWidgets/wxWidgets/pull/2009
This commit is contained in:
committed by
Vadim Zeitlin
parent
5aa1f4e953
commit
590e32c60b
@@ -190,7 +190,7 @@ WX_DECLARE_EXPORTED_HASH_MAP(unsigned long, wxImageHistogramEntry,
|
||||
wxIntegerHash, wxIntegerEqual,
|
||||
wxImageHistogramBase);
|
||||
|
||||
class WXDLLIMPEXP_CORE wxImageHistogram : public wxImageHistogramBase
|
||||
class wxImageHistogram : public wxImageHistogramBase
|
||||
{
|
||||
public:
|
||||
wxImageHistogram() : wxImageHistogramBase(256) { }
|
||||
@@ -211,9 +211,43 @@ public:
|
||||
bool FindFirstUnusedColour(unsigned char *r,
|
||||
unsigned char *g,
|
||||
unsigned char *b,
|
||||
unsigned char startR = 1,
|
||||
unsigned char startG = 0,
|
||||
unsigned char startB = 0 ) const;
|
||||
unsigned char r2 = 1,
|
||||
unsigned char g2 = 0,
|
||||
unsigned char b2 = 0 ) const
|
||||
{
|
||||
unsigned long key = MakeKey(r2, g2, b2);
|
||||
|
||||
while ( find(key) != end() )
|
||||
{
|
||||
// color already used
|
||||
r2++;
|
||||
if ( r2 >= 255 )
|
||||
{
|
||||
r2 = 0;
|
||||
g2++;
|
||||
if ( g2 >= 255 )
|
||||
{
|
||||
g2 = 0;
|
||||
b2++;
|
||||
if ( b2 >= 255 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
key = MakeKey(r2, g2, b2);
|
||||
}
|
||||
|
||||
if ( r )
|
||||
*r = r2;
|
||||
if ( g )
|
||||
*g = g2;
|
||||
if ( b )
|
||||
*b = b2;
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user