File 0258-Add-backwards-compatibility-for-wxWidgets-3.1.1.patch of Package erlang

From 04f1bfac7a6db7d6a030190ea6bc89cf493af2eb Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Tue, 3 Apr 2018 14:27:41 +0200
Subject: [PATCH] Add backwards compatibility for wxWidgets-3.1.1

wx did not build with wxWidgets-3.1.1 since they have removed
wxGraphicsRenderer:CreatePen(wxPen).

Get the pen info and create the pen from that in 3.1.1 as
is done for wxGrahicsContext:CreatePen(wxPen).
---
 lib/wx/api_gen/wx_extra/wxGraphicsRenderer.c_src | 58 ++++++++++++++++++++++++
 lib/wx/api_gen/wxapi.conf                        |  3 +-
 lib/wx/c_src/gen/wxe_funcs.cpp                   | 34 ++++++++++++--
 3 files changed, 91 insertions(+), 4 deletions(-)
 create mode 100644 lib/wx/api_gen/wx_extra/wxGraphicsRenderer.c_src

diff --git a/lib/wx/api_gen/wx_extra/wxGraphicsRenderer.c_src b/lib/wx/api_gen/wx_extra/wxGraphicsRenderer.c_src
new file mode 100644
index 0000000000..4718525dd6
--- /dev/null
+++ b/lib/wx/api_gen/wx_extra/wxGraphicsRenderer.c_src
@@ -0,0 +1,58 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2018. All Rights Reserved.
+%%
+%% Licensed under the Apache License, Version 2.0 (the "License");
+%% you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%%
+%%     http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+
+<<CreatePen
+case ~s: { // wxGraphicsRenderer::CreatePen taylormade
+ wxGraphicsRenderer *This = (wxGraphicsRenderer *) getPtr(bp,memenv); bp += 4;
+ wxPen *pen = (wxPen *) getPtr(bp,memenv); bp += 4;
+ if(!This) throw wxe_badarg(0);
+#if !wxCHECK_VERSION(3,1,1)
+ wxGraphicsPen * Result = new wxGraphicsPen(This->CreatePen(*pen)); newPtr((void *) Result,4, memenv);
+ rt.addRef(getRef((void *)Result,memenv), "wxGraphicsPen");
+ break;
+#else
+ wxGraphicsPenInfo info = wxGraphicsPenInfo()
+   .Colour(pen->GetColour())
+   .Width(pen->GetWidth())
+   .Style(pen->GetStyle())
+   .Join(pen->GetJoin())
+   .Cap(pen->GetCap())
+   ;
+
+ if ( info.GetStyle() == wxPENSTYLE_USER_DASH )
+ {
+   wxDash *dashes;
+   if ( int nb_dashes = pen->GetDashes(&dashes) )
+     info.Dashes(nb_dashes, dashes);
+ }
+
+ if ( info.GetStyle() == wxPENSTYLE_STIPPLE )
+ {
+   if ( wxBitmap* const stipple = pen->GetStipple() )
+     info.Stipple(*stipple);
+ }
+ wxGraphicsPen * Result = new wxGraphicsPen(This->CreatePen(info));
+ newPtr((void *) Result,4, memenv);
+ rt.addRef(getRef((void *)Result,memenv), "wxGraphicsPen");
+ break;
+#endif
+}
+CreatePen>>
diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf
index 146c9fecc7..c20168e40d 100644
--- a/lib/wx/api_gen/wxapi.conf
+++ b/lib/wx/api_gen/wxapi.conf
@@ -433,7 +433,8 @@
 {class, wxGraphicsRenderer, object, [{ifdef, wxUSE_GRAPHICS_CONTEXT}],
  ['GetDefaultRenderer','CreateContext',
   %%'CreateContextFromNativeContext', 'CreateContextFromNativeWindow',
-  'CreatePen','CreateBrush',
+  {'CreatePen', [{where, taylormade}]},
+  'CreateBrush',
   {'CreateLinearGradientBrush', [{deprecated, "!wxCHECK_VERSION(2,9,0)"}]},
   {'CreateRadialGradientBrush', [{deprecated, "!wxCHECK_VERSION(2,9,0)"}]},
   'CreateFont',
diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp
index a47d602337..a7bac4cf9d 100644
--- a/lib/wx/c_src/gen/wxe_funcs.cpp
+++ b/lib/wx/c_src/gen/wxe_funcs.cpp
@@ -1,7 +1,7 @@
 /*
  * %CopyrightBegin%
  *
- * Copyright Ericsson AB 2008-2017. All Rights Reserved.
+ * Copyright Ericsson AB 2008-2018. All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -7010,13 +7010,41 @@ case wxGraphicsRenderer_CreateContext_1_0: { // wxGraphicsRenderer::CreateContex
  rt.addRef(getRef((void *)Result,memenv), "wxGraphicsContext");
  break;
 }
-case wxGraphicsRenderer_CreatePen: { // wxGraphicsRenderer::CreatePen
+
+case wxGraphicsRenderer_CreatePen: { // wxGraphicsRenderer::CreatePen taylormade
  wxGraphicsRenderer *This = (wxGraphicsRenderer *) getPtr(bp,memenv); bp += 4;
  wxPen *pen = (wxPen *) getPtr(bp,memenv); bp += 4;
  if(!This) throw wxe_badarg(0);
- wxGraphicsPen * Result = new wxGraphicsPen(This->CreatePen(*pen)); newPtr((void *) Result,4, memenv);;
+#if !wxCHECK_VERSION(3,1,1)
+ wxGraphicsPen * Result = new wxGraphicsPen(This->CreatePen(*pen)); newPtr((void *) Result,4, memenv);
  rt.addRef(getRef((void *)Result,memenv), "wxGraphicsPen");
  break;
+#else
+ wxGraphicsPenInfo info = wxGraphicsPenInfo()
+   .Colour(pen->GetColour())
+   .Width(pen->GetWidth())
+   .Style(pen->GetStyle())
+   .Join(pen->GetJoin())
+   .Cap(pen->GetCap())
+   ;
+
+ if ( info.GetStyle() == wxPENSTYLE_USER_DASH )
+ {
+   wxDash *dashes;
+   if ( int nb_dashes = pen->GetDashes(&dashes) )
+     info.Dashes(nb_dashes, dashes);
+ }
+
+ if ( info.GetStyle() == wxPENSTYLE_STIPPLE )
+ {
+   if ( wxBitmap* const stipple = pen->GetStipple() )
+     info.Stipple(*stipple);
+ }
+ wxGraphicsPen * Result = new wxGraphicsPen(This->CreatePen(info));
+ newPtr((void *) Result,4, memenv);
+ rt.addRef(getRef((void *)Result,memenv), "wxGraphicsPen");
+ break;
+#endif
 }
 case wxGraphicsRenderer_CreateBrush: { // wxGraphicsRenderer::CreateBrush
  wxGraphicsRenderer *This = (wxGraphicsRenderer *) getPtr(bp,memenv); bp += 4;
-- 
2.16.3