Skip to content
Snippets Groups Projects
Commit 3c39f878 authored by Natanael Copa's avatar Natanael Copa
Browse files

community/opencpn: upgrade to 4.8.8

parent 319b7568
No related merge requests found
......@@ -2,38 +2,38 @@
# Contributor: ScrumpyJack <scrumpyjack@st.ilet.to>
# Maintainer: ScrumpyJack <scrumpyjack@st.ilet.to>
pkgname=opencpn
pkgver=4.8.4
pkgver=4.8.8
pkgrel=0
pkgdesc="OpenCPN is a cross platform electronic navigation system"
url="http://opencpn.org"
arch="x86 x86_64"
license="GPL-2.0"
depends=""
makedepends="wxgtk-dev libexecinfo-dev linux-headers curl-dev cmake gpsd portaudio-dev tinyxml-dev"
install=""
subpackages="$pkgname-doc $pkgname-lang"
source="$pkgname-$pkgver.tar.gz::https://github.com/OpenCPN/OpenCPN/archive/v${pkgver}.tar.gz
source="$pkgname-$pkgver.tar.gz::https://github.com/OpenCPN/OpenCPN/archive/v$pkgver.tar.gz
CMakeList.txt.patch
CMakeList-wxWidgets.patch
Replace-some-wx-arrays-with-std-vector.patch
compile-without-wxUSE_XLOCALE.patch
"
builddir="$srcdir/OpenCPN-${pkgver}"
builddir="$srcdir/OpenCPN-$pkgver"
build() {
cd "$builddir"
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUNDLE_GSHHS=CRUDE \
-DBUNDLE_TCDATA=ON \
-DBUNDLE_DOCS=ON || return 1
-DBUNDLE_DOCS=ON
make
}
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="d5b06446772cd23677bef56a994b98f1ab6709687cf414954d951718f68b04a27f1fd2010a7c6e2fbc57c29639282fe9bc25a6e2c1b46a23d67a7817ce61fc9f opencpn-4.8.4.tar.gz
sha512sums="4fa94655d7b9d389f5f335c15898e7138c792c71b824720fedd762ccd71c01481e5a24598b85211dba0c7d89d0ad0b2ebc2afc38301235829d4aa6f499c6f9b2 opencpn-4.8.8.tar.gz
a0cb0742f5d93e9e32529775d2d90ccaad6bec7e217e2fa08c6a3130c0cfbdb91ed4bf3a14db2a453f95a59d383fb7d698c33795f326597edf7d2e198d094b64 CMakeList.txt.patch
34d17ee1e01eceb79702c642bdfb392178633525aca059c07bc424691aaafb5252d56c4c3b9d42d7273f6663f33b1a18ee653964274b790cf6bd2ab6e57a8635 CMakeList-wxWidgets.patch"
34d17ee1e01eceb79702c642bdfb392178633525aca059c07bc424691aaafb5252d56c4c3b9d42d7273f6663f33b1a18ee653964274b790cf6bd2ab6e57a8635 CMakeList-wxWidgets.patch
882577101e4ef767ce11c5bad34f5d7a9cecdf0f764bcfaf54ebf840d9aebceeef2947c42c794af31747af6d688e328f410cefea513662875aef5cbea76c5b1d Replace-some-wx-arrays-with-std-vector.patch
83ef403b7b5b7e9d44d87aabedce84923241092d32e2905f01566287dd99cac72fd60060c34d81022c4b9c064ff7707fdfdebe24f9a1260301f3f1d886650acb compile-without-wxUSE_XLOCALE.patch"
From 9ac4ad6ff62dd449d8e1e6abef98521cae3e1839 Mon Sep 17 00:00:00 2001
From: Pavel Kalian <pavel@kalian.cz>
Date: Thu, 21 Jun 2018 17:08:06 -0300
Subject: [PATCH] Replace some wx arrays with std::vector (Fixes build with
current wxWidgets codebase)
---
include/s57chart.h | 2 +-
src/routemanagerdialog.cpp | 38 ++++++++---------
src/s57chart.cpp | 61 +++++++++++++---------------
src/wxsvg/include/wxSVG/NodeList.h | 2 +-
src/wxsvg/include/wxSVG/SVGElement.h | 2 +
5 files changed, 51 insertions(+), 54 deletions(-)
diff --git a/include/s57chart.h b/include/s57chart.h
index 42af908c71..2b8eefc014 100644
--- a/include/s57chart.h
+++ b/include/s57chart.h
@@ -160,7 +160,7 @@ class s57chart : public ChartBase
bool IsPointInObjArea(float lat, float lon, float select_radius, S57Obj *obj);
wxString GetObjectAttributeValueAsString( S57Obj *obj, int iatt, wxString curAttrName );
static wxString GetAttributeValueAsString( S57attVal *pAttrVal, wxString AttrName );
- static int CompareLights( const void** l1, const void** l2 );
+ static bool CompareLights( const S57Light* l1, const S57Light* l2 );
wxString CreateObjDescriptions( ListOfObjRazRules* rule);
static wxString GetAttributeDecode(wxString& att, int ival);
diff --git a/src/routemanagerdialog.cpp b/src/routemanagerdialog.cpp
index 56dcbbeb99..d677a42dd5 100644
--- a/src/routemanagerdialog.cpp
+++ b/src/routemanagerdialog.cpp
@@ -33,6 +33,8 @@
#include <wx/clipbrd.h>
#include <iostream>
+#include <vector>
+#include <algorithm>
#include "styles.h"
#include "dychart.h"
@@ -1523,14 +1525,11 @@ void RouteManagerDialog::OnTrkRightClick( wxListEvent &event )
PopupMenu( &menu );
}
-WX_DEFINE_ARRAY( Track*, TrackArray );
-
-static int CompareTracks( Track** track1, Track** track2 )
+static bool CompareTracks( Track* track1, Track* track2 )
{
- TrackPoint* start1 = ( *track1 )->GetPoint(0);
- TrackPoint* start2 = ( *track2 )->GetPoint(0);
- if( start1->GetCreateTime() > start2->GetCreateTime() ) return 1;
- return -1; // Two tracks starting at the same time is not possible.
+ TrackPoint* start1 = track1->GetPoint(0);
+ TrackPoint* start2 = track2->GetPoint(0);
+ return start1->GetCreateTime() < start2->GetCreateTime();
}
void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event )
@@ -1616,8 +1615,8 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event )
TrackPoint* tPoint;
TrackPoint* newPoint;
TrackPoint* lastPoint;
- TrackArray mergeList;
- TrackArray deleteList;
+ std::vector<Track*> mergeList;
+ std::vector<Track*> deleteList;
bool runningSkipped = false;
::wxBeginBusyCursor();
@@ -1626,17 +1625,17 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event )
item = m_pTrkListCtrl->GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
if( item == -1 ) break;
Track* track = pTrackList->Item( m_pTrkListCtrl->GetItemData( item ) )->GetData();
- mergeList.Add( track );
+ mergeList.push_back( track );
}
- mergeList.Sort( (CMPFUNC_wxArrayTrackArray) CompareTracks );
+ std::sort(mergeList.begin(), mergeList.end(), CompareTracks );
- targetTrack = mergeList.Item( 0 );
+ targetTrack = mergeList[ 0 ];
lastPoint = targetTrack->GetLastPoint();
- for( unsigned int t = 1; t < mergeList.Count(); t++ ) {
-
- mergeTrack = mergeList.Item( t );
+ for(auto const& mergeTrack: mergeList) {
+ if(mergeTrack == *mergeList.begin())
+ continue;
if( mergeTrack->IsRunning() ) {
runningSkipped = true;
@@ -1654,18 +1653,17 @@ void RouteManagerDialog::OnTrkMenuSelected( wxCommandEvent &event )
lastPoint = newPoint;
}
- deleteList.Add( mergeTrack );
+ deleteList.push_back( mergeTrack );
}
- for( unsigned int i = 0; i < deleteList.Count(); i++ ) {
- Track* deleteTrack = deleteList.Item( i );
+ for(auto const& deleteTrack: deleteList) {
g_pAIS->DeletePersistentTrack( deleteTrack );
pConfig->DeleteConfigTrack( deleteTrack );
g_pRouteMan->DeleteTrack( deleteTrack );
}
- mergeList.Clear();
- deleteList.Clear();
+ mergeList.clear();
+ deleteList.clear();
::wxEndBusyCursor();
diff --git a/src/s57chart.cpp b/src/s57chart.cpp
index 1144b3ddcc..2a363e8771 100644
--- a/src/s57chart.cpp
+++ b/src/s57chart.cpp
@@ -5101,29 +5101,25 @@ wxString s57chart::GetAttributeValueAsString( S57attVal *pAttrVal, wxString Attr
return value;
}
-int s57chart::CompareLights( const void** l1ptr, const void** l2ptr )
+bool s57chart::CompareLights( const S57Light* l1, const S57Light* l2 )
{
- S57Light l1 = *(S57Light*) *l1ptr;
- S57Light l2 = *(S57Light*) *l2ptr;
+ int positionDiff = l1->position.Cmp( l2->position );
+ if( positionDiff != 0 ) return true;
- int positionDiff = l1.position.Cmp( l2.position );
- if( positionDiff != 0 ) return positionDiff;
- double angle1, angle2;
- int attrIndex1 = l1.attributeNames.Index( _T("SECTR1") );
- int attrIndex2 = l2.attributeNames.Index( _T("SECTR1") );
+ int attrIndex1 = l1->attributeNames.Index( _T("SECTR1") );
+ int attrIndex2 = l2->attributeNames.Index( _T("SECTR1") );
// This should put Lights without sectors last in the list.
- if( attrIndex1 == wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return 0;
- if( attrIndex1 != wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return -1;
- if( attrIndex1 == wxNOT_FOUND && attrIndex2 != wxNOT_FOUND ) return 1;
+ if( attrIndex1 == wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return false;
+ if( attrIndex1 != wxNOT_FOUND && attrIndex2 == wxNOT_FOUND ) return true;
+ if( attrIndex1 == wxNOT_FOUND && attrIndex2 != wxNOT_FOUND ) return false;
- l1.attributeValues.Item( attrIndex1 ).ToDouble( &angle1 );
- l2.attributeValues.Item( attrIndex2 ).ToDouble( &angle2 );
+ double angle1, angle2;
+ l1->attributeValues.Item( attrIndex1 ).ToDouble( &angle1 );
+ l2->attributeValues.Item( attrIndex2 ).ToDouble( &angle2 );
- if( angle1 == angle2 ) return 0;
- if( angle1 > angle2 ) return 1;
- return -1;
+ return angle1 < angle2;
}
static const char *type2str( GeoPrim_t type)
@@ -5161,7 +5157,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list )
wxString objText;
wxString lightsHtml;
wxString positionString;
- wxArrayPtrVoid lights;
+ std::vector<S57Light*> lights;
S57Light* curLight = NULL;
for( ListOfObjRazRules::Node *node = rule_list->GetLast(); node; node = node->GetPrevious() ) {
@@ -5252,7 +5248,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list )
curLight = new S57Light;
curLight->position = positionString;
curLight->hasSectors = false;
- lights.Add( curLight );
+ lights.push_back( curLight );
}
}
@@ -5352,30 +5348,31 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list )
}
} // Object for loop
- if( lights.Count() > 0 ) {
+ if( !lights.empty() ) {
// For lights we now have all the info gathered but no HTML output yet, now
// run through the data and build a merged table for all lights.
- lights.Sort( ( CMPFUNC_wxArraywxArrayPtrVoid )( &s57chart::CompareLights ) );
+ std::sort(lights.begin(), lights.end(), s57chart::CompareLights);
wxString lastPos;
- for( unsigned int curLightNo = 0; curLightNo < lights.Count(); curLightNo++ ) {
- S57Light* thisLight = (S57Light*) lights.Item( curLightNo );
+ for(auto const& thisLight: lights) {
int attrIndex;
if( thisLight->position != lastPos ) {
lastPos = thisLight->position;
- if( curLightNo > 0 ) lightsHtml << _T("</table>\n<hr noshade>\n");
+ if( thisLight != *lights.begin() )
+ lightsHtml << _T("</table>\n<hr noshade>\n");
+ curLight++;
lightsHtml << _T("<b>Light</b> <font size=-2>(LIGHTS)</font><br>");
lightsHtml << _T("<font size=-2>") << thisLight->position << _T("</font><br>\n");
- if( curLight && curLight->hasSectors ) lightsHtml
- <<_("<font size=-2>(Sector angles are True Bearings from Seaward)</font><br>");
+ if( curLight && curLight->hasSectors )
+ lightsHtml <<_("<font size=-2>(Sector angles are True Bearings from Seaward)</font><br>");
lightsHtml << _T("<table>");
}
@@ -5386,12 +5383,12 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list )
attrIndex = thisLight->attributeNames.Index( _T("COLOUR") );
if( attrIndex != wxNOT_FOUND ) {
wxString color = thisLight->attributeValues.Item( attrIndex );
- if( color == _T("red (3)") ) lightsHtml
- << _T("<table border=0><tr><td bgcolor=red>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
- if( color == _T("green (4)") ) lightsHtml
- << _T("<table border=0><tr><td bgcolor=green>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
- if( color == _T("white (1)") ) lightsHtml
- << _T("<table border=0><tr><td bgcolor=yellow>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
+ if( color == _T("red (3)") )
+ lightsHtml << _T("<table border=0><tr><td bgcolor=red>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
+ if( color == _T("green (4)") )
+ lightsHtml << _T("<table border=0><tr><td bgcolor=green>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
+ if( color == _T("white (1)") )
+ lightsHtml << _T("<table border=0><tr><td bgcolor=yellow>&nbsp;&nbsp;&nbsp;</td></tr></table> ");
}
lightsHtml << _T("</font></td><td><font size=-1><nobr><b>");
@@ -5474,7 +5471,7 @@ wxString s57chart::CreateObjDescriptions( ListOfObjRazRules* rule_list )
lightsHtml << _T("</table><hr noshade>\n");
ret_val = lightsHtml << ret_val;
- lights.Clear();
+ lights.clear();
}
return ret_val;
diff --git a/src/wxsvg/include/wxSVG/NodeList.h b/src/wxsvg/include/wxSVG/NodeList.h
index 4d91c39cd9..9c4e7b1e6b 100644
--- a/src/wxsvg/include/wxSVG/NodeList.h
+++ b/src/wxsvg/include/wxSVG/NodeList.h
@@ -13,6 +13,6 @@
#include "SVGElement.h"
#include <wx/dynarray.h>
-WX_DECLARE_OBJARRAY(wxSVGElement*, wxNodeList);
+WX_DECLARE_OBJARRAY(wxSVGElementP, wxNodeList);
#endif //wxSVG_NODE_LIST_H
diff --git a/src/wxsvg/include/wxSVG/SVGElement.h b/src/wxsvg/include/wxSVG/SVGElement.h
index c472b4654a..f47fb89659 100644
--- a/src/wxsvg/include/wxSVG/SVGElement.h
+++ b/src/wxsvg/include/wxSVG/SVGElement.h
@@ -18,6 +18,8 @@ class wxSVGDocument;
#include "SVGAnimatedType.h"
#include "SVGDTD.h"
+typedef wxSVGElement* wxSVGElementP;
+
class wxSVGElement:
public wxSvgXmlElement
{
From 9ad3d30db042f0a89673195de92d0c81a50affd3 Mon Sep 17 00:00:00 2001
From: didier <didier@users.sourceforge.net>
Date: Mon, 17 Dec 2018 15:12:38 +0100
Subject: [PATCH] compile without wxUSE_XLOCALE
---
include/OCPNPlatform.h | 2 +-
src/OCPNPlatform.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/OCPNPlatform.h b/include/OCPNPlatform.h
index d6bc4915d1..751ae8590c 100644
--- a/include/OCPNPlatform.h
+++ b/include/OCPNPlatform.h
@@ -160,9 +160,9 @@ class OCPNPlatform
void SetLocaleSearchPrefixes( void );
wxString GetDefaultSystemLocale();
- wxString GetAdjustedAppLocale();
#if wxUSE_XLOCALE
+ wxString GetAdjustedAppLocale();
wxString ChangeLocale(wxString &newLocaleID, wxLocale *presentLocale, wxLocale** newLocale);
#endif
diff --git a/src/OCPNPlatform.cpp b/src/OCPNPlatform.cpp
index 785ff183b5..70ac73306d 100644
--- a/src/OCPNPlatform.cpp
+++ b/src/OCPNPlatform.cpp
@@ -818,6 +818,7 @@ wxString OCPNPlatform::GetDefaultSystemLocale()
}
+#if wxUSE_XLOCALE || !wxCHECK_VERSION(3,0,0)
wxString OCPNPlatform::GetAdjustedAppLocale()
{
wxString adjLocale = g_locale;
@@ -851,7 +852,6 @@ wxString OCPNPlatform::GetAdjustedAppLocale()
}
-#if wxUSE_XLOCALE || !wxCHECK_VERSION(3,0,0)
wxString OCPNPlatform::ChangeLocale(wxString &newLocaleID, wxLocale *presentLocale, wxLocale** newLocale)
{
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment