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
						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