[vdr-skindesigner] Update to 1.2.1
by Martin Gansser
commit 93124d0475431ff770f8748637c70a39ee65c465
Author: Martin Gansser <mgansser(a)alice.de>
Date: Sun Jul 31 10:24:39 2016 +0200
Update to 1.2.1
.gitignore | 1 +
sources | 2 +-
vdr-skindesigner.spec | 6 +++---
3 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 3d3b740..d3114ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ vdr-plugin-skindesigner-0.9.3.tar.bz2
vdr-plugin-skindesigner-0.9.5.tar.bz2
/vdr-plugin-skindesigner-1.1.5.tar.bz2
/vdr-plugin-skindesigner-1.2.0.tar.bz2
+/vdr-plugin-skindesigner-1.2.1.tar.bz2
diff --git a/sources b/sources
index 27c4ea7..24963a4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-95fece1254648a188e4b70d8d6cf54ca vdr-plugin-skindesigner-1.2.0.tar.bz2
+c9974fc19932d0988fbba8cb845db9ac vdr-plugin-skindesigner-1.2.1.tar.bz2
diff --git a/vdr-skindesigner.spec b/vdr-skindesigner.spec
index 7e06416..dcf3b0d 100644
--- a/vdr-skindesigner.spec
+++ b/vdr-skindesigner.spec
@@ -1,5 +1,5 @@
Name: vdr-skindesigner
-Version: 1.2.0
+Version: 1.2.1
Release: 1%{?dist}
Summary: A VDR skinning engine that displays XML based Skins
@@ -116,8 +116,8 @@ ldconfig -n %{buildroot}%{_libdir}
%{_includedir}/libskindesignerapi/*
%changelog
-* Sat Jul 23 2016 Martin Gansser <martinkg(a)fedoraproject.org> - 1.2.0-1
-- Update to 1.2.0
+* Sun Jul 31 2016 Martin Gansser <martinkg(a)fedoraproject.org> - 1.2.1-1
+- Update to 1.2.1
* Sat Jun 25 2016 Martin Gansser <martinkg(a)fedoraproject.org> - 1.1.5-1
- Update to 1.1.5
8 years, 3 months
[kodi] Rebuilt for ffmpeg-3.1.1
by Julian Sikorski
commit 9711d007473ef9d71c875ac7de78931f035a6aaa
Author: Julian Sikorski <belegdol(a)fedoraproject.org>
Date: Sun Jul 31 08:56:59 2016 +0200
Rebuilt for ffmpeg-3.1.1
- Fixed the verbose build
- Ensured $RPM_LD_FLAGS are used
kodi.spec | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/kodi.spec b/kodi.spec
index 27e165f..4b713a7 100644
--- a/kodi.spec
+++ b/kodi.spec
@@ -8,7 +8,7 @@
Name: kodi
Version: 17.0
-Release: 0.2%{?dist}
+Release: 0.3%{?dist}
Summary: Media center
License: GPLv2+ and GPLv3+ and LGPLv2+ and BSD and MIT
@@ -300,10 +300,10 @@ chmod +x bootstrap
%endif
CFLAGS="$RPM_OPT_FLAGS -fPIC -I/usr/include/afpfs-ng/ -I/usr/include/samba-4.0/ -D__STDC_CONSTANT_MACROS" \
CXXFLAGS="$RPM_OPT_FLAGS -fPIC -I/usr/include/afpfs-ng/ -I/usr/include/samba-4.0/ -D__STDC_CONSTANT_MACROS" \
-LDFLAGS="-fPIC" \
+LDFLAGS="$RPM_LD_FLAGS -fPIC" \
ASFLAGS=-fPIC
-make %{?_smp_mflags} VERBOSE=1
+make %{?_smp_mflags} V=1
%install
@@ -406,6 +406,11 @@ fi
%changelog
+* Sun Jul 31 2016 Julian Sikorski <belegdol(a)fedoraproject.org> - 17.0-0.3
+- Rebuilt for ffmpeg-3.1.1
+- Fixed the verbose build
+- Ensured $RPM_LD_FLAGS are used
+
* Tue Jul 05 2016 Michael Cronenworth <mike(a)cchtml.com> - 17.0-0.2
- Kodi 17.0 alpha 2
8 years, 3 months
[wxsvg] Rebuilt for ffmpeg-3.1.1
by Sérgio M. Basto
commit 525c20bdb12bd2db0be750c3dc7cc7d406ff680a
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sun Jul 31 03:16:50 2016 +0100
Rebuilt for ffmpeg-3.1.1
wxsvg.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/wxsvg.spec b/wxsvg.spec
index c50c21d..fa65aaf 100644
--- a/wxsvg.spec
+++ b/wxsvg.spec
@@ -1,6 +1,6 @@
Name: wxsvg
Version: 1.5.8
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: C++ library to create, manipulate and render SVG files
Group: System Environment/Libraries
@@ -70,6 +70,9 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
%{_libdir}/pkgconfig/lib%{name}.pc
%changelog
+* Sat Jul 30 2016 Julian Sikorski <belegdol(a)fedoraproject.org> - 1.5.8-4
+- Rebuilt for ffmpeg-3.1.1
+
* Sat Jul 30 2016 Sérgio Basto <sergio(a)serjux.com> - 1.5.8-3
- Try fix rfbz#4137 , with upstream fixes.
8 years, 3 months
[lpf-spotify-client] Update Spotify to 1.0.32.96.g3c8a06e6-37 for amd64, -3 for i386
by Sérgio M. Basto
commit 7c033620f25000e1ba130eddc0ffbe3c2b0ab723
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sat Jul 30 22:53:42 2016 +0100
Update Spotify to 1.0.32.96.g3c8a06e6-37 for amd64, -3 for i386
- Move spotify-make to main package, no need dowload it every time
- Use branch devel of spotify-make, supports and install Spotify 1.0.32 correctly
- Update scriptlets https://fedoraproject.org/wiki/Packaging:Scriptlets#Icon_Cache
- Update __requires_exclude with libcurl.so and remove which aren't in use
anymore
- Use Robxu9 commit.
.gitignore | 2 ++
lpf-spotify-client.spec | 22 ++++++++++++++++++++--
sources | 1 +
spotify-client.spec.in | 39 ++++++++++++++++++++-------------------
4 files changed, 43 insertions(+), 21 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..1adc185 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/spotify-make-8597389.tar.gz
+/spotify-make-a0048ec.tar.gz
diff --git a/lpf-spotify-client.spec b/lpf-spotify-client.spec
index 4108e81..f7711d4 100644
--- a/lpf-spotify-client.spec
+++ b/lpf-spotify-client.spec
@@ -1,9 +1,17 @@
# %%bal will not work here, lazy evaluation needed.
+
+#devel branch
+%global github_repo https://github.com/leamas/spotify-make/archive/%{commit}
+%global github_repo https://github.com/robxu9/spotify-make/archive/%{commit}
+%global commit 8597389ba7bf755418e8746b9c20af51e4be2bc0
+%global commit a0048ec7c5c6acf4ca584348684150b91328227d
+%global shortcommit %(c=%{commit}; echo ${c:0:7})
+
%define target_pkg %(t=%{name}; echo ${t#lpf-})
Name: lpf-spotify-client
# Upstream spotify version, verbatim.
-Version: 0.9.17.1.g9b85d43.7
+Version: 1.0.32.96.g3c8a06e6
Release: 1%{?dist}
Summary: Spotify music player native client package bootstrap
@@ -17,6 +25,7 @@ Source0: spotify-client.spec.in
Source1: eula.txt
Source2: LICENSE
Source3: README
+Source4: %{github_repo}/spotify-make-%{shortcommit}.tar.gz
BuildRequires: desktop-file-utils
BuildRequires: lpf >= 0.1
@@ -42,7 +51,7 @@ cp %{SOURCE3} README
%install
# lpf-setup-pkg [eula] <topdir> <specfile> [sources...]
-/usr/share/lpf/scripts/lpf-setup-pkg %{SOURCE1} %{buildroot} %{SOURCE0}
+/usr/share/lpf/scripts/lpf-setup-pkg %{SOURCE1} %{buildroot} %{SOURCE0} %{SOURCE4}
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
@@ -67,6 +76,15 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
%changelog
+* Fri Jul 29 2016 Sérgio Basto <sergio(a)serjux.com> - 1.0.32.96.g3c8a06e6-1
+- Update Spotify to 1.0.32.96.g3c8a06e6-37 for amd64, -3 for i386
+- Move spotify-make to main package, no need dowload it every time
+- Use branch devel of spotify-make, supports and install Spotify 1.0.32 correctly
+- Update scriptlets https://fedoraproject.org/wiki/Packaging:Scriptlets#Icon_Cache
+- Update __requires_exclude with libcurl.so and remove which aren't in use
+ anymore
+- Use Robxu9 commit.
+
* Wed May 06 2015 Sérgio Basto <sergio(a)serjux.com> - 0.9.17.1.g9b85d43.7-1
- Update to 0.9.17.1.g9b85d43.7 and fix rfbz #3408
diff --git a/sources b/sources
index e69de29..c502703 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+ae6f8bd23b7e016f42e7aef7577a52a2 spotify-make-a0048ec.tar.gz
diff --git a/spotify-client.spec.in b/spotify-client.spec.in
index fcec6c2..104463d 100644
--- a/spotify-client.spec.in
+++ b/spotify-client.spec.in
@@ -1,9 +1,8 @@
#These refer to the installer, not the main package:
-%global commit d81d63eeb6d4961e48e92dcfef17a0c967e8b4f8
+%global commit a0048ec7c5c6acf4ca584348684150b91328227d
%global shortcommit %(c=%{commit}; echo ${c:0:7})
-%global repo http://repository.spotify.com/pool/non-free/s/spotify
-%global github_repo https://github.com/leamas/spotify-make/archive/%{commit}
+%global repo http://repository.spotify.com/pool/non-free/s/spotify-client/
# We cannot strip this binary (licensing restrictions).
%global debug_package %{nil}
@@ -12,7 +11,7 @@
Name: spotify-client
-Version: 0.9.17.1.g9b85d43.7
+Version: 1.0.32.96.g3c8a06e6
Release: 1%{?dist}
Summary: Spotify music player native client
@@ -23,11 +22,11 @@ URL: http://www.spotify.com/se/blog/archives/2010/07/12/linux/
Group: Applications/Multimedia
ExclusiveArch: i386 i686 x86_64
-Source0: %{github_repo}/spotify-make-%{version}-%{shortcommit}.tar.gz
+Source0: spotify-make-%{shortcommit}.tar.gz
#Source1: %{repo}/spotify-client_%{version}-1_amd64.deb
-Source1: %{repo}/spotify-client_0.9.17.1.g9b85d43.7-1_amd64.deb
+Source1: %{repo}/spotify-client_1.0.32.96.g3c8a06e6-37_amd64.deb
#Source2: %{repo}/spotify-client_%{version}-1_i386.deb
-Source2: %{repo}/spotify-client_0.9.4.183.g644e24e.428-1_i386.deb
+Source2: %{repo}/spotify-client_1.0.32.96.g3c8a06e6-3_i386.deb
%ifarch x86_64
%global spotify_pkg %{SOURCE1}
@@ -73,12 +72,11 @@ hard drive.
# by symlinks and explicit Requires:.
%global __requires_exclude ^libssl.so.1.0.0
%global __requires_exclude %__requires_exclude|^libcrypto.so.1.0.0
-%global __requires_exclude %__requires_exclude|^libssl.so.0.9.8
-%global __requires_exclude %__requires_exclude|^libcrypto.so.0.9.8
%global __requires_exclude %__requires_exclude|^libcef.so
-%global __requires_exclude %__requires_exclude|^libudev.so.0
-%global __requires_exclude %__requires_exclude|^libgcrypt.so.11
-%global __requires_exclude %__requires_exclude|[.]so[.][0-2][a-f]
+#global __requires_exclude %__requires_exclude|^libudev.so.0
+#global __requires_exclude %__requires_exclude|^libgcrypt.so.11
+%global __requires_exclude %__requires_exclude|^libcurl.so.4
+#global __requires_exclude %__requires_exclude|[.]so[.][0-2][a-f]
%prep
@@ -94,22 +92,22 @@ make install DESTDIR=%{buildroot}
%post
-touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun
if [ $1 -eq 0 ] ; then
- touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+ /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
%posttrans
-gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%files
-%doc opt/spotify/spotify-client/licenses.xhtml
-%doc opt/spotify/spotify-client/readme.fedora
-%doc opt/spotify/spotify-client/changelog
+#doc opt/spotify/spotify-client/licenses.xhtml
+#doc opt/spotify/spotify-client/readme.fedora
+%doc usr/share/doc/spotify-client/changelog.gz
%{_libdir}/spotify-client
%{_bindir}/spotify
%{_mandir}/man1/spotify.*
@@ -120,6 +118,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%changelog
+* Fri Jul 29 2016 Sérgio Basto <sergio(a)serjux.com> - 1.0.32.96.g3c8a06e6-1
+- Update Spotify to 1.0.32.96.g3c8a06e6-37 for amd64, -3 for i386
+
* Wed May 06 2015 Sérgio Basto <sergio(a)serjux.com> - 0.9.17.1.g9b85d43.7-1
- Update to 0.9.17.1.g9b85d43.7 and fix rfbz #3408
8 years, 3 months
[kodi] Disable DVD support, fix CURL definitions
by Michael Cronenworth
commit 239546edd042411485174c68fbb7a6dfa4fbd2b4
Author: Michael Cronenworth <mike(a)cchtml.com>
Date: Sat Jul 30 12:39:02 2016 -0500
Disable DVD support, fix CURL definitions
kodi-17a2-curl.patch | 28 ++++++++++++++++++++++++++++
kodi-17a2-libdvd.patch | 21 +++++++++++++++++++++
kodi.spec | 32 +++++++++++++++++++++++---------
3 files changed, 72 insertions(+), 9 deletions(-)
---
diff --git a/kodi-17a2-curl.patch b/kodi-17a2-curl.patch
new file mode 100644
index 0000000..cd69e79
--- /dev/null
+++ b/kodi-17a2-curl.patch
@@ -0,0 +1,28 @@
+--- a/xbmc/filesystem/DllLibCurl.h 2016-07-30 12:05:53.891636907 -0500
++++ b/xbmc/filesystem/DllLibCurl.h 2016-07-30 12:06:36.590142106 -0500
+@@ -52,7 +52,7 @@
+ virtual CURLMcode multi_fdset(CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)=0;
+ virtual CURLMcode multi_timeout(CURLM *multi_handle, long *timeout)=0;
+ virtual CURLMsg* multi_info_read(CURLM *multi_handle, int *msgs_in_queue)=0;
+- virtual void multi_cleanup(CURL_HANDLE * handle )=0;
++ virtual void multi_cleanup(CURLM *multi_handle)=0;
+ virtual struct curl_slist* slist_append(struct curl_slist *, const char *)=0;
+ virtual void slist_free_all(struct curl_slist *)=0;
+ };
+--- a/xbmc/filesystem/CurlFile.h 2016-07-30 12:07:48.496992870 -0500
++++ b/xbmc/filesystem/CurlFile.h 2016-07-30 12:08:32.160505849 -0500
+@@ -27,8 +27,12 @@
+
+ namespace XCURL
+ {
+- typedef void CURL_HANDLE;
+- typedef void CURLM;
++ #define CURL CURL_HANDLE
++ #include <netdb.h>
++ #include <curl/curl.h>
++ #undef CURL
++ typedef struct XCURL::Curl_easy CURL_HANDLE;
++ typedef struct XCURL::Curl_multi CURLM;
+ struct curl_slist;
+ }
+
diff --git a/kodi-17a2-libdvd.patch b/kodi-17a2-libdvd.patch
new file mode 100644
index 0000000..2e652bc
--- /dev/null
+++ b/kodi-17a2-libdvd.patch
@@ -0,0 +1,21 @@
+--- a/Makefile.in 2016-06-30 14:18:13.000000000 -0500
++++ b/Makefile.in 2016-07-30 12:23:17.468082870 -0500
+@@ -10,8 +10,7 @@
+ tools/EventClients
+
+ DVDPCODECS_DIRS= \
+- lib \
+- lib/libdvd
++ lib
+
+ VideoPlayer_ARCHIVES=xbmc/cores/VideoPlayer/VideoPlayer.a \
+ xbmc/cores/VideoPlayer/DVDCodecs/DVDCodecs.a \
+@@ -343,7 +342,6 @@
+ $(MAKE) -C lib/addons/library.xbmc.pvr
+ $(MAKE) -C lib/addons/library.kodi.inputstream
+ dvdpcodecs: dllloader
+- $(MAKE) -C lib/libdvd
+
+ dvdpextcodecs:
+
+
diff --git a/kodi.spec b/kodi.spec
index 6282b24..27e165f 100644
--- a/kodi.spec
+++ b/kodi.spec
@@ -4,6 +4,7 @@
# use the line below for pre-releases
%global DIRVERSION %{version}%{PRERELEASE}
%global _hardened_build 1
+%global _with_dvd 0
Name: kodi
Version: 17.0
@@ -23,9 +24,23 @@ Source0: %{name}-%{DIRVERSION}-patched.tar.xz
# ./kodi-generate-tarball-xz.sh
Source1: kodi-generate-tarball-xz.sh
+%if 0%{?_with_dvd}
+# kodi uses modified libdvd{nav,read} source and downloads at build time
+# wget -O kodi-libdvdnav-master.tar.gz https://github.com/xbmc/libdvdnav/archive/master.tar.gz
+Source2: kodi-libdvdnav-master.tar.gz
+# wget -O kodi-libdvdread-master.tar.gz https://github.com/xbmc/libdvdread/archive/master.tar.gz
+Source3: kodi-libdvdread-master.tar.gz
+%endif
+
# Set program version parameters
Patch1: kodi-16.0-versioning.patch
+# Fix curl namespace definitions
+Patch2: kodi-17a2-curl.patch
+
+# Drop DVD library support
+Patch3: kodi-17a2-libdvd.patch
+
# Optional deps (not in EPEL)
%if 0%{?fedora}
# (libbluray in EPEL 6 is too old.)
@@ -100,7 +115,6 @@ BuildRequires: libcrystalhd-devel
%endif
BuildRequires: libcurl-devel
BuildRequires: libdca-devel
-BuildRequires: libdvdread-devel
%if 0%{?el6}
BuildRequires: libjpeg-devel
%else
@@ -234,7 +248,13 @@ library.
%prep
%setup -q -n %{name}-%{DIRVERSION}
-%patch1 -p1
+%patch1 -p1 -b.versioning
+%patch2 -p1 -b.curl
+%patch3 -p1 -b.libdvd
+%if 0%{?_with_dvd}
+cp -p %{SOURCE2} tools/depends/target/libdvdnav/libdvdnav-master.tar.gz
+cp -p %{SOURCE3} tools/depends/target/libdvdread/libdvdread-master.tar.gz
+%endif
%build
@@ -253,9 +273,7 @@ chmod +x bootstrap
%if 0%{?_with_wayland}
--enable-wayland \
%endif
---enable-goom \
--enable-pulse \
---enable-joystick \
%if 0%{?_with_libcec}
--enable-libcec \
%else
@@ -266,7 +284,7 @@ chmod +x bootstrap
%else
--disable-ssh \
%endif
---disable-dvdcss \
+--disable-optical-drive \
--disable-optimizations --disable-debug \
%ifnarch %{arm}
--enable-gl \
@@ -278,10 +296,6 @@ chmod +x bootstrap
--disable-vaapi \
%ifarch armv7hl \
--enable-tegra \
---disable-neon \
-%endif
-%ifarch armv7hnl
---enable-neon \
%endif
%endif
CFLAGS="$RPM_OPT_FLAGS -fPIC -I/usr/include/afpfs-ng/ -I/usr/include/samba-4.0/ -D__STDC_CONSTANT_MACROS" \
8 years, 3 months
[wxsvg] After revert 1.5.8-3 missed add new file.
by Sérgio M. Basto
commit 188535bb5ebaa935790abac5e968b19e2cd85f00
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sat Jul 30 16:55:07 2016 +0100
After revert 1.5.8-3 missed add new file.
- Rebuilt for ffmpeg-3.1.1
wxsvg-1.5.8-wxSVGMatrix.patch | 949 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 949 insertions(+)
---
diff --git a/wxsvg-1.5.8-wxSVGMatrix.patch b/wxsvg-1.5.8-wxSVGMatrix.patch
new file mode 100644
index 0000000..edef919
--- /dev/null
+++ b/wxsvg-1.5.8-wxSVGMatrix.patch
@@ -0,0 +1,949 @@
+diff -rup wxsvg-1.5.8/include/wxSVG/SVGCanvasItem.h wxsvg/include/wxSVG/SVGCanvasItem.h
+--- wxsvg-1.5.8/include/wxSVG/SVGCanvasItem.h 2016-01-09 23:31:15.000000000 +0000
++++ wxsvg/include/wxSVG/SVGCanvasItem.h 2016-07-27 09:54:21.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Canvas items
+ // Author: Alex Thuering
+ // Created: 2005/05/09
+-// RCS-ID: $Id: SVGCanvasItem.h,v 1.28 2016/01/09 23:31:15 ntalex Exp $
++// RCS-ID: $Id: SVGCanvasItem.h,v 1.29 2016/07/27 08:54:21 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ /////////////////////////////////////////////////////////////////////////////
+@@ -44,9 +44,9 @@ class wxSVGCanvasItem {
+ wxSVGCanvasItemType GetType() { return m_type; }
+
+ /** returns the bounding box of the item */
+- virtual wxSVGRect GetBBox(const wxSVGMatrix& matrix = *(wxSVGMatrix*)NULL) { return wxSVGRect(); }
++ virtual wxSVGRect GetBBox(const wxSVGMatrix* matrix = NULL) { return wxSVGRect(); }
+ virtual wxSVGRect GetResultBBox(const wxCSSStyleDeclaration& style,
+- const wxSVGMatrix& matrix = *(wxSVGMatrix*)NULL) { return GetBBox(); }
++ const wxSVGMatrix* matrix = NULL) { return GetBBox(matrix); }
+
+ protected:
+ wxSVGCanvasItemType m_type;
+@@ -114,8 +114,8 @@ struct wxSVGCanvasTextChunk {
+ wxSVGCanvasTextCharList chars;
+ wxCSSStyleDeclaration style;
+ wxSVGMatrix matrix;
+- wxSVGRect GetBBox(const wxSVGMatrix& matrix);
+- wxSVGRect GetBBox() { return GetBBox(*(wxSVGMatrix*)NULL); }
++ wxSVGRect GetBBox(const wxSVGMatrix* matrix);
++ wxSVGRect GetBBox() { return GetBBox(NULL); }
+ };
+
+ WX_DECLARE_OBJARRAY(wxSVGCanvasTextChunk, wxSVGCanvasTextChunkList);
+@@ -128,7 +128,7 @@ class wxSVGCanvasText: public wxSVGCanva
+ virtual ~wxSVGCanvasText();
+
+ virtual void Init(wxSVGTextElement& element, const wxCSSStyleDeclaration& style, wxSVGMatrix* matrix);
+- virtual wxSVGRect GetBBox(const wxSVGMatrix& matrix = *(wxSVGMatrix*)NULL);
++ virtual wxSVGRect GetBBox(const wxSVGMatrix* matrix = NULL);
+ virtual long GetNumberOfChars();
+ virtual double GetComputedTextLength();
+ virtual double GetSubStringLength(unsigned long charnum, unsigned long nchars);
+diff -rup wxsvg-1.5.8/src/cairo/SVGCanvasCairo.cpp wxsvg/src/cairo/SVGCanvasCairo.cpp
+--- wxsvg-1.5.8/src/cairo/SVGCanvasCairo.cpp 2015-09-19 18:18:23.000000000 +0100
++++ wxsvg/src/cairo/SVGCanvasCairo.cpp 2016-07-27 09:54:21.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Cairo render
+ // Author: Alex Thuering
+ // Created: 2005/05/12
+-// RCS-ID: $Id: SVGCanvasCairo.cpp,v 1.33 2015/09/19 17:18:23 ntalex Exp $
++// RCS-ID: $Id: SVGCanvasCairo.cpp,v 1.34 2016/07/27 08:54:21 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -451,7 +451,8 @@ void wxSVGCanvasCairo::DrawCanvasPath(wx
+ int dx = int(floor(stdX * 3 * sqrt(2 * M_PI) / 4 + 0.5));
+ int dy = int(floor(stdY * 3 * sqrt(2 * M_PI) / 4 + 0.5));
+
+- wxSVGRect rect = canvasPath.GetResultBBox(style, matrix.Inverse());
++ wxSVGMatrix invMatrix = matrix.Inverse();
++ wxSVGRect rect = canvasPath.GetResultBBox(style, &invMatrix);
+ rect.SetX(rect.GetX() - 2*dx);
+ rect.SetY(rect.GetY() - 2*dy);
+ rect.SetWidth(rect.GetWidth() + 4*dx);
+diff -rup wxsvg-1.5.8/src/cairo/SVGCanvasPathCairo.cpp wxsvg/src/cairo/SVGCanvasPathCairo.cpp
+--- wxsvg-1.5.8/src/cairo/SVGCanvasPathCairo.cpp 2014-11-23 11:36:16.000000000 +0000
++++ wxsvg/src/cairo/SVGCanvasPathCairo.cpp 2016-07-27 09:54:21.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Cairo canvas path
+ // Author: Alex Thuering
+ // Created: 2005/05/12
+-// RCS-ID: $Id: SVGCanvasPathCairo.cpp,v 1.14 2014/11/23 11:36:16 ntalex Exp $
++// RCS-ID: $Id: SVGCanvasPathCairo.cpp,v 1.15 2016/07/27 08:54:21 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -35,15 +35,16 @@ cairo_path_t* wxSVGCanvasPathCairo::GetP
+ return cairo_copy_path(m_cr);
+ }
+
+-wxSVGRect wxSVGCanvasPathCairo::GetBBox(const wxSVGMatrix& matrix) {
+- if (&matrix) {
++wxSVGRect wxSVGCanvasPathCairo::GetBBox(const wxSVGMatrix* matrix) {
++ if (matrix) {
+ cairo_matrix_t m;
+- cairo_matrix_init(&m, matrix.GetA(), matrix.GetB(), matrix.GetC(), matrix.GetD(), matrix.GetE(), matrix.GetF());
++ cairo_matrix_init(&m, matrix->GetA(), matrix->GetB(), matrix->GetC(), matrix->GetD(),
++ matrix->GetE(), matrix->GetF());
+ cairo_set_matrix(m_cr, &m);
+ }
+ double x1, y1, x2, y2;
+ cairo_fill_extents(m_cr, &x1, &y1, &x2, &y2);
+- if (&matrix) {
++ if (matrix) {
+ cairo_matrix_t mat;
+ cairo_matrix_init(&mat, 1, 0, 0, 1, 0, 0);
+ cairo_set_matrix(m_cr, &mat);
+@@ -51,10 +52,11 @@ wxSVGRect wxSVGCanvasPathCairo::GetBBox(
+ return wxSVGRect(x1, y1, x2 - x1, y2 - y1);
+ }
+
+-wxSVGRect wxSVGCanvasPathCairo::GetResultBBox(const wxCSSStyleDeclaration& style, const wxSVGMatrix& matrix) {
+- if (&matrix) {
++wxSVGRect wxSVGCanvasPathCairo::GetResultBBox(const wxCSSStyleDeclaration& style, const wxSVGMatrix* matrix) {
++ if (matrix) {
+ cairo_matrix_t m;
+- cairo_matrix_init(&m, matrix.GetA(), matrix.GetB(), matrix.GetC(), matrix.GetD(), matrix.GetE(), matrix.GetF());
++ cairo_matrix_init(&m, matrix->GetA(), matrix->GetB(), matrix->GetC(), matrix->GetD(),
++ matrix->GetE(), matrix->GetF());
+ cairo_set_matrix(m_cr, &m);
+ }
+ ApplyStrokeStyle(m_cr, style);
+@@ -63,7 +65,7 @@ wxSVGRect wxSVGCanvasPathCairo::GetResul
+ cairo_stroke_extents(m_cr, &x1, &y1, &x2, &y2);
+ else
+ cairo_fill_extents(m_cr, &x1, &y1, &x2, &y2);
+- if (&matrix) {
++ if (matrix) {
+ cairo_matrix_t mat;
+ cairo_matrix_init(&mat, 1, 0, 0, 1, 0, 0);
+ cairo_set_matrix(m_cr, &mat);
+diff -rup wxsvg-1.5.8/src/cairo/SVGCanvasPathCairo.h wxsvg/src/cairo/SVGCanvasPathCairo.h
+--- wxsvg-1.5.8/src/cairo/SVGCanvasPathCairo.h 2013-01-19 18:26:28.000000000 +0000
++++ wxsvg/src/cairo/SVGCanvasPathCairo.h 2016-07-27 09:54:21.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Cairo canvas path
+ // Author: Alex Thuering
+ // Created: 2005/05/12
+-// RCS-ID: $Id: SVGCanvasPathCairo.h,v 1.6 2013/01/19 18:26:28 ntalex Exp $
++// RCS-ID: $Id: SVGCanvasPathCairo.h,v 1.7 2016/07/27 08:54:21 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -24,8 +24,8 @@ public:
+ virtual ~wxSVGCanvasPathCairo();
+
+ void End();
+- wxSVGRect GetBBox(const wxSVGMatrix& matrix = *(wxSVGMatrix*) NULL);
+- wxSVGRect GetResultBBox(const wxCSSStyleDeclaration& style, const wxSVGMatrix& matrix = *(wxSVGMatrix*) NULL);
++ wxSVGRect GetBBox(const wxSVGMatrix* matrix = NULL);
++ wxSVGRect GetResultBBox(const wxCSSStyleDeclaration& style, const wxSVGMatrix* matrix = NULL);
+
+ cairo_t* GetCr() { return m_cr; }
+ cairo_path_t* GetPath();
+diff -rup wxsvg-1.5.8/src/SVGCanvasItem.cpp wxsvg/src/SVGCanvasItem.cpp
+--- wxsvg-1.5.8/src/SVGCanvasItem.cpp 2016-05-16 22:08:51.000000000 +0100
++++ wxsvg/src/SVGCanvasItem.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose:
+ // Author: Alex Thuering
+ // Created: 2005/05/09
+-// RCS-ID: $Id: SVGCanvasItem.cpp,v 1.53 2016/05/16 21:08:51 ntalex Exp $
++// RCS-ID: $Id: SVGCanvasItem.cpp,v 1.55 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -1164,12 +1164,12 @@ void wxSVGCanvasText::EndTextAnchor() {
+ }
+ }
+
+-wxSVGRect wxSVGCanvasTextChunk::GetBBox(const wxSVGMatrix& matrix) {
++wxSVGRect wxSVGCanvasTextChunk::GetBBox(const wxSVGMatrix* matrix) {
+ wxSVGRect bbox;
+ for (int i = 0; i < (int) chars.Count(); i++) {
+ wxSVGRect elemBBox = chars[i].path->GetBBox(matrix);
+ if (elemBBox.IsEmpty())
+- elemBBox = &matrix ? chars[i].bbox.MatrixTransform(matrix) : chars[i].bbox;
++ elemBBox = matrix ? chars[i].bbox.MatrixTransform(*matrix) : chars[i].bbox;
+ if (i == 0)
+ bbox = elemBBox;
+ else {
+@@ -1190,15 +1190,15 @@ wxSVGRect wxSVGCanvasTextChunk::GetBBox(
+ return bbox;
+ }
+
+-wxSVGRect wxSVGCanvasText::GetBBox(const wxSVGMatrix& matrix)
++wxSVGRect wxSVGCanvasText::GetBBox(const wxSVGMatrix* matrix)
+ {
+ wxSVGRect bbox;
+ for (int i=0; i<(int)m_chunks.Count(); i++)
+ {
+ wxSVGMatrix tmpMatrix = m_chunks[i].matrix;
+- if (&matrix)
+- tmpMatrix = ((wxSVGMatrix&) matrix).Multiply(m_chunks[i].matrix);
+- wxSVGRect elemBBox = m_chunks[i].GetBBox(tmpMatrix);
++ if (matrix)
++ tmpMatrix = (*matrix).Multiply(m_chunks[i].matrix);
++ wxSVGRect elemBBox = m_chunks[i].GetBBox(&tmpMatrix);
+ if (i == 0)
+ bbox = elemBBox;
+ else
+diff -rup wxsvg-1.5.8/src/SVGLineElement.cpp wxsvg/src/SVGLineElement.cpp
+--- wxsvg-1.5.8/src/SVGLineElement.cpp 2006-01-08 12:44:30.000000000 +0000
++++ wxsvg/src/SVGLineElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose:
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGLineElement.cpp,v 1.4 2006/01/08 12:44:30 ntalex Exp $
++// RCS-ID: $Id: SVGLineElement.cpp,v 1.5 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -11,55 +11,53 @@
+ #include "SVGLineElement.h"
+ #include "SVGCanvas.h"
+
+-wxSVGRect wxSVGLineElement::GetBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxSVGPoint p1 = wxSVGPoint(GetX1().GetAnimVal(), GetY1().GetAnimVal());
+- wxSVGPoint p2 = wxSVGPoint(GetX2().GetAnimVal(), GetY2().GetAnimVal());
+- if (coordinates != wxSVG_COORDINATES_USER)
+- {
+- wxSVGMatrix matrix = GetMatrix(coordinates);
+- p1 = p1.MatrixTransform(matrix);
+- p2 = p2.MatrixTransform(matrix);
+- }
+-
+- double x1 = p1.GetX();
+- double y1 = p1.GetY();
+- double x2 = p2.GetX();
+- double y2 = p2.GetY();
+-
+- wxSVGRect bbox(x1, y1, x2 - x1, y2 - y1);
+-
+- if (x1 > x2)
+- {
+- bbox.SetX(x2);
+- bbox.SetWidth(x1 - x2);
+- }
+-
+- if (y1 > y2)
+- {
+- bbox.SetY(y2);
+- bbox.SetHeight(y1 - y2);
+- }
+-
+- return bbox;
++wxSVGRect wxSVGLineElement::GetBBox(wxSVG_COORDINATES coordinates) {
++ wxSVGPoint p1 = wxSVGPoint(GetX1().GetAnimVal(), GetY1().GetAnimVal());
++ wxSVGPoint p2 = wxSVGPoint(GetX2().GetAnimVal(), GetY2().GetAnimVal());
++ if (coordinates != wxSVG_COORDINATES_USER) {
++ wxSVGMatrix matrix = GetMatrix(coordinates);
++ p1 = p1.MatrixTransform(matrix);
++ p2 = p2.MatrixTransform(matrix);
++ }
++
++ double x1 = p1.GetX();
++ double y1 = p1.GetY();
++ double x2 = p2.GetX();
++ double y2 = p2.GetY();
++
++ wxSVGRect bbox(x1, y1, x2 - x1, y2 - y1);
++
++ if (x1 > x2) {
++ bbox.SetX(x2);
++ bbox.SetWidth(x1 - x2);
++ }
++
++ if (y1 > y2) {
++ bbox.SetY(y2);
++ bbox.SetHeight(y1 - y2);
++ }
++
++ return bbox;
+ }
+
+-wxSVGRect wxSVGLineElement::GetResultBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxCSSStyleDeclaration style = GetResultStyle(*this);
+- if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+- return GetBBox(coordinates);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ?
+- m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return bbox;
++wxSVGRect wxSVGLineElement::GetResultBBox(wxSVG_COORDINATES coordinates) {
++ wxCSSStyleDeclaration style = GetResultStyle(*this);
++ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
++ return GetBBox(coordinates);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return bbox;
+ }
+
+-void wxSVGLineElement::SetCanvasItem(wxSVGCanvasItem* canvasItem)
+-{
+- if (m_canvasItem)
+- delete m_canvasItem;
+- m_canvasItem = canvasItem;
++void wxSVGLineElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) {
++ if (m_canvasItem)
++ delete m_canvasItem;
++ m_canvasItem = canvasItem;
+ }
+diff -rup wxsvg-1.5.8/src/SVGPathElement.cpp wxsvg/src/SVGPathElement.cpp
+--- wxsvg-1.5.8/src/SVGPathElement.cpp 2014-08-09 12:13:02.000000000 +0100
++++ wxsvg/src/SVGPathElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Implementation of wxSVGPathElement
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGPathElement.cpp,v 1.7 2014/08/09 11:13:02 ntalex Exp $
++// RCS-ID: $Id: SVGPathElement.cpp,v 1.8 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -14,8 +14,13 @@
+
+ wxSVGRect wxSVGPathElement::GetBBox(wxSVG_COORDINATES coordinates) {
+ WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ? m_canvasItem->GetBBox() :
+- m_canvasItem->GetBBox(GetMatrix(coordinates));
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetBBox();
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetBBox(&m);
++ }
+ WX_SVG_CLEAR_M_CANVAS_ITEM
+ return bbox;
+ }
+@@ -25,8 +30,13 @@ wxSVGRect wxSVGPathElement::GetResultBBo
+ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+ return GetBBox(coordinates);
+ WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ? m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
+ WX_SVG_CLEAR_M_CANVAS_ITEM
+ return bbox;
+ }
+@@ -77,38 +87,38 @@ wxSVGPathSegLinetoRel wxSVGPathElement::
+ return res;
+ }
+
+-wxSVGPathSegCurvetoCubicAbs wxSVGPathElement::CreateSVGPathSegCurvetoCubicAbs(
+- double x, double y, double x1, double y1, double x2, double y2) const {
++wxSVGPathSegCurvetoCubicAbs wxSVGPathElement::CreateSVGPathSegCurvetoCubicAbs(double x, double y, double x1, double y1,
++ double x2, double y2) const {
+ wxSVGPathSegCurvetoCubicAbs res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoCubicRel wxSVGPathElement::CreateSVGPathSegCurvetoCubicRel(
+- double x, double y, double x1, double y1, double x2, double y2) const {
++wxSVGPathSegCurvetoCubicRel wxSVGPathElement::CreateSVGPathSegCurvetoCubicRel(double x, double y, double x1, double y1,
++ double x2, double y2) const {
+ wxSVGPathSegCurvetoCubicRel res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoQuadraticAbs wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticAbs(
+- double x, double y, double x1, double y1) const {
++wxSVGPathSegCurvetoQuadraticAbs wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticAbs(double x, double y, double x1,
++ double y1) const {
+ wxSVGPathSegCurvetoQuadraticAbs res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoQuadraticRel wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticRel(
+- double x, double y, double x1, double y1) const {
++wxSVGPathSegCurvetoQuadraticRel wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticRel(double x, double y, double x1,
++ double y1) const {
+ wxSVGPathSegCurvetoQuadraticRel res;
+ return res;
+ }
+
+-wxSVGPathSegArcAbs wxSVGPathElement::CreateSVGPathSegArcAbs(double x, double y,
+- double r1, double r2, double angle, bool largeArcFlag, bool sweepFlag) const {
++wxSVGPathSegArcAbs wxSVGPathElement::CreateSVGPathSegArcAbs(double x, double y, double r1, double r2, double angle,
++ bool largeArcFlag, bool sweepFlag) const {
+ wxSVGPathSegArcAbs res;
+ return res;
+ }
+
+-wxSVGPathSegArcRel wxSVGPathElement::CreateSVGPathSegArcRel(double x, double y,
+- double r1, double r2, double angle, bool largeArcFlag, bool sweepFlag) const {
++wxSVGPathSegArcRel wxSVGPathElement::CreateSVGPathSegArcRel(double x, double y, double r1, double r2, double angle,
++ bool largeArcFlag, bool sweepFlag) const {
+ wxSVGPathSegArcRel res;
+ return res;
+ }
+@@ -133,26 +143,26 @@ wxSVGPathSegLinetoVerticalRel wxSVGPathE
+ return res;
+ }
+
+-wxSVGPathSegCurvetoCubicSmoothAbs wxSVGPathElement::CreateSVGPathSegCurvetoCubicSmoothAbs(
+- double x, double y, double x2, double y2) const {
++wxSVGPathSegCurvetoCubicSmoothAbs wxSVGPathElement::CreateSVGPathSegCurvetoCubicSmoothAbs(double x, double y, double x2,
++ double y2) const {
+ wxSVGPathSegCurvetoCubicSmoothAbs res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoCubicSmoothRel wxSVGPathElement::CreateSVGPathSegCurvetoCubicSmoothRel(
+- double x, double y, double x2, double y2) const {
++wxSVGPathSegCurvetoCubicSmoothRel wxSVGPathElement::CreateSVGPathSegCurvetoCubicSmoothRel(double x, double y, double x2,
++ double y2) const {
+ wxSVGPathSegCurvetoCubicSmoothRel res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoQuadraticSmoothAbs wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticSmoothAbs(
+- double x, double y) const {
++wxSVGPathSegCurvetoQuadraticSmoothAbs wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticSmoothAbs(double x,
++ double y) const {
+ wxSVGPathSegCurvetoQuadraticSmoothAbs res;
+ return res;
+ }
+
+-wxSVGPathSegCurvetoQuadraticSmoothRel wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticSmoothRel(
+- double x, double y) const {
++wxSVGPathSegCurvetoQuadraticSmoothRel wxSVGPathElement::CreateSVGPathSegCurvetoQuadraticSmoothRel(double x,
++ double y) const {
+ wxSVGPathSegCurvetoQuadraticSmoothRel res;
+ return res;
+ }
+diff -rup wxsvg-1.5.8/src/SVGPolygonElement.cpp wxsvg/src/SVGPolygonElement.cpp
+--- wxsvg-1.5.8/src/SVGPolygonElement.cpp 2006-01-08 12:44:30.000000000 +0000
++++ wxsvg/src/SVGPolygonElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose:
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGPolygonElement.cpp,v 1.4 2006/01/08 12:44:30 ntalex Exp $
++// RCS-ID: $Id: SVGPolygonElement.cpp,v 1.5 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -11,62 +11,58 @@
+ #include "SVGPolygonElement.h"
+ #include "SVGCanvas.h"
+
+-wxSVGRect wxSVGPolygonElement::GetBBox(wxSVG_COORDINATES coordinates)
+-{
+- const wxSVGPointList& points = GetPoints();
+- if (points.Count() == 0)
+- return wxSVGRect();
+-
+- wxSVGPoint p0 = points[0];
+- wxSVGMatrix matrix;
+- if (coordinates != wxSVG_COORDINATES_USER)
+- {
+- matrix = GetMatrix(coordinates);
+- p0 = p0.MatrixTransform(matrix);
+- }
+- wxSVGRect bbox(p0.GetX(), p0.GetY(), 0, 0);
+-
+- wxSVGPoint pi = wxSVGPoint();
+- for (int i = 1; i<(int)points.Count(); i++)
+- {
+- pi = coordinates == wxSVG_COORDINATES_USER ?
+- points[i] : points[i].MatrixTransform(matrix);
+- if (bbox.GetX() > pi.GetX())
+- {
+- bbox.SetWidth(bbox.GetWidth() + bbox.GetX() - pi.GetX());
+- bbox.SetX(pi.GetX());
++wxSVGRect wxSVGPolygonElement::GetBBox(wxSVG_COORDINATES coordinates) {
++ const wxSVGPointList& points = GetPoints();
++ if (points.Count() == 0)
++ return wxSVGRect();
++
++ wxSVGPoint p0 = points[0];
++ wxSVGMatrix matrix;
++ if (coordinates != wxSVG_COORDINATES_USER) {
++ matrix = GetMatrix(coordinates);
++ p0 = p0.MatrixTransform(matrix);
+ }
+- if (bbox.GetY() > pi.GetY())
+- {
+- bbox.SetHeight(bbox.GetHeight() + bbox.GetY() - pi.GetY());
+- bbox.SetY(pi.GetY());
++ wxSVGRect bbox(p0.GetX(), p0.GetY(), 0, 0);
++
++ wxSVGPoint pi = wxSVGPoint();
++ for (int i = 1; i < (int) points.Count(); i++) {
++ pi = coordinates == wxSVG_COORDINATES_USER ? points[i] : points[i].MatrixTransform(matrix);
++ if (bbox.GetX() > pi.GetX()) {
++ bbox.SetWidth(bbox.GetWidth() + bbox.GetX() - pi.GetX());
++ bbox.SetX(pi.GetX());
++ }
++ if (bbox.GetY() > pi.GetY()) {
++ bbox.SetHeight(bbox.GetHeight() + bbox.GetY() - pi.GetY());
++ bbox.SetY(pi.GetY());
++ }
++
++ if (bbox.GetX() + bbox.GetWidth() < pi.GetX())
++ bbox.SetWidth(pi.GetX() - bbox.GetX());
++ if (bbox.GetY() + bbox.GetHeight() < pi.GetY())
++ bbox.SetHeight(pi.GetY() - bbox.GetY());
+ }
+-
+- if (bbox.GetX() + bbox.GetWidth() < pi.GetX())
+- bbox.SetWidth(pi.GetX() - bbox.GetX());
+- if (bbox.GetY() + bbox.GetHeight() < pi.GetY())
+- bbox.SetHeight(pi.GetY() - bbox.GetY());
+- }
+-
+- return bbox;
++
++ return bbox;
+ }
+
+-wxSVGRect wxSVGPolygonElement::GetResultBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxCSSStyleDeclaration style = GetResultStyle(*this);
+- if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+- return GetBBox(coordinates);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ?
+- m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return bbox;
++wxSVGRect wxSVGPolygonElement::GetResultBBox(wxSVG_COORDINATES coordinates) {
++ wxCSSStyleDeclaration style = GetResultStyle(*this);
++ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
++ return GetBBox(coordinates);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return bbox;
+ }
+
+-void wxSVGPolygonElement::SetCanvasItem(wxSVGCanvasItem* canvasItem)
+-{
+- if (m_canvasItem)
+- delete m_canvasItem;
+- m_canvasItem = canvasItem;
++void wxSVGPolygonElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) {
++ if (m_canvasItem)
++ delete m_canvasItem;
++ m_canvasItem = canvasItem;
+ }
+diff -rup wxsvg-1.5.8/src/SVGPolylineElement.cpp wxsvg/src/SVGPolylineElement.cpp
+--- wxsvg-1.5.8/src/SVGPolylineElement.cpp 2006-01-08 12:44:30.000000000 +0000
++++ wxsvg/src/SVGPolylineElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose:
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGPolylineElement.cpp,v 1.4 2006/01/08 12:44:30 ntalex Exp $
++// RCS-ID: $Id: SVGPolylineElement.cpp,v 1.5 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -11,62 +11,58 @@
+ #include "SVGPolylineElement.h"
+ #include "SVGCanvas.h"
+
+-wxSVGRect wxSVGPolylineElement::GetBBox(wxSVG_COORDINATES coordinates)
+-{
+- const wxSVGPointList& points = GetPoints();
+- if (points.Count() == 0)
+- return wxSVGRect();
+-
+- wxSVGPoint p0 = points[0];
+- wxSVGMatrix matrix;
+- if (coordinates != wxSVG_COORDINATES_USER)
+- {
+- matrix = GetMatrix(coordinates);
+- p0 = p0.MatrixTransform(matrix);
+- }
+- wxSVGRect bbox(p0.GetX(), p0.GetY(), 0, 0);
+-
+- wxSVGPoint pi;
+- for (int i = 1; i<(int)points.Count(); i++)
+- {
+- pi = coordinates == wxSVG_COORDINATES_USER ?
+- points[i] : points[i].MatrixTransform(matrix);
+- if (bbox.GetX() > pi.GetX())
+- {
+- bbox.SetWidth(bbox.GetWidth() + bbox.GetX() - pi.GetX());
+- bbox.SetX(pi.GetX());
++wxSVGRect wxSVGPolylineElement::GetBBox(wxSVG_COORDINATES coordinates) {
++ const wxSVGPointList& points = GetPoints();
++ if (points.Count() == 0)
++ return wxSVGRect();
++
++ wxSVGPoint p0 = points[0];
++ wxSVGMatrix matrix;
++ if (coordinates != wxSVG_COORDINATES_USER) {
++ matrix = GetMatrix(coordinates);
++ p0 = p0.MatrixTransform(matrix);
+ }
+- if (bbox.GetY() > pi.GetY())
+- {
+- bbox.SetHeight(bbox.GetHeight() + bbox.GetY() - pi.GetY());
+- bbox.SetY(pi.GetY());
++ wxSVGRect bbox(p0.GetX(), p0.GetY(), 0, 0);
++
++ wxSVGPoint pi;
++ for (int i = 1; i < (int) points.Count(); i++) {
++ pi = coordinates == wxSVG_COORDINATES_USER ? points[i] : points[i].MatrixTransform(matrix);
++ if (bbox.GetX() > pi.GetX()) {
++ bbox.SetWidth(bbox.GetWidth() + bbox.GetX() - pi.GetX());
++ bbox.SetX(pi.GetX());
++ }
++ if (bbox.GetY() > pi.GetY()) {
++ bbox.SetHeight(bbox.GetHeight() + bbox.GetY() - pi.GetY());
++ bbox.SetY(pi.GetY());
++ }
++
++ if (bbox.GetX() + bbox.GetWidth() < pi.GetX())
++ bbox.SetWidth(pi.GetX() - bbox.GetX());
++ if (bbox.GetY() + bbox.GetHeight() < pi.GetY())
++ bbox.SetHeight(pi.GetY() - bbox.GetY());
+ }
+-
+- if (bbox.GetX() + bbox.GetWidth() < pi.GetX())
+- bbox.SetWidth(pi.GetX() - bbox.GetX());
+- if (bbox.GetY() + bbox.GetHeight() < pi.GetY())
+- bbox.SetHeight(pi.GetY() - bbox.GetY());
+- }
+-
+- return bbox;
++
++ return bbox;
+ }
+
+-wxSVGRect wxSVGPolylineElement::GetResultBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxCSSStyleDeclaration style = GetResultStyle(*this);
+- if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+- return GetBBox(coordinates);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ?
+- m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return bbox;
++wxSVGRect wxSVGPolylineElement::GetResultBBox(wxSVG_COORDINATES coordinates) {
++ wxCSSStyleDeclaration style = GetResultStyle(*this);
++ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
++ return GetBBox(coordinates);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return bbox;
+ }
+
+-void wxSVGPolylineElement::SetCanvasItem(wxSVGCanvasItem* canvasItem)
+-{
+- if (m_canvasItem)
+- delete m_canvasItem;
+- m_canvasItem = canvasItem;
++void wxSVGPolylineElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) {
++ if (m_canvasItem)
++ delete m_canvasItem;
++ m_canvasItem = canvasItem;
+ }
+diff -rup wxsvg-1.5.8/src/SVGRectElement.cpp wxsvg/src/SVGRectElement.cpp
+--- wxsvg-1.5.8/src/SVGRectElement.cpp 2014-03-24 21:16:35.000000000 +0000
++++ wxsvg/src/SVGRectElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: Implementation of wxSVGRectElement
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGRectElement.cpp,v 1.6 2014/03/24 21:16:35 ntalex Exp $
++// RCS-ID: $Id: SVGRectElement.cpp,v 1.7 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -18,8 +18,13 @@ const double pi = 3.1415926;
+
+ wxSVGRect wxSVGRectElement::GetBBox(wxSVG_COORDINATES coordinates) {
+ WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ? m_canvasItem->GetBBox() :
+- m_canvasItem->GetBBox(GetMatrix(coordinates));
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetBBox();
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetBBox(&m);
++ }
+ WX_SVG_CLEAR_M_CANVAS_ITEM
+ return bbox;
+ }
+@@ -29,8 +34,13 @@ wxSVGRect wxSVGRectElement::GetResultBBo
+ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+ return GetBBox(coordinates);
+ WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ? m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
+ WX_SVG_CLEAR_M_CANVAS_ITEM
+ return bbox;
+ }
+diff -rup wxsvg-1.5.8/src/SVGTextElement.cpp wxsvg/src/SVGTextElement.cpp
+--- wxsvg-1.5.8/src/SVGTextElement.cpp 2008-04-14 16:44:55.000000000 +0100
++++ wxsvg/src/SVGTextElement.cpp 2016-07-28 10:05:28.000000000 +0100
+@@ -3,7 +3,7 @@
+ // Purpose: svg text element
+ // Author: Alex Thuering
+ // Created: 2005/05/10
+-// RCS-ID: $Id: SVGTextElement.cpp,v 1.5 2008/04/14 15:44:55 etisserant Exp $
++// RCS-ID: $Id: SVGTextElement.cpp,v 1.6 2016/07/28 09:05:28 ntalex Exp $
+ // Copyright: (c) 2005 Alex Thuering
+ // Licence: wxWindows licence
+ //////////////////////////////////////////////////////////////////////////////
+@@ -12,108 +12,106 @@
+ #include "SVGCanvas.h"
+ #include <math.h>
+
+-wxSVGRect wxSVGTextElement::GetBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ?
+- m_canvasItem->GetBBox() : m_canvasItem->GetBBox(GetMatrix(coordinates));
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return bbox.MatrixTransform(matrix);
+- //return bbox;
+-}
+-
+-wxSVGRect wxSVGTextElement::GetResultBBox(wxSVG_COORDINATES coordinates)
+-{
+- wxCSSStyleDeclaration style = GetResultStyle(*this);
+- if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
+- return GetBBox(coordinates);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect bbox = coordinates == wxSVG_COORDINATES_USER ?
+- m_canvasItem->GetResultBBox(style) :
+- m_canvasItem->GetResultBBox(style, GetMatrix(coordinates));
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return bbox;
+-}
+-
+-void wxSVGTextElement::SetCanvasItem(wxSVGCanvasItem* canvasItem)
+-{
+- if (m_canvasItem)
+- delete m_canvasItem;
+- m_canvasItem = canvasItem;
+-}
+-
+-long wxSVGTextElement::GetNumberOfChars()
+-{
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- long number = ((wxSVGCanvasText*)m_canvasItem)->GetNumberOfChars();
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return number;
+-}
+-
+-double wxSVGTextElement::GetComputedTextLength()
+-{
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- double length = ((wxSVGCanvasText*)m_canvasItem)->GetComputedTextLength();
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return length * sqrt(matrix.GetA() * matrix.GetA() + matrix.GetB() * matrix.GetB());
+-}
+-
+-double wxSVGTextElement::GetSubStringLength(unsigned long charnum, unsigned long nchars)
+-{
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- double length = ((wxSVGCanvasText*)m_canvasItem)->GetSubStringLength(charnum, nchars);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return length * sqrt(matrix.GetA() * matrix.GetA() + matrix.GetB() * matrix.GetB());
+-}
+-
+-wxSVGPoint wxSVGTextElement::GetStartPositionOfChar(unsigned long charnum)
+-{
+- wxSVGPoint real_position;
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGPoint position = ((wxSVGCanvasText*)m_canvasItem)->GetStartPositionOfChar(charnum);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- real_position.SetX(matrix.GetA() * position.GetX() + matrix.GetB() * position.GetY() + matrix.GetE());
+- real_position.SetY(matrix.GetB() * position.GetX() + matrix.GetD() * position.GetY() + matrix.GetF());
+- return real_position;
+-}
+-
+-wxSVGPoint wxSVGTextElement::GetEndPositionOfChar(unsigned long charnum)
+-{
+- wxSVGPoint real_position;
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGPoint position = ((wxSVGCanvasText*)m_canvasItem)->GetEndPositionOfChar(charnum);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- real_position.SetX(matrix.GetA() * position.GetX() + matrix.GetB() * position.GetY() + matrix.GetE());
+- real_position.SetY(matrix.GetB() * position.GetX() + matrix.GetD() * position.GetY() + matrix.GetF());
+- return real_position;
+-}
+-
+-wxSVGRect wxSVGTextElement::GetExtentOfChar(unsigned long charnum)
+-{
+- wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- wxSVGRect extent = ((wxSVGCanvasText*)m_canvasItem)->GetExtentOfChar(charnum);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return extent.MatrixTransform(matrix);
+-}
+-
+-double wxSVGTextElement::GetRotationOfChar(unsigned long charnum)
+-{
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- double rotation = ((wxSVGCanvasText*)m_canvasItem)->GetRotationOfChar(charnum);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return rotation;
+-}
+-
+-long wxSVGTextElement::GetCharNumAtPosition(const wxSVGPoint& point)
+-{
+- WX_SVG_CREATE_M_CANVAS_ITEM
+- long charnum = ((wxSVGCanvasText*)m_canvasItem)->GetCharNumAtPosition(point);
+- WX_SVG_CLEAR_M_CANVAS_ITEM
+- return charnum;
++wxSVGRect wxSVGTextElement::GetBBox(wxSVG_COORDINATES coordinates) {
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetBBox();
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetBBox(&m);
++ }
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return bbox.MatrixTransform(matrix);
++ //return bbox;
++}
++
++wxSVGRect wxSVGTextElement::GetResultBBox(wxSVG_COORDINATES coordinates) {
++ wxCSSStyleDeclaration style = GetResultStyle(*this);
++ if (style.GetStroke().GetPaintType() == wxSVG_PAINTTYPE_NONE)
++ return GetBBox(coordinates);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect bbox;
++ if (coordinates == wxSVG_COORDINATES_USER) {
++ bbox = m_canvasItem->GetResultBBox(style);
++ } else {
++ wxSVGMatrix m = GetMatrix(coordinates);
++ bbox = m_canvasItem->GetResultBBox(style, &m);
++ }
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return bbox;
++}
++
++void wxSVGTextElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) {
++ if (m_canvasItem)
++ delete m_canvasItem;
++ m_canvasItem = canvasItem;
++}
++
++long wxSVGTextElement::GetNumberOfChars() {
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ long number = ((wxSVGCanvasText*) m_canvasItem)->GetNumberOfChars();
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return number;
++}
++
++double wxSVGTextElement::GetComputedTextLength() {
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ double length = ((wxSVGCanvasText*) m_canvasItem)->GetComputedTextLength();
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return length * sqrt(matrix.GetA() * matrix.GetA() + matrix.GetB() * matrix.GetB());
++}
++
++double wxSVGTextElement::GetSubStringLength(unsigned long charnum, unsigned long nchars) {
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ double length = ((wxSVGCanvasText*) m_canvasItem)->GetSubStringLength(charnum, nchars);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return length * sqrt(matrix.GetA() * matrix.GetA() + matrix.GetB() * matrix.GetB());
++}
++
++wxSVGPoint wxSVGTextElement::GetStartPositionOfChar(unsigned long charnum) {
++ wxSVGPoint real_position;
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGPoint position = ((wxSVGCanvasText*) m_canvasItem)->GetStartPositionOfChar(charnum);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ real_position.SetX(matrix.GetA() * position.GetX() + matrix.GetB() * position.GetY() + matrix.GetE());
++ real_position.SetY(matrix.GetB() * position.GetX() + matrix.GetD() * position.GetY() + matrix.GetF());
++ return real_position;
++}
++
++wxSVGPoint wxSVGTextElement::GetEndPositionOfChar(unsigned long charnum) {
++ wxSVGPoint real_position;
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGPoint position = ((wxSVGCanvasText*) m_canvasItem)->GetEndPositionOfChar(charnum);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ real_position.SetX(matrix.GetA() * position.GetX() + matrix.GetB() * position.GetY() + matrix.GetE());
++ real_position.SetY(matrix.GetB() * position.GetX() + matrix.GetD() * position.GetY() + matrix.GetF());
++ return real_position;
++}
++
++wxSVGRect wxSVGTextElement::GetExtentOfChar(unsigned long charnum) {
++ wxSVGMatrix matrix = wxSVGLocatable::GetCTM(this);
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ wxSVGRect extent = ((wxSVGCanvasText*) m_canvasItem)->GetExtentOfChar(charnum);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return extent.MatrixTransform(matrix);
++}
++
++double wxSVGTextElement::GetRotationOfChar(unsigned long charnum) {
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ double rotation = ((wxSVGCanvasText*) m_canvasItem)->GetRotationOfChar(charnum);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return rotation;
++}
++
++long wxSVGTextElement::GetCharNumAtPosition(const wxSVGPoint& point) {
++ WX_SVG_CREATE_M_CANVAS_ITEM
++ long charnum = ((wxSVGCanvasText*) m_canvasItem)->GetCharNumAtPosition(point);
++ WX_SVG_CLEAR_M_CANVAS_ITEM
++ return charnum;
+ }
8 years, 3 months
[wxsvg] Try fix rfbz #4137 , with upstream fixes.
by Sérgio M. Basto
commit 65e8455008137f71094351c7623ea6fe41a38fed
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sat Jul 30 16:53:40 2016 +0100
Try fix rfbz #4137 , with upstream fixes.
wxsvg.spec | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/wxsvg.spec b/wxsvg.spec
index 67b6325..c50c21d 100644
--- a/wxsvg.spec
+++ b/wxsvg.spec
@@ -7,6 +7,7 @@ Group: System Environment/Libraries
License: wxWidgets
URL: http://sourceforge.net/projects/wxsvg
Source0: http://downloads.sourceforge.net/wxsvg/wxsvg-%{version}.tar.bz2
+Patch0: wxsvg-1.5.8-wxSVGMatrix.patch
BuildRequires: autoconf automake libtool gettext
BuildRequires: expat-devel
BuildRequires: ffmpeg-devel
@@ -30,10 +31,12 @@ provides the files required to develop programs that use wxsvg.
%prep
%setup -q
-rm install-sh mkinstalldirs missing depcomp config.sub ltmain.sh config.guess compile aclocal.m4 Makefile.in configure
-rm m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
+%patch0 -p1 -b wxSVGMatrix
%build
+#clean autogenerated files before run autoreconf
+rm install-sh mkinstalldirs missing depcomp config.sub ltmain.sh config.guess compile aclocal.m4 Makefile.in configure
+rm m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
autoreconf -i
%configure \
--disable-dependency-tracking \
@@ -67,8 +70,8 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
%{_libdir}/pkgconfig/lib%{name}.pc
%changelog
-* Sat Jul 30 2016 Julian Sikorski <belegdol(a)fedoraproject.org> - 1.5.8-3
-- Rebuilt for ffmpeg-3.1.1
+* Sat Jul 30 2016 Sérgio Basto <sergio(a)serjux.com> - 1.5.8-3
+- Try fix rfbz#4137 , with upstream fixes.
* Fri Jul 08 2016 Sérgio Basto <sergio(a)serjux.com> - 1.5.8-2
- Cleanup spec and add License tag
8 years, 3 months