mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-25 03:17:56 +08:00
203 lines
7.6 KiB
Diff
203 lines
7.6 KiB
Diff
|
From 590e32c60b1dfb32b34632f3d1b0b5cf7c8e4b84 Mon Sep 17 00:00:00 2001
|
||
|
From: Maarten Bent <MaartenBent@users.noreply.github.com>
|
||
|
Date: Sat, 1 Aug 2020 11:54:26 +0200
|
||
|
Subject: [PATCH] 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
|
||
|
---
|
||
|
include/wx/hashmap.h | 9 ++++++---
|
||
|
include/wx/hashset.h | 6 ++++--
|
||
|
include/wx/image.h | 42 ++++++++++++++++++++++++++++++++++++++----
|
||
|
src/common/image.cpp | 43 -------------------------------------------
|
||
|
4 files changed, 48 insertions(+), 52 deletions(-)
|
||
|
|
||
|
diff --git a/include/wx/hashmap.h b/include/wx/hashmap.h
|
||
|
index df9092a3823..86700f40ca9 100644
|
||
|
--- a/include/wx/hashmap.h
|
||
|
+++ b/include/wx/hashmap.h
|
||
|
@@ -678,24 +678,27 @@ public: \
|
||
|
|
||
|
// and these do exactly the same thing but should be used inside the
|
||
|
// library
|
||
|
+// note: DECL is not used since the class is inline
|
||
|
#define WX_DECLARE_HASH_MAP_WITH_DECL( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, DECL) \
|
||
|
- _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, DECL )
|
||
|
+ _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, class )
|
||
|
|
||
|
#define WX_DECLARE_EXPORTED_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
||
|
WX_DECLARE_HASH_MAP_WITH_DECL( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, \
|
||
|
CLASSNAME, class WXDLLIMPEXP_CORE )
|
||
|
|
||
|
+// note: DECL is not used since the class is inline
|
||
|
#define WX_DECLARE_STRING_HASH_MAP_WITH_DECL( VALUE_T, CLASSNAME, DECL ) \
|
||
|
_WX_DECLARE_HASH_MAP( wxString, VALUE_T, wxStringHash, wxStringEqual, \
|
||
|
- CLASSNAME, DECL )
|
||
|
+ CLASSNAME, class )
|
||
|
|
||
|
#define WX_DECLARE_EXPORTED_STRING_HASH_MAP( VALUE_T, CLASSNAME ) \
|
||
|
WX_DECLARE_STRING_HASH_MAP_WITH_DECL( VALUE_T, CLASSNAME, \
|
||
|
class WXDLLIMPEXP_CORE )
|
||
|
|
||
|
+// note: DECL is not used since the class is inline
|
||
|
#define WX_DECLARE_VOIDPTR_HASH_MAP_WITH_DECL( VALUE_T, CLASSNAME, DECL ) \
|
||
|
_WX_DECLARE_HASH_MAP( void*, VALUE_T, wxPointerHash, wxPointerEqual, \
|
||
|
- CLASSNAME, DECL )
|
||
|
+ CLASSNAME, class )
|
||
|
|
||
|
#define WX_DECLARE_EXPORTED_VOIDPTR_HASH_MAP( VALUE_T, CLASSNAME ) \
|
||
|
WX_DECLARE_VOIDPTR_HASH_MAP_WITH_DECL( VALUE_T, CLASSNAME, \
|
||
|
diff --git a/include/wx/hashset.h b/include/wx/hashset.h
|
||
|
index bb713b87f4f..311aeca9a6e 100644
|
||
|
--- a/include/wx/hashset.h
|
||
|
+++ b/include/wx/hashset.h
|
||
|
@@ -159,8 +159,9 @@ public: \
|
||
|
|
||
|
// and these do exactly the same thing but should be used inside the
|
||
|
// library
|
||
|
+// note: DECL is not used since the class is inline
|
||
|
#define WX_DECLARE_HASH_SET_WITH_DECL( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, DECL) \
|
||
|
- _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, wxPTROP_NORMAL, CLASSNAME, DECL )
|
||
|
+ _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, wxPTROP_NORMAL, CLASSNAME, class )
|
||
|
|
||
|
#define WX_DECLARE_EXPORTED_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
||
|
WX_DECLARE_HASH_SET_WITH_DECL( KEY_T, HASH_T, KEY_EQ_T, \
|
||
|
@@ -173,8 +174,9 @@ public: \
|
||
|
// common compilers (notably Sun CC).
|
||
|
#define WX_DECLARE_HASH_SET_PTR( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
||
|
_WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, wxPTROP_NOP, CLASSNAME, class )
|
||
|
+// note: DECL is not used since the class is inline
|
||
|
#define WX_DECLARE_HASH_SET_WITH_DECL_PTR( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, DECL) \
|
||
|
- _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, wxPTROP_NOP, CLASSNAME, DECL )
|
||
|
+ _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, wxPTROP_NOP, CLASSNAME, class )
|
||
|
|
||
|
// delete all hash elements
|
||
|
//
|
||
|
diff --git a/include/wx/image.h b/include/wx/image.h
|
||
|
index f2b5866d2d7..d53ff0b1165 100644
|
||
|
--- a/include/wx/image.h
|
||
|
+++ b/include/wx/image.h
|
||
|
@@ -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 @@ class WXDLLIMPEXP_CORE wxImageHistogram : public wxImageHistogramBase
|
||
|
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;
|
||
|
+ }
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
diff --git a/src/common/image.cpp b/src/common/image.cpp
|
||
|
index 096f823f0c1..880c1c4ea74 100644
|
||
|
--- a/src/common/image.cpp
|
||
|
+++ b/src/common/image.cpp
|
||
|
@@ -3381,49 +3381,6 @@ wxImageHandler::GetResolutionFromOptions(const wxImage& image, int *x, int *y)
|
||
|
// image histogram stuff
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
-bool
|
||
|
-wxImageHistogram::FindFirstUnusedColour(unsigned char *r,
|
||
|
- unsigned char *g,
|
||
|
- unsigned char *b,
|
||
|
- unsigned char r2,
|
||
|
- unsigned char g2,
|
||
|
- unsigned char b2) 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 )
|
||
|
- {
|
||
|
- wxLogError(_("No unused colour in image.") );
|
||
|
- return false;
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
-
|
||
|
- key = MakeKey(r2, g2, b2);
|
||
|
- }
|
||
|
-
|
||
|
- if ( r )
|
||
|
- *r = r2;
|
||
|
- if ( g )
|
||
|
- *g = g2;
|
||
|
- if ( b )
|
||
|
- *b = b2;
|
||
|
-
|
||
|
- return true;
|
||
|
-}
|
||
|
-
|
||
|
bool
|
||
|
wxImage::FindFirstUnusedColour(unsigned char *r,
|
||
|
unsigned char *g,
|