Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gpxsee for openSUSE:Factory checked in at 2024-04-21 20:28:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gpxsee (Old) and /work/SRC/openSUSE:Factory/.gpxsee.new.26366 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpxsee" Sun Apr 21 20:28:06 2024 rev:122 rq:1169408 version:13.19 Changes: -------- --- /work/SRC/openSUSE:Factory/gpxsee/gpxsee.changes 2024-03-25 21:17:09.149143477 +0100 +++ /work/SRC/openSUSE:Factory/.gpxsee.new.26366/gpxsee.changes 2024-04-21 20:29:41.047212941 +0200 @@ -1,0 +2,9 @@ +Sat Apr 20 21:32:42 CEST 2024 - tu...@cbox.cz + +- Update to version 13.19 + * Added support for FIT course icons. + * Use propper GUI icons on Qt>=6.7 (Windows & Mac). + * Added support for GPX water temperature extension. + * Multiple minor map fixes (IMG & Mapsforge). + +------------------------------------------------------------------- Old: ---- GPXSee-13.18.tar.gz New: ---- GPXSee-13.19.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpxsee.spec ++++++ --- /var/tmp/diff_new_pack.0o57FR/_old 2024-04-21 20:29:41.919244952 +0200 +++ /var/tmp/diff_new_pack.0o57FR/_new 2024-04-21 20:29:41.919244952 +0200 @@ -19,7 +19,7 @@ # See also http://en.opensuse.org/openSUSE:Specfile_guidelines Name: gpxsee -Version: 13.18 +Version: 13.19 Release: 1 Summary: GPS log file visualization and analysis tool License: GPL-3.0-only ++++++ GPXSee-13.18.tar.gz -> GPXSee-13.19.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/.appveyor.yml new/GPXSee-13.19/.appveyor.yml --- old/GPXSee-13.18/.appveyor.yml 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/.appveyor.yml 2024-04-20 19:57:52.000000000 +0200 @@ -1,4 +1,4 @@ -version: 13.18.{build} +version: 13.19.{build} configuration: - Release @@ -12,8 +12,8 @@ - QTDIR: C:\Qt\5.15\msvc2019_64 OPENSSLDIR: C:\OpenSSL-v111-Win64\bin NSISDEF: /DOPENSSL /DANGLE - - QTDIR: C:\Qt\6.5\msvc2019_64 - OPENSSLDIR: C:\OpenSSL-v30-Win64\bin + - QTDIR: C:\Qt\6.7\msvc2019_64 + OPENSSLDIR: C:\OpenSSL-v32-Win64\bin NSISDEF: /DQT6 /DOPENSSL install: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/.github/workflows/osx.yml new/GPXSee-13.19/.github/workflows/osx.yml --- old/GPXSee-13.18/.github/workflows/osx.yml 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/.github/workflows/osx.yml 2024-04-20 19:57:52.000000000 +0200 @@ -39,7 +39,7 @@ - name: Install Qt uses: jurplel/install-qt-action@v3 with: - version: '6.6.1' + version: '6.7.0' modules: qtpositioning qtserialport qtimageformats - name: Create localization run: lrelease gpxsee.pro diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/gpxsee.pro new/GPXSee-13.19/gpxsee.pro --- old/GPXSee-13.18/gpxsee.pro 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/gpxsee.pro 2024-04-20 19:57:52.000000000 +0200 @@ -3,7 +3,7 @@ } else { TARGET = GPXSee } -VERSION = 13.18 +VERSION = 13.19 QT += core \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/icons/formats/scripts/icns.sh new/GPXSee-13.19/icons/formats/scripts/icns.sh --- old/GPXSee-13.18/icons/formats/scripts/icns.sh 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/icons/formats/scripts/icns.sh 2024-04-20 19:57:52.000000000 +0200 @@ -4,7 +4,7 @@ IFS=":"; set $e EXT=`echo $1 | tr /a-z/ /A-Z/` - sed -e "s/\$EXTENSION/$EXT/" -e "s/\$COLOR/$2/" icon-template.svg > $1.svg + sed -e "s/\$EXT/$EXT/" -e "s/\$COLOR/$2/" icon-template.svg > $1.svg ICONSET=$1.iconset mkdir $ICONSET diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/icons/formats/scripts/ico.sh new/GPXSee-13.19/icons/formats/scripts/ico.sh --- old/GPXSee-13.18/icons/formats/scripts/ico.sh 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/icons/formats/scripts/ico.sh 2024-04-20 19:57:52.000000000 +0200 @@ -4,7 +4,7 @@ IFS=":"; set $e EXT=`echo $1 | tr /a-z/ /A-Z/` - sed -e "s/\$EXTENSION/$EXT/" -e "s/\$COLOR/$2/" icon-template.svg > $1.svg + sed -e "s/\$EXT/$EXT/" -e "s/\$COLOR/$2/" icon-template.svg > $1.svg convert -density 400 -background none $1.svg -define icon:auto-resize $1.ico rm $1.svg done < extensions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/icons/formats/scripts/icon-template.svg new/GPXSee-13.19/icons/formats/scripts/icon-template.svg --- old/GPXSee-13.18/icons/formats/scripts/icon-template.svg 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/icons/formats/scripts/icon-template.svg 2024-04-20 19:57:52.000000000 +0200 @@ -13,8 +13,8 @@ <g transform="translate(16.573463,124.9782)"> <rect y="0" x="0" id="textrect" height="50" width="120" style="fill:$COLOR;fill-opacity:1;stroke:none;"/> <!-- - <text y="28" x="60" dominant-baseline="central" text-anchor="middle" style="fill:#FFFFFF;font-size:39px;font-family:Helvetica;font-weight:bold;">$EXTENSION</text> + <text y="28" x="60" dominant-baseline="central" text-anchor="middle" style="fill:#FFFFFF;font-size:39px;font-family:Helvetica;font-weight:bold;">$EXT</text> --> - <text y="25" x="60" dy="0.36em" text-anchor="middle" style="fill:#FFFFFF;font-size:39px;font-family:Helvetica;font-weight:bold;">$EXTENSION</text> + <text y="25" x="60" dy="0.36em" text-anchor="middle" style="fill:#FFFFFF;font-size:39px;font-family:Helvetica;font-weight:bold;">$EXT</text> </g> </svg> Binary files old/GPXSee-13.18/icons/symbols/Alert.png and new/GPXSee-13.19/icons/symbols/Alert.png differ Binary files old/GPXSee-13.18/icons/symbols/Campground.png and new/GPXSee-13.19/icons/symbols/Campground.png differ Binary files old/GPXSee-13.18/icons/symbols/Checkpoint.png and new/GPXSee-13.19/icons/symbols/Checkpoint.png differ Binary files old/GPXSee-13.18/icons/symbols/Danger.png and new/GPXSee-13.19/icons/symbols/Danger.png differ Binary files old/GPXSee-13.18/icons/symbols/First Aid.png and new/GPXSee-13.19/icons/symbols/First Aid.png differ Binary files old/GPXSee-13.18/icons/symbols/First Category.png and new/GPXSee-13.19/icons/symbols/First Category.png differ Binary files old/GPXSee-13.18/icons/symbols/Flag, Blue.png and new/GPXSee-13.19/icons/symbols/Flag, Blue.png differ Binary files old/GPXSee-13.18/icons/symbols/Flag, Red.png and new/GPXSee-13.19/icons/symbols/Flag, Red.png differ Binary files old/GPXSee-13.18/icons/symbols/Flag.png and new/GPXSee-13.19/icons/symbols/Flag.png differ Binary files old/GPXSee-13.18/icons/symbols/Food.png and new/GPXSee-13.19/icons/symbols/Food.png differ Binary files old/GPXSee-13.18/icons/symbols/Fourth Category.png and new/GPXSee-13.19/icons/symbols/Fourth Category.png differ Binary files old/GPXSee-13.18/icons/symbols/Gear.png and new/GPXSee-13.19/icons/symbols/Gear.png differ Binary files old/GPXSee-13.18/icons/symbols/Hors Category.png and new/GPXSee-13.19/icons/symbols/Hors Category.png differ Binary files old/GPXSee-13.18/icons/symbols/Info.png and new/GPXSee-13.19/icons/symbols/Info.png differ Binary files old/GPXSee-13.18/icons/symbols/Left.png and new/GPXSee-13.19/icons/symbols/Left.png differ Binary files old/GPXSee-13.18/icons/symbols/Meeting Spot.png and new/GPXSee-13.19/icons/symbols/Meeting Spot.png differ Binary files old/GPXSee-13.18/icons/symbols/Obstacle.png and new/GPXSee-13.19/icons/symbols/Obstacle.png differ Binary files old/GPXSee-13.18/icons/symbols/Overlook.png and new/GPXSee-13.19/icons/symbols/Overlook.png differ Binary files old/GPXSee-13.18/icons/symbols/Rest Area.png and new/GPXSee-13.19/icons/symbols/Rest Area.png differ Binary files old/GPXSee-13.18/icons/symbols/Right.png and new/GPXSee-13.19/icons/symbols/Right.png differ Binary files old/GPXSee-13.18/icons/symbols/Second Category.png and new/GPXSee-13.19/icons/symbols/Second Category.png differ Binary files old/GPXSee-13.18/icons/symbols/Segment End.png and new/GPXSee-13.19/icons/symbols/Segment End.png differ Binary files old/GPXSee-13.18/icons/symbols/Segment Start.png and new/GPXSee-13.19/icons/symbols/Segment Start.png differ Binary files old/GPXSee-13.18/icons/symbols/Service.png and new/GPXSee-13.19/icons/symbols/Service.png differ Binary files old/GPXSee-13.18/icons/symbols/Sharp Curve.png and new/GPXSee-13.19/icons/symbols/Sharp Curve.png differ Binary files old/GPXSee-13.18/icons/symbols/Sharp Left.png and new/GPXSee-13.19/icons/symbols/Sharp Left.png differ Binary files old/GPXSee-13.18/icons/symbols/Sharp Right.png and new/GPXSee-13.19/icons/symbols/Sharp Right.png differ Binary files old/GPXSee-13.18/icons/symbols/Shelter.png and new/GPXSee-13.19/icons/symbols/Shelter.png differ Binary files old/GPXSee-13.18/icons/symbols/Slight Left.png and new/GPXSee-13.19/icons/symbols/Slight Left.png differ Binary files old/GPXSee-13.18/icons/symbols/Slight Right.png and new/GPXSee-13.19/icons/symbols/Slight Right.png differ Binary files old/GPXSee-13.18/icons/symbols/Sprint.png and new/GPXSee-13.19/icons/symbols/Sprint.png differ Binary files old/GPXSee-13.18/icons/symbols/Steep Incline.png and new/GPXSee-13.19/icons/symbols/Steep Incline.png differ Binary files old/GPXSee-13.18/icons/symbols/Store.png and new/GPXSee-13.19/icons/symbols/Store.png differ Binary files old/GPXSee-13.18/icons/symbols/Straight.png and new/GPXSee-13.19/icons/symbols/Straight.png differ Binary files old/GPXSee-13.18/icons/symbols/Third Category.png and new/GPXSee-13.19/icons/symbols/Third Category.png differ Binary files old/GPXSee-13.18/icons/symbols/Toilet.png and new/GPXSee-13.19/icons/symbols/Toilet.png differ Binary files old/GPXSee-13.18/icons/symbols/Transport.png and new/GPXSee-13.19/icons/symbols/Transport.png differ Binary files old/GPXSee-13.18/icons/symbols/U-Turn.png and new/GPXSee-13.19/icons/symbols/U-Turn.png differ Binary files old/GPXSee-13.18/icons/symbols/Valley.png and new/GPXSee-13.19/icons/symbols/Valley.png differ Binary files old/GPXSee-13.18/icons/symbols/Water.png and new/GPXSee-13.19/icons/symbols/Water.png differ Binary files old/GPXSee-13.18/icons/symbols/Waypoint.png and new/GPXSee-13.19/icons/symbols/Waypoint.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/lang/gpxsee_zh.ts new/GPXSee-13.19/lang/gpxsee_zh.ts --- old/GPXSee-13.18/lang/gpxsee_zh.ts 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/lang/gpxsee_zh.ts 2024-04-20 19:57:52.000000000 +0200 @@ -571,12 +571,12 @@ <message> <location filename="../src/GUI/gui.cpp" line="457"/> <source>Download data DEM</source> - <translation type="unfinished"></translation> + <translation>ä¸è½½ DEM æ°æ®</translation> </message> <message> <location filename="../src/GUI/gui.cpp" line="463"/> <source>Download map DEM</source> - <translation type="unfinished"></translation> + <translation>ä¸è½½ DEM å°å¾</translation> </message> <message> <location filename="../src/GUI/gui.cpp" line="468"/> @@ -586,7 +586,7 @@ <message> <location filename="../src/GUI/gui.cpp" line="471"/> <source>Show hillshading</source> - <translation type="unfinished"></translation> + <translation>æ¾ç¤ºå±±ä½é´å½±</translation> </message> <message> <location filename="../src/GUI/gui.cpp" line="480"/> @@ -1034,13 +1034,13 @@ <message> <location filename="../src/GUI/gui.cpp" line="1986"/> <source>DEM tiles download limit exceeded. If you really need data for such a huge area, download the files manually.</source> - <translation type="unfinished"></translation> + <translation>å·²è¶ è¿ DEM ç¦çä¸è½½éé¢ã妿¨ç¡®é大鿰æ®ï¼è¯·æå¨ä¸è½½ã</translation> </message> <message numerus="yes"> <location filename="../src/GUI/gui.cpp" line="1989"/> <source>Download %n DEM tiles?</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform>ä¸è½½ %n DEM ç¦çï¼</numerusform> </translation> </message> <message> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/pkg/windows/gpxsee64.nsi new/GPXSee-13.19/pkg/windows/gpxsee64.nsi --- old/GPXSee-13.18/pkg/windows/gpxsee64.nsi 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/pkg/windows/gpxsee64.nsi 2024-04-20 19:57:52.000000000 +0200 @@ -37,7 +37,7 @@ ; The name of the installer Name "GPXSee" ; Program version -!define VERSION "13.18" +!define VERSION "13.19" ; The file to write OutFile "GPXSee-${VERSION}_x64.exe" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/GUI/app.cpp new/GPXSee-13.19/src/GUI/app.cpp --- old/GPXSee-13.18/src/GUI/app.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/GUI/app.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -29,9 +29,9 @@ { #if defined(Q_OS_WIN32) || defined(Q_OS_MAC) setApplicationName(APP_NAME); -#else +#else // Q_OS_WIN32 || Q_OS_MAC setApplicationName(QString(APP_NAME).toLower()); -#endif +#endif // Q_OS_WIN32 || Q_OS_MAC setApplicationVersion(APP_VERSION); QTranslator *app = new QTranslator(this); @@ -65,6 +65,9 @@ loadPCSs(); Waypoint::loadSymbolIcons(ProgramPaths::symbolsDir()); +#if defined(Q_OS_WIN32) || defined(Q_OS_MAC) + QIcon::setThemeName(APP_NAME); +#endif // Q_OS_WIN32 || Q_OS_MAC #if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) QIcon::setFallbackThemeName(APP_NAME); #endif // QT 5.12 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/GUI/stylecombobox.cpp new/GPXSee-13.19/src/GUI/stylecombobox.cpp --- old/GPXSee-13.18/src/GUI/stylecombobox.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/GUI/stylecombobox.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -13,15 +13,18 @@ QIcon StyleComboBox::icon(Qt::PenStyle style) { - QPixmap pm(iconSize()); + qreal ratio(devicePixelRatioF()); + QSize size(iconSize()); + QPixmap pm(size * ratio); + pm.setDevicePixelRatio(ratio); pm.fill(Qt::transparent); QBrush brush(QPalette().brush(QPalette::Active, QPalette::WindowText)); - QPen pen(brush, pm.height() / LINE_WIDTH_RATIO, style); + QPen pen(brush, size.height() / LINE_WIDTH_RATIO, style); QPainter painter(&pm); painter.setPen(pen); - painter.drawLine(0, pm.height() / 2, pm.width(), pm.height() / 2); + painter.drawLine(0, size.height() / 2, size.width(), size.height() / 2); return QIcon(pm); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/GUI/waypointitem.cpp new/GPXSee-13.19/src/GUI/waypointitem.cpp --- old/GPXSee-13.18/src/GUI/waypointitem.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/GUI/waypointitem.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -170,8 +170,7 @@ if (_font.bold()) painter->drawPixmap(-_icon->width() * 0.625, icon.isNull() ? -_icon->height() * 1.25 : -_icon->height() * 0.625, - _icon->scaled(_icon->width() * 1.25, _icon->height() * 1.25, - Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _icon->scaled(_icon->width() * 1.25, _icon->height() * 1.25)); else painter->drawPixmap(-_icon->width()/2.0, icon.isNull() ? -_icon->height() : -_icon->height()/2, *_icon); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/data/data.cpp new/GPXSee-13.19/src/data/data.cpp --- old/GPXSee-13.18/src/data/data.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/data/data.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -106,7 +106,7 @@ _errorLine = 0; if (!file.open(QFile::ReadOnly)) { - _errorString = qPrintable(file.errorString()); + _errorString = file.errorString(); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/data/fitparser.cpp new/GPXSee-13.19/src/data/fitparser.cpp --- old/GPXSee-13.18/src/data/fitparser.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/data/fitparser.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -64,7 +64,7 @@ SegmentData segment; }; -static QMap<int, QString> coursePointDescInit() +static QMap<int, QString> coursePointSymbolsInit() { QMap<int, QString> map; @@ -76,28 +76,70 @@ map.insert(6, "Left"); map.insert(7, "Right"); map.insert(8, "Straight"); - map.insert(9, "First aid"); - map.insert(10, "Fourth category"); - map.insert(11, "Third category"); - map.insert(12, "Second category"); - map.insert(13, "First category"); - map.insert(14, "Hors category"); + map.insert(9, "First Aid"); + map.insert(10, "Fourth Category"); + map.insert(11, "Third Category"); + map.insert(12, "Second Category"); + map.insert(13, "First Category"); + map.insert(14, "Hors Category"); map.insert(15, "Sprint"); - map.insert(16, "Left fork"); - map.insert(17, "Right fork"); - map.insert(18, "Middle fork"); - map.insert(19, "Slight left"); - map.insert(20, "Sharp left"); - map.insert(21, "Slight right"); - map.insert(22, "Sharp right"); + map.insert(16, "Left Fork"); + map.insert(17, "Right Fork"); + map.insert(18, "Middle Fork"); + map.insert(19, "Slight Left"); + map.insert(20, "Sharp Left"); + map.insert(21, "Slight Right"); + map.insert(22, "Sharp Right"); map.insert(23, "U-Turn"); - map.insert(24, "Segment start"); - map.insert(25, "Segment end"); + map.insert(24, "Segment Start"); + map.insert(25, "Segment End"); + map.insert(27, "Campground"); + map.insert(28, "Aid Station"); + map.insert(29, "Rest Area"); + map.insert(30, "General Distance"); + map.insert(31, "Service"); + map.insert(32, "Energy Gel"); + map.insert(33, "Sports Drink"); + map.insert(34, "Mile Marker"); + map.insert(35, "Checkpoint"); + map.insert(36, "Shelter"); + map.insert(37, "Meeting Spot"); + map.insert(38, "Overlook"); + map.insert(39, "Toilet"); + map.insert(40, "Shower"); + map.insert(41, "Gear"); + map.insert(42, "Sharp Curve"); + map.insert(43, "Steep Incline"); + map.insert(44, "Tunnel"); + map.insert(45, "Bridge"); + map.insert(46, "Obstacle"); + map.insert(47, "Crossing"); + map.insert(48, "Store"); + map.insert(49, "Transition"); + map.insert(50, "Navaid"); + map.insert(51, "Transport"); + map.insert(52, "Alert"); + map.insert(53, "Info"); return map; } -static QMap<int, QString> coursePointDesc = coursePointDescInit(); +static QMap<int, QString> locationPointSymbolsInit() +{ + QMap<int, QString> map; + + /* The location symbols are a typical GARMIN mess. Every GPS unit + has probably its own list, so we only add a few generic icons seen + "in the wild" most often. */ + map.insert(94, "Flag, Blue"); + map.insert(95, "Flag, Green"); + map.insert(96, "Flag, Red"); + + return map; +} + +static QMap<int, QString> coursePointSymbols = coursePointSymbolsInit(); +static QMap<int, QString> locationPointSymbols = locationPointSymbolsInit(); bool FITParser::readData(QFile *file, char *data, size_t size) @@ -244,7 +286,7 @@ ctx.len -= field->size; ret = (ba.size() == field->size); val = ret ? ba : QString(); - valid = !ba.isEmpty();} + valid = (!ba.isEmpty() && ba.at(0) != 0);} break; default: ret = skipValue(ctx, field->size); @@ -330,8 +372,8 @@ } else if (def->globalId == COURSE_POINT) { switch (field->id) { case 1: - waypoint.setTimestamp(QDateTime::fromSecsSinceEpoch(val.toUInt() - + 631065600, Qt::UTC)); + waypoint.setTimestamp(QDateTime::fromSecsSinceEpoch( + val.toUInt() + 631065600, Qt::UTC)); break; case 2: waypoint.rcoordinates().setLat( @@ -342,7 +384,7 @@ (val.toInt() / (double)0x7fffffff) * 180); break; case 5: - waypoint.setDescription(coursePointDesc.value(val.toUInt())); + waypoint.setSymbol(coursePointSymbols.value(val.toUInt())); break; case 6: waypoint.setName(val.toString()); @@ -361,6 +403,9 @@ waypoint.rcoordinates().setLon( (val.toInt() / (double)0x7fffffff) * 180); break; + case 3: + waypoint.setSymbol(locationPointSymbols.value(val.toUInt())); + break; case 4: waypoint.setElevation((val.toUInt() / 5.0) - 500); break; @@ -386,8 +431,8 @@ } } else if (def->globalId == RECORD_MESSAGE) { if (ctx.trackpoint.coordinates().isValid()) { - ctx.trackpoint.setTimestamp(QDateTime::fromSecsSinceEpoch(ctx.timestamp - + 631065600, Qt::UTC)); + ctx.trackpoint.setTimestamp(QDateTime::fromSecsSinceEpoch( + ctx.timestamp + 631065600, Qt::UTC)); ctx.trackpoint.setRatio(ctx.ratio); ctx.segment.append(ctx.trackpoint); ctx.trackpoint = Trackpoint(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/data/geojsonparser.cpp new/GPXSee-13.19/src/data/geojsonparser.cpp --- old/GPXSee-13.18/src/data/geojsonparser.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/data/geojsonparser.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -603,6 +603,8 @@ bool GeoJSONParser::feature(const QJsonObject &object, const Projection &parent, QList<TrackData> &tracks, QList<Area> &areas, QVector<Waypoint> &waypoints) { + if (object["geometry"].isNull()) + return true; if (!object["geometry"].isObject()) { _errorString = "Invalid/missing Feature geometry object"; return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/data/gpxparser.cpp new/GPXSee-13.19/src/data/gpxparser.cpp --- old/GPXSee-13.18/src/data/gpxparser.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/data/gpxparser.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -76,6 +76,9 @@ trackpoint.setHeartRate(number()); else if (_reader.name() == QLatin1String("atemp")) trackpoint.setTemperature(number()); + else if (_reader.name() == QLatin1String("wtemp") + && !trackpoint.hasTemperature()) + trackpoint.setTemperature(number()); else if (_reader.name() == QLatin1String("cad")) trackpoint.setCadence(number()); else if (_reader.name() == QLatin1String("speed")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/map/IMG/lblfile.cpp new/GPXSee-13.19/src/map/IMG/lblfile.cpp --- old/GPXSee-13.18/src/map/IMG/lblfile.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/map/IMG/lblfile.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -7,53 +7,36 @@ enum Charset {Normal, Symbol, Special}; -static quint8 NORMAL_CHARS[] = { - ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'X', 'Y', 'Z', '~', '~', '~', ' ', ' ', - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', '~', '~', '~', '~', '~', '~' -}; - -static quint8 SYMBOL_CHARS[] = { - '@', '!', '"', '#', '$', '%', '&', '\'', - '(', ')', '*', '+', ',', '-', '.', '/', - '~', '~', '~', '~', '~', '~', '~', '~', - '~', '~', ':', ';', '<', '=', '>', '?', - '~', '~', '~', '~', '~', '~', '~', '~', - '~', '~', '~', '[', '\\', ']', '^', '_' -}; - -static quint8 SPECIAL_CHARS[] = { - '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', - 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', - 'x', 'y', 'z', '~', '~', '~', '~', '~', - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', '~', '~', '~', '~', '~', '~' -}; - static bool isAllUpperCase(const QString &str) { if (str.isEmpty()) return false; - for (int i = 0; i < str.size(); i++) - if (str.at(i).isLetter() && !(str.at(i).isUpper() - || str.at(i) == QChar(0x00DF))) + + for (int i = 0; i < str.size(); i++) { + QChar c(str.at(i)); + + if (c.isLetter() && !(c.isUpper() || c == QChar(0x00DF))) return false; + } return true; } static QString capitalized(const QString &str) { - QString ret(str); - for (int i = 0; i < str.size(); i++) - if (i && !str.at(i-1).isSpace()) - ret[i] = str.at(i).toLower(); - else - ret[i] = str.at(i); + QString ret; + + ret.resize(str.size()); + + if (!str.isEmpty()) + ret[0] = str.at(0); + + for (int i = 1; i < str.size(); i++) { + QChar last(str.at(i-1)); + QChar c(str.at(i)); + + ret[i] = (last.isSpace() || last == '(') ? c : c.toLower(); + } return ret; } @@ -65,11 +48,10 @@ return ok ? QByteArray::number(qRound(number * 0.3048)) : str; } + LBLFile::~LBLFile() { delete _huffmanText; - delete[] _table; - delete[] _rasters; } bool LBLFile::load(Handle &hdl, const RGNFile *rgn, Handle &rgnHdl) @@ -93,10 +75,10 @@ return false; if (size && recordSize) { - _table = new quint32[size / recordSize]; + _table.resize(size / recordSize); if (!seek(hdl, offset)) return false; - for (quint32 i = 0; i < size / recordSize; i++) { + for (quint32 i = 0; i < _table.size(); i++) { if (!readVUInt32(hdl, recordSize, _table[i])) return false; } @@ -129,12 +111,10 @@ void LBLFile::clear() { + _table = QVector<quint32>(); + _rasters = QVector<Image>(); delete _huffmanText; - delete[] _table; - delete[] _rasters; _huffmanText = 0; - _table = 0; - _rasters = 0; } Label LBLFile::str2label(const QVector<quint8> &str, bool capitalize, @@ -183,6 +163,30 @@ Label LBLFile::label6b(const SubFile *file, Handle &fileHdl, quint32 size, bool capitalize, bool convert) const { + static const quint8 NORMAL_CHARS[] = { + ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '~', '~', '~', ' ', ' ', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '~', '~', '~', '~', '~', '~' + }; + static const quint8 SYMBOL_CHARS[] = { + '@', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '~', '~', '~', '~', '~', '~', '~', '~', + '~', '~', ':', ';', '<', '=', '>', '?', + '~', '~', '~', '~', '~', '~', '~', '~', + '~', '~', '~', '[', '\\', ']', '^', '_' + }; + static const quint8 SPECIAL_CHARS[] = { + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', '~', '~', '~', '~', '~', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '~', '~', '~', '~', '~', '~' + }; Shield::Type shieldType = Shield::None; QByteArray label, shieldLabel; QByteArray *bap = &label; @@ -266,42 +270,41 @@ Label LBLFile::labelHuffman(Handle &hdl, const SubFile *file, Handle &fileHdl, quint32 size, bool capitalize, bool convert) { - QVector<quint8> str; + QVector<quint8> tpl; - if (!_huffmanText->decode(file, fileHdl, size, str)) + if (!_huffmanText->decode(file, fileHdl, size, tpl)) return Label(); - if (!_table) - return str2label(str, capitalize, convert); + if (!_table.size()) + return str2label(tpl, capitalize, convert); - QVector<quint8> str2; - for (int i = 0; i < str.size(); i++) { - quint32 val = _table[str.at(i)]; - if (val) { - quint32 off = _base.offset + ((val & 0x7fffff) << _shift); - if (!seek(hdl, off)) - return Label(); + QVector<quint8> str; - if (str2.size() && str2.back() == '\0') - str2[str2.size() - 1] = ' '; - else if (str2.size()) - str2.append(' '); + for (int i = 0; i < tpl.size(); i++) { + quint8 c(tpl.at(i)); + quint32 val = (c < _table.size()) ? _table.at(c) : 0; - if (!_huffmanText->decode(this, hdl, _base.offset + _base.size - off, - str2)) + if (val) { + if (str.size() && str.back() == '\0') + str.back() = ' '; + else if (str.size()) + str.append(' '); + + quint32 offset = _base.offset + ((val & 0x7fffff) << _shift); + quint32 limit = _base.offset + _base.size - offset; + if (!seek(hdl, offset)) + return Label(); + if (!_huffmanText->decode(this, hdl, limit, str)) return Label(); } else { - if (str.at(i) == 7) { - str2.append(0); - break; - } - if (str2.size() && str2.back() == '\0') - str2[str2.size() - 1] = ' '; - str2.append(str.at(i)); + if (str.size() && str.back() == '\0') + str.back() = ' '; + + str.append(c); } } - return str2label(str2, capitalize, convert); + return str2label(str, capitalize, convert); } Label LBLFile::label(Handle &hdl, quint32 offset, bool poi, bool capitalize, @@ -347,15 +350,15 @@ quint32 recordSize) { quint32 prev, cur; + quint32 imgCount = size / recordSize; - _imgCount = size / recordSize; - _imgIdSize = byteSize(_imgCount - 1); - _rasters = new Image[_imgCount]; + _imgIdSize = byteSize(imgCount - 1); + _rasters.resize(imgCount); if (!(seek(hdl, offset) && readVUInt32(hdl, recordSize, prev))) return false; - for (quint32 i = 1; i < _imgCount; i++) { + for (quint32 i = 1; i < imgCount; i++) { if (!readVUInt32(hdl, recordSize, cur)) return false; @@ -365,8 +368,8 @@ prev = cur; } - _rasters[_imgCount-1].offset = prev; - _rasters[_imgCount-1].size = _img.size - prev; + _rasters[imgCount-1].offset = prev; + _rasters[imgCount-1].size = _img.size - prev; return true; } @@ -375,14 +378,14 @@ { QPixmap pm; - if (id >= _imgCount) + if (id >= _rasters.size()) return pm; - if (!seek(hdl, _img.offset + _rasters[id].offset)) + if (!seek(hdl, _img.offset + _rasters.at(id).offset)) return pm; QByteArray ba; - ba.resize(_rasters[id].size); - if (!read(hdl, ba.data(), _rasters[id].size)) + ba.resize(_rasters.at(id).size); + if (!read(hdl, ba.data(), ba.size())) return pm; pm.loadFromData(ba, "jpeg"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/map/IMG/lblfile.h new/GPXSee-13.19/src/map/IMG/lblfile.h --- old/GPXSee-13.18/src/map/IMG/lblfile.h 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/map/IMG/lblfile.h 2024-04-20 19:57:52.000000000 +0200 @@ -16,14 +16,14 @@ { public: LBLFile(const IMGData *img) - : SubFile(img), _huffmanText(0), _table(0), _rasters(0), _imgIdSize(0), - _poiShift(0), _shift(0), _encoding(0) {} + : SubFile(img), _huffmanText(0), _imgIdSize(0), _poiShift(0), _shift(0), + _encoding(0) {} LBLFile(const QString *path) - : SubFile(path), _huffmanText(0), _table(0), _rasters(0), _imgIdSize(0), - _poiShift(0), _shift(0), _encoding(0) {} + : SubFile(path), _huffmanText(0), _imgIdSize(0), _poiShift(0), _shift(0), + _encoding(0) {} LBLFile(const SubFile *gmp, quint32 offset) - : SubFile(gmp, offset), _huffmanText(0), _table(0), _rasters(0), - _imgIdSize(0), _poiShift(0), _shift(0), _encoding(0) {} + : SubFile(gmp, offset), _huffmanText(0), _imgIdSize(0), _poiShift(0), + _shift(0), _encoding(0) {} ~LBLFile(); bool load(Handle &hdl, const RGNFile *rgn, Handle &rgnHdl); @@ -55,11 +55,10 @@ quint32 recordSize); HuffmanText *_huffmanText; - quint32 *_table; - Image *_rasters; + QVector<Image> _rasters; + QVector<quint32> _table; TextCodec _codec; Section _base, _poi, _img; - quint32 _imgCount; quint8 _imgIdSize; quint8 _poiShift; quint8 _shift; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/map/IMG/style.cpp new/GPXSee-13.19/src/map/IMG/style.cpp --- old/GPXSee-13.18/src/map/IMG/style.cpp 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/map/IMG/style.cpp 2024-04-20 19:57:52.000000000 +0200 @@ -187,7 +187,7 @@ _polygons[TYPE(0x14)] = Polygon(QBrush(QColor(0xca, 0xdf, 0xaf))); _polygons[TYPE(0x15)] = Polygon(QBrush(QColor(0xca, 0xdf, 0xaf))); _polygons[TYPE(0x16)] = Polygon(QBrush(QColor(0x9a, 0xc2, 0x69), - Qt::Dense5Pattern)); + Qt::BDiagPattern)); _polygons[TYPE(0x17)] = Polygon(QBrush(QColor(0xe4, 0xef, 0xcf))); _polygons[TYPE(0x18)] = Polygon(QBrush(QColor(0xe3, 0xed, 0xc6))); _polygons[TYPE(0x19)] = Polygon(QBrush(QColor(0xe3, 0xed, 0xc6)), @@ -195,9 +195,9 @@ _polygons[TYPE(0x1a)] = Polygon(QBrush(QColor(0, 0, 0), Qt::Dense6Pattern), QPen(QColor(0xcd, 0xcc, 0xc4), 1)); _polygons[TYPE(0x1e)] = Polygon(QBrush(QColor(0x9a, 0xc2, 0x69), - Qt::Dense5Pattern)); + Qt::BDiagPattern)); _polygons[TYPE(0x1f)] = Polygon(QBrush(QColor(0x9a, 0xc2, 0x69), - Qt::Dense5Pattern)); + Qt::BDiagPattern)); _polygons[TYPE(0x28)] = Polygon(QBrush(QColor(0x9f, 0xc4, 0xe1))); _polygons[TYPE(0x32)] = Polygon(QBrush(QColor(0x9f, 0xc4, 0xe1))); _polygons[TYPE(0x3c)] = Polygon(QBrush(QColor(0x9f, 0xc4, 0xe1))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/GPXSee-13.18/src/map/mapsforge/rastertile.h new/GPXSee-13.19/src/map/mapsforge/rastertile.h --- old/GPXSee-13.18/src/map/mapsforge/rastertile.h 2024-03-23 20:59:50.000000000 +0100 +++ new/GPXSee-13.19/src/map/mapsforge/rastertile.h 2024-04-20 19:57:52.000000000 +0200 @@ -23,17 +23,13 @@ class RasterTile { public: - /* Most Mapsforge themes expect the zoom levels to be offset by one from - the standard OSM zoom levels! We decrease the zoom level internaly - here when initializing _zoom and return the propper (increased) value - back in zoom() */ RasterTile(const Projection &proj, const Transform &transform, const Style *style, MapData *data, int zoom, const QRect &rect, qreal ratio, bool hillShading) : _proj(proj), _transform(transform), _style(style), _data(data), - _zoom(zoom - 1), _rect(rect), _ratio(ratio), _hillShading(hillShading) {} + _zoom(zoom), _rect(rect), _ratio(ratio), _hillShading(hillShading) {} - int zoom() const {return _zoom + 1;} + int zoom() const {return _zoom;} QPoint xy() const {return _rect.topLeft();} const QPixmap &pixmap() const {return _pixmap;} ++++++ PKGBUILD ++++++ --- /var/tmp/diff_new_pack.0o57FR/_old 2024-04-21 20:29:42.447264335 +0200 +++ /var/tmp/diff_new_pack.0o57FR/_new 2024-04-21 20:29:42.451264482 +0200 @@ -1,5 +1,5 @@ pkgname=gpxsee -pkgver=13.18 +pkgver=13.19 pkgrel=1 pkgdesc='GPS log files visualizing and analyzing tool' arch=('i686' 'x86_64') ++++++ debian.changelog ++++++ --- /var/tmp/diff_new_pack.0o57FR/_old 2024-04-21 20:29:42.475265363 +0200 +++ /var/tmp/diff_new_pack.0o57FR/_new 2024-04-21 20:29:42.479265510 +0200 @@ -1,3 +1,12 @@ +gpxsee (13.19) stable; urgency=low + + * Added support for FIT course icons. + * Use propper GUI icons on Qt>=6.7 (Windows & Mac). + * Added support for GPX water temperature extension. + * Multiple minor map fixes (IMG & Mapsforge). + + -- Martin Tuma <tu...@cbox.cz> Sat, 20 Apr 2024 21:38:39 +0200 + gpxsee (13.18) stable; urgency=low * Added support for arbitrary CRSs in GeoJSON files. ++++++ gpxsee.dsc ++++++ --- /var/tmp/diff_new_pack.0o57FR/_old 2024-04-21 20:29:42.539267713 +0200 +++ /var/tmp/diff_new_pack.0o57FR/_new 2024-04-21 20:29:42.543267860 +0200 @@ -1,10 +1,10 @@ Format: 1.0 Source: gpxsee -Version: 13.18-1 +Version: 13.19-1 Binary: gpxsee Maintainer: Martin Tuma <tu...@cbox.cz> Architecture: any Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-private-dev, qtbase5-dev-tools, qt5-qmake, qttools5-dev-tools, libqt5opengl5-dev, qtpositioning5-dev, libqt5svg5-dev, libqt5serialport5-dev Files: - 00000000000000000000000000000000 0 GPXSee-13.18.tar.gz + 00000000000000000000000000000000 0 GPXSee-13.19.tar.gz