diff --git a/defs.h b/defs.h index feba72f4c..0b50d1f95 100644 --- a/defs.h +++ b/defs.h @@ -319,10 +319,10 @@ struct bounds { double min_alt; /* -unknown_alt => invalid */ }; -#define WAYPT_SET(wpt,member,val) do { (wpt)->member = (val); wpt->wpt_flags.member = 1; } while (0) -#define WAYPT_GET(wpt,member,def) ((wpt->wpt_flags.member) ? (wpt->member) : (def)) +#define WAYPT_SET(wpt,member,val) do { (wpt)->member = (val); (wpt)->wpt_flags.member = 1; } while (0) +#define WAYPT_GET(wpt,member,def) (((wpt)->wpt_flags.member) ? ((wpt)->member) : (def)) #define WAYPT_UNSET(wpt,member) wpt->wpt_flags.member = 0 -#define WAYPT_HAS(wpt,member) (wpt->wpt_flags.member) +#define WAYPT_HAS(wpt,member) ((wpt)->wpt_flags.member) /* * This is a waypoint, as stored in the GPSR. It tries to not @@ -1083,7 +1083,7 @@ int color_to_bbggrr(const char* cname); * A constant for unknown altitude. It's tempting to just use zero * but that's not very nice for the folks near sea level. */ -#define unknown_alt -99999999.0 -#define unknown_color -1 +constexpr double unknown_alt = -99999999.0; +constexpr int unknown_color = -1; #endif // DEFS_H_INCLUDED_ diff --git a/dg-100.cc b/dg-100.cc index 924fdc0fb..037dec97c 100644 --- a/dg-100.cc +++ b/dg-100.cc @@ -228,8 +228,7 @@ Dg100Format::process_gpsfile(uint8_t data[], route_head** track) const * with a scaling factor of 100, in km/h. * The waypoint struct wants the speed as a * floating-point number, in m/s. */ - wpt->speed = KPH_TO_MPS(be_read32(data + i + 16) / 100.0); - wpt->wpt_flags.speed = 1; + WAYPT_SET(wpt, speed, KPH_TO_MPS(be_read32(data + i + 16) / 100.0)); } if (style >= 2) { diff --git a/garmin.cc b/garmin.cc index cac9428b6..8dc14600e 100644 --- a/garmin.cc +++ b/garmin.cc @@ -640,10 +640,8 @@ pvt2wpt(GPS_PPvt_Data pvt, Waypoint* wpt) wpt->altitude = pvt->alt; wpt->latitude = pvt->lat; wpt->longitude = pvt->lon; - WAYPT_SET(wpt,course,1); - WAYPT_SET(wpt,speed,1); - wpt->course = 180 + DEG(std::atan2(-pvt->east, -pvt->north)); + WAYPT_SET(wpt, course, 180 + DEG(std::atan2(-pvt->east, -pvt->north))); /* velocity in m/s */ WAYPT_SET(wpt,speed, std::sqrt(pvt->north*pvt->north + pvt->east*pvt->east)); diff --git a/garmin_fit.h b/garmin_fit.h index fc943ecfe..da673c1e5 100644 --- a/garmin_fit.h +++ b/garmin_fit.h @@ -100,12 +100,12 @@ class GarminFitFormat : public Format : lat(wpt.latitude), lon(wpt.longitude), altitude(wpt.altitude), - speed(WAYPT_HAS((&wpt), speed) ? wpt.speed : -1), + speed(WAYPT_GET(&wpt, speed, -1)), odometer_distance(wpt.odometer_distance), creation_time(wpt.creation_time), shortname(wpt.shortname), is_course_point(is_course_point), - course_point_type(course_point_type) { } + course_point_type(course_point_type) {} double lat, lon, altitude; double speed, odometer_distance; gpsbabel::DateTime creation_time; diff --git a/globalsat_sport.cc b/globalsat_sport.cc index a5b7f9e73..7de020fe7 100644 --- a/globalsat_sport.cc +++ b/globalsat_sport.cc @@ -644,7 +644,7 @@ GlobalsatSportFormat::track_read() wpt->longitude = ((int32_t) point.Longitude) / 1000000.0; wpt->latitude = ((int32_t) point.Latitude) / 1000000.0; wpt->altitude = point.Altitude; - wpt->speed = ((double) point.Speed / 100.0) * 1000.0 / 3600.0; + WAYPT_SET(wpt, speed, ((double) point.Speed / 100.0) * 1000.0 / 3600.0); wpt->heartrate = point.HeartRate; wpt->cadence = point.Cadence; //TODO convert in any way?? wpt->power = point.Power; //TODO convert in any way?? diff --git a/kml.cc b/kml.cc index 5fe7bea28..350aa4b6a 100644 --- a/kml.cc +++ b/kml.cc @@ -846,7 +846,8 @@ void KmlFormat::kml_output_point(const Waypoint* waypointp, kml_point_type pt_ty } else { if (trackdirection && (pt_type == kmlpt_track)) { QString value; - if (waypointp->speed < 1) { + if (!WAYPT_HAS(waypointp, speed) || !WAYPT_HAS(waypointp, course) || + (waypointp->speed < 1.0f)) { value = QStringLiteral("%1-none").arg(style); } else { value = QStringLiteral("%1-%2").arg(style) @@ -1471,19 +1472,24 @@ void KmlFormat::kml_mt_simple_array(const route_head* header, switch (member) { case fld_power: - writer->writeTextElement(QStringLiteral("gx:value"), QString::number(wpt->power, 'f', 1)); + writer->writeTextElement(QStringLiteral("gx:value"), wpt->power? + QString::number(wpt->power, 'f', 1) : QString()); break; case fld_cadence: - writer->writeTextElement(QStringLiteral("gx:value"), QString::number(wpt->cadence)); + writer->writeTextElement(QStringLiteral("gx:value"), wpt->cadence? + QString::number(wpt->cadence) : QString()); break; case fld_depth: - writer->writeTextElement(QStringLiteral("gx:value"), QString::number(wpt->depth, 'f', 1)); + writer->writeTextElement(QStringLiteral("gx:value"), WAYPT_HAS(wpt, depth)? + QString::number(wpt->depth, 'f', 1) : QString()); break; case fld_heartrate: - writer->writeTextElement(QStringLiteral("gx:value"), QString::number(wpt->heartrate)); + writer->writeTextElement(QStringLiteral("gx:value"), wpt->heartrate? + QString::number(wpt->heartrate) : QString()); break; case fld_temperature: - writer->writeTextElement(QStringLiteral("gx:value"), QString::number(wpt->temperature, 'f', 1)); + writer->writeTextElement(QStringLiteral("gx:value"), WAYPT_HAS(wpt, temperature)? + QString::number(wpt->temperature, 'f', 1) : QString()); break; default: fatal("Bad member type"); diff --git a/qstarz_bl_1000.cc b/qstarz_bl_1000.cc index 17bf57684..b4cfc30f5 100644 --- a/qstarz_bl_1000.cc +++ b/qstarz_bl_1000.cc @@ -31,7 +31,7 @@ #include // for QDebug #include // for QFile #include // for QIODevice, QIODevice::ReadOnly -#include "defs.h" // for Waypoint, ddmm2degrees, route_head, track_add_head, track_add_wpt, waypt_add, waypt_count, wp_flags, fix_unknown, fix_2d, fix_3d, fix_dgps, fix_none, fix_pps, fix_type, global_options, global_opts +#include "defs.h" #include "src/core/logging.h" // for Fatal @@ -233,11 +233,9 @@ QstarzBL1000Format::qstarz_bl_1000_read_record(QDataStream& stream, route_head* waypoint->fix = fix; waypoint->sat = satelliteCountUsed; - waypoint->speed = KPH_TO_MPS(speed); - waypoint->wpt_flags.speed = 1; + WAYPT_SET(waypoint, speed, KPH_TO_MPS(speed)); - waypoint->course = heading; - waypoint->wpt_flags.course = 1; + WAYPT_SET(waypoint, course, heading); waypoint->SetCreationTime(time, milliseconds); auto* fsdata = new qstarz_bl_1000_fsdata; diff --git a/reference/realtime.kml b/reference/realtime.kml index b81f77ff3..25e14d148 100644 --- a/reference/realtime.kml +++ b/reference/realtime.kml @@ -187,31 +187,31 @@ 245 - 0 - 0 - 0 - 0 + + + + 146 204 108 - 0 + 120 165 1 186 156 - 0 + 33 40 - 0.0 + 201.2 76.0 - 0.0 - 0.0 + + 249.4 - 0.0 + 978.7 511.7 509.5 @@ -219,8 +219,8 @@ 136.0 275.3 680.8 - 0.0 - 0.0 + + 630.0 @@ -229,9 +229,9 @@ 151 4 168 - 0 + 145 - 0 + 55 247 119 @@ -240,10 +240,10 @@ 77 2 96 - 0 + - 0.0 + 8.2 5.2 13.7 @@ -251,34 +251,34 @@ 19.8 24.7 10.2 - 0.0 + 2.7 2.7 24.6 16.9 23.9 - 0.0 + 19.0 - 0.0 + 88.9 - 0.0 + 81.3 378.5 85.3 - 0.0 + 384.3 61.9 262.2 - 0.0 - 0.0 + + 493.0 - 0.0 + 350.7 114.8 402.7 - 0.0 + diff --git a/reference/track/gpx_garmin_extensions-kml_track.kml b/reference/track/gpx_garmin_extensions-kml_track.kml index bb0bcf87d..7acaa2bf4 100644 --- a/reference/track/gpx_garmin_extensions-kml_track.kml +++ b/reference/track/gpx_garmin_extensions-kml_track.kml @@ -160,8 +160,8 @@ 153 153 153 - 0 - 0 + + 76 124 diff --git a/reference/track/gtrnctr_power-kml.kml b/reference/track/gtrnctr_power-kml.kml index 10f614624..8c3b11c52 100644 --- a/reference/track/gtrnctr_power-kml.kml +++ b/reference/track/gtrnctr_power-kml.kml @@ -11,7 +11,7 @@ 37.382794 19819.321245 - + - + - + - + - Heart Rate + Heart Rate - Cadence + Cadence - Power + Power @@ -10361,10 +10361,10 @@ - 0 - 0 - 0 - 0 + + + + 29 59 60 @@ -10396,11 +10396,11 @@ 64 64 64 - 0 - 0 - 0 - 0 - 0 + + + + + 47 56 64 @@ -10487,48 +10487,48 @@ 72 72 72 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 40 48 49 @@ -10631,16 +10631,16 @@ 65 65 65 - 0 - 0 + + 77 78 78 78 - 0 - 0 - 0 - 0 + + + + 75 75 75 @@ -10667,15 +10667,15 @@ 85 85 85 - 0 + 101 92 99 99 99 - 0 - 0 - 0 + + + 98 71 71 @@ -10710,12 +10710,12 @@ 84 84 84 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + 93 32 93 @@ -10774,8 +10774,8 @@ 55 55 55 - 0 - 0 + + 82 85 85 @@ -10783,91 +10783,91 @@ 85 85 85 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + 66 66 66 - 0 - 0 + + 60 60 60 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + 22 22 22 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 67 82 95 @@ -10885,14 +10885,14 @@ 96 96 96 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + 83 83 84 @@ -10934,8 +10934,8 @@ 85 85 85 - 0 - 0 + + 87 87 38 @@ -11073,102 +11073,102 @@ 82 82 82 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 46 58 67 @@ -11196,11 +11196,11 @@ 76 76 76 - 0 - 0 - 0 - 0 - 0 + + + + + 91 95 97 @@ -11213,7 +11213,7 @@ 93 93 93 - 0 + 93 93 95 @@ -11270,63 +11270,63 @@ 85 85 85 - 0 + 82 76 77 77 77 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 20 56 @@ -11361,109 +11361,109 @@ 94 94 94 - 0 - 0 + + 90 90 90 - 0 - 0 - 0 - 0 - 0 + + + + + 80 89 91 91 91 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 40 50 57 @@ -11498,15 +11498,15 @@ 89 89 89 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + 47 47 21 @@ -11689,13 +11689,13 @@ 22 22 22 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + 21 61 71 @@ -11788,8 +11788,8 @@ 72 72 72 - 0 - 0 + + 102 101 100 @@ -11975,10 +11975,10 @@ 85 85 85 - 0 - 0 - 0 - 0 + + + + 78 85 90 @@ -11999,8 +11999,8 @@ 105 105 105 - 0 - 0 + + 96 95 93 @@ -12016,28 +12016,28 @@ 96 96 96 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + 20 36 36 @@ -12050,11 +12050,11 @@ 103 103 103 - 0 - 0 - 0 - 0 - 0 + + + + + 89 92 94 @@ -12080,8 +12080,8 @@ 57 57 57 - 0 - 0 + + 81 81 81 @@ -12099,14 +12099,14 @@ 95 95 95 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + 98 99 99 @@ -12128,31 +12128,31 @@ 56 56 56 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + 69 80 88 @@ -12264,7 +12264,7 @@ 84 84 84 - 0 + 105 100 97 @@ -12286,27 +12286,27 @@ 105 105 105 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + 51 73 82 @@ -12515,7 +12515,7 @@ 54 54 54 - 0 + 88 94 94 @@ -12786,9 +12786,9 @@ 90 90 90 - 0 - 0 - 0 + + + 50 50 46 @@ -13086,11 +13086,11 @@ 90 90 90 - 0 - 0 - 0 - 0 - 0 + + + + + 55 64 64 @@ -13470,24 +13470,24 @@ 105 105 105 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + 42 63 85 @@ -13663,26 +13663,26 @@ 95 95 95 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + 51 51 76 @@ -14009,42 +14009,42 @@ 99 99 99 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 72 83 92 @@ -14106,90 +14106,90 @@ 20 20 20 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 49 58 47 @@ -14212,11 +14212,11 @@ 91 91 91 - 0 - 0 - 0 - 0 - 0 + + + + + 105 106 107 @@ -14249,7 +14249,7 @@ 99 99 99 - 0 + 114 103 112 @@ -14270,8 +14270,8 @@ 101 101 101 - 0 - 0 + + 98 97 96 @@ -14332,7 +14332,7 @@ 65 65 65 - 0 + 98 99 101 @@ -14351,23 +14351,23 @@ 72 72 72 - 0 - 0 - 0 + + + 110 85 94 94 94 94 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + 83 78 90 @@ -14667,43 +14667,43 @@ 100 100 100 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 21 67 55 @@ -14818,10 +14818,10 @@ 101 101 101 - 0 - 0 - 0 - 0 + + + + 95 97 98 @@ -14884,7 +14884,7 @@ 101 101 101 - 0 + 84 94 103 @@ -14905,8 +14905,8 @@ 38 38 38 - 0 - 0 + + 100 98 99 @@ -14927,7 +14927,7 @@ 92 92 92 - 0 + 87 87 87 @@ -14957,94 +14957,94 @@ 86 86 86 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 27 60 82 @@ -15164,7 +15164,7 @@ 90 90 90 - 0 + 107 106 106 @@ -15333,8 +15333,8 @@ 88 88 88 - 0 - 0 + + 79 86 86 @@ -15353,123 +15353,123 @@ 21 21 21 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 31 31 31 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 88 @@ -17350,7 +17350,7 @@ 170 170 170 - 0 + 170 170 170 @@ -20583,10 +20583,10 @@ 130 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 112.0 201.0 104.0 @@ -20614,15 +20614,15 @@ 122.0 84.0 84.0 - 0.0 + 55.0 55.0 55.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 199.0 303.0 179.0 @@ -20646,15 +20646,15 @@ 63.0 62.0 7.0 - 0.0 - 0.0 + + 2.0 29.0 - 0.0 - 0.0 + + 34.0 34.0 - 0.0 + 63.0 98.0 113.0 @@ -20667,15 +20667,15 @@ 75.0 34.0 31.0 - 0.0 - 0.0 + + 14.0 - 0.0 - 0.0 + + 7.0 17.0 - 0.0 - 0.0 + + 41.0 47.0 19.0 @@ -20687,11 +20687,11 @@ 23.0 22.0 9.0 - 0.0 + 15.0 9.0 18.0 - 0.0 + 125.0 100.0 49.0 @@ -20709,48 +20709,48 @@ 10.0 10.0 10.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 174.0 175.0 228.0 @@ -20833,36 +20833,36 @@ 100.0 81.0 42.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 34.0 34.0 - 0.0 + 42.0 1.0 - 0.0 - 0.0 - 0.0 + + + 2.0 - 0.0 - 0.0 + + 53.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + 82.0 32.0 32.0 32.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 31.0 31.0 31.0 @@ -20875,13 +20875,13 @@ 64.0 72.0 72.0 - 0.0 - 0.0 + + 49.0 13.0 - 0.0 - 0.0 - 0.0 + + + 9.0 22.0 20.0 @@ -20889,19 +20889,19 @@ 1.0 1.0 1.0 - 0.0 + 69.0 72.0 77.0 77.0 77.0 - 0.0 - 0.0 - 0.0 + + + 37.0 - 0.0 - 0.0 - 0.0 + + + 27.0 7.0 51.0 @@ -20929,39 +20929,39 @@ 48.0 49.0 17.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + 39.0 - 0.0 + 74.0 74.0 - 0.0 + 31.0 17.0 34.0 84.0 64.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 29.0 31.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + 80.0 115.0 127.0 @@ -20970,10 +20970,10 @@ 79.0 57.0 36.0 - 0.0 + 56.0 9.0 - 0.0 + 41.0 29.0 27.0 @@ -20991,13 +20991,13 @@ 54.0 32.0 22.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + 34.0 19.0 51.0 @@ -21005,91 +21005,91 @@ 23.0 23.0 23.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + 64.0 64.0 64.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 337.0 468.0 400.0 @@ -21107,14 +21107,14 @@ 176.0 176.0 176.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + 93.0 55.0 29.0 @@ -21153,14 +21153,14 @@ 79.0 164.0 32.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 110.0 7.0 - 0.0 + 58.0 97.0 103.0 @@ -21259,7 +21259,7 @@ 80.0 9.0 20.0 - 0.0 + 9.0 75.0 99.0 @@ -21289,108 +21289,108 @@ 72.0 103.0 101.0 - 0.0 - 0.0 + + 12.0 8.0 8.0 8.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 259.0 315.0 339.0 @@ -21410,21 +21410,21 @@ 129.0 108.0 85.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 36.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + 50.0 60.0 85.0 @@ -21435,14 +21435,14 @@ 24.0 24.0 24.0 - 0.0 + 93.0 60.0 152.0 63.0 63.0 63.0 - 0.0 + 37.0 83.0 55.0 @@ -21465,7 +21465,7 @@ 76.0 54.0 54.0 - 0.0 + 74.0 31.0 6.0 @@ -21492,63 +21492,63 @@ 13.0 13.0 13.0 - 0.0 + 28.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 22.0 22.0 262.0 @@ -21583,159 +21583,159 @@ 92.0 92.0 92.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + 54.0 14.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 113.0 142.0 143.0 126.0 126.0 - 0.0 + 77.0 22.0 - 0.0 - 0.0 + + 7.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 1.0 60.0 @@ -21743,198 +21743,198 @@ 171.0 219.0 48.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 76.0 113.0 110.0 55.0 - 0.0 - 0.0 + + 13.0 23.0 42.0 42.0 28.0 32.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + 45.0 18.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 97.0 128.0 128.0 82.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + 67.0 24.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 29.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + 60.0 60.0 87.0 @@ -21953,73 +21953,73 @@ 82.0 109.0 39.0 - 0.0 + 98.0 149.0 108.0 45.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 45.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 34.0 9.0 - 0.0 + 1.0 156.0 252.0 @@ -22031,63 +22031,63 @@ 62.0 44.0 48.0 - 0.0 - 0.0 + + 7.0 10.0 4.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + 17.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 32.0 40.0 65.0 @@ -22102,164 +22102,164 @@ 48.0 69.0 24.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 75.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + 148.0 4.0 - 0.0 + 23.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + 108.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 37.0 219.0 219.0 @@ -22268,129 +22268,129 @@ 323.0 320.0 289.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + 25.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + 5.0 238.0 183.0 122.0 94.0 52.0 - 0.0 + 11.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 282.0 222.0 203.0 - 0.0 - 0.0 + + 37.0 90.0 79.0 - 0.0 - 0.0 + + 105.0 166.0 160.0 73.0 30.0 - 0.0 + 21.0 48.0 53.0 @@ -22486,7 +22486,7 @@ 81.0 81.0 81.0 - 0.0 + 255.0 251.0 247.0 @@ -22508,27 +22508,27 @@ 197.0 197.0 197.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + 367.0 452.0 456.0 @@ -22737,7 +22737,7 @@ 31.0 31.0 31.0 - 0.0 + 115.0 188.0 197.0 @@ -23008,9 +23008,9 @@ 164.0 164.0 164.0 - 0.0 - 0.0 - 0.0 + + + 96.0 96.0 114.0 @@ -23308,11 +23308,11 @@ 202.0 202.0 202.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 203.0 297.0 297.0 @@ -23692,24 +23692,24 @@ 181.0 181.0 181.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + 265.0 415.0 444.0 @@ -23885,26 +23885,26 @@ 145.0 145.0 145.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + 279.0 279.0 384.0 @@ -24231,42 +24231,42 @@ 196.0 196.0 196.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 414.0 434.0 307.0 @@ -24328,90 +24328,90 @@ 7.0 7.0 7.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 204.0 234.0 144.0 @@ -24434,11 +24434,11 @@ 101.0 101.0 101.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + 254.0 256.0 239.0 @@ -24471,7 +24471,7 @@ 128.0 128.0 128.0 - 0.0 + 177.0 94.0 220.0 @@ -24492,8 +24492,8 @@ 120.0 120.0 120.0 - 0.0 - 0.0 + + 371.0 379.0 265.0 @@ -24554,7 +24554,7 @@ 35.0 35.0 35.0 - 0.0 + 169.0 358.0 366.0 @@ -24573,23 +24573,23 @@ 90.0 90.0 90.0 - 0.0 - 0.0 - 0.0 + + + 147.0 55.0 92.0 92.0 92.0 92.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + 392.0 369.0 563.0 @@ -24889,43 +24889,43 @@ 310.0 310.0 310.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 57.0 396.0 167.0 @@ -25040,10 +25040,10 @@ 208.0 208.0 208.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + 236.0 278.0 256.0 @@ -25106,7 +25106,7 @@ 120.0 120.0 120.0 - 0.0 + 73.0 75.0 236.0 @@ -25127,8 +25127,8 @@ 22.0 22.0 22.0 - 0.0 - 0.0 + + 168.0 101.0 189.0 @@ -25149,7 +25149,7 @@ 237.0 237.0 237.0 - 0.0 + 351.0 325.0 155.0 @@ -25179,94 +25179,94 @@ 245.0 245.0 245.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 98.0 407.0 496.0 @@ -25386,7 +25386,7 @@ 82.0 82.0 82.0 - 0.0 + 181.0 155.0 211.0 @@ -25555,8 +25555,8 @@ 191.0 191.0 191.0 - 0.0 - 0.0 + + 137.0 178.0 150.0 @@ -25575,123 +25575,123 @@ 10.0 10.0 10.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v900.cc b/v900.cc index d244a3045..a815ab052 100644 --- a/v900.cc +++ b/v900.cc @@ -316,11 +316,9 @@ v900_read() wpt->SetCreationTime(bintime2utc(date, time)); } - wpt->speed = KPH_TO_MPS(xstrtoi(line.bas.common.speed, nullptr, 10)); - wpt->wpt_flags.speed = 1; + WAYPT_SET(wpt, speed, KPH_TO_MPS(xstrtoi(line.bas.common.speed, nullptr, 10))); - wpt->course = xstrtoi(line.bas.common.heading, nullptr, 10); - wpt->wpt_flags.course = 1; + WAYPT_SET(wpt, course, xstrtoi(line.bas.common.heading, nullptr, 10)); if (is_advanced_mode) { wpt->hdop = strtod(line.adv.hdop, nullptr); diff --git a/xcsv.cc b/xcsv.cc index a7f2040a8..44b38ec7e 100644 --- a/xcsv.cc +++ b/xcsv.cc @@ -757,10 +757,10 @@ XcsvFormat::xcsv_parse_val(const QString& value, Waypoint* wpt, const XcsvStyle: wpt->power = strtod(s, nullptr); break; case XcsvStyle::XT_TEMPERATURE: - wpt->temperature = strtod(s, nullptr); + WAYPT_SET(wpt, temperature, strtod(s, nullptr)); break; case XcsvStyle::XT_TEMPERATURE_F: - wpt->temperature = (FAHRENHEIT_TO_CELSIUS(strtod(s, nullptr))); + WAYPT_SET(wpt, temperature, FAHRENHEIT_TO_CELSIUS(strtod(s, nullptr))); break; /* GMSD ****************************************************************/ case XcsvStyle::XT_COUNTRY: { @@ -1306,38 +1306,58 @@ XcsvFormat::xcsv_waypt_pr(const Waypoint* wpt) } break; case XcsvStyle::XT_PATH_SPEED: - buff = QString::asprintf(fmp.printfc.constData(), wpt->speed); + if (WAYPT_HAS(wpt, speed)) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->speed); + } break; case XcsvStyle::XT_PATH_SPEED_KPH: - buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_KPH(wpt->speed)); + if (WAYPT_HAS(wpt, speed)) { + buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_KPH(wpt->speed)); + } break; case XcsvStyle::XT_PATH_SPEED_MPH: - buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_MPH(wpt->speed)); + if (WAYPT_HAS(wpt, speed)) { + buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_MPH(wpt->speed)); + } break; case XcsvStyle::XT_PATH_SPEED_KNOTS: - buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_KNOTS(wpt->speed)); + if (WAYPT_HAS(wpt, speed)) { + buff = QString::asprintf(fmp.printfc.constData(), MPS_TO_KNOTS(wpt->speed)); + } break; case XcsvStyle::XT_PATH_COURSE: - buff = QString::asprintf(fmp.printfc.constData(), wpt->course); + if (WAYPT_HAS(wpt, course)) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->course); + } break; /* HEART RATE CONVERSION***********************************************/ case XcsvStyle::XT_HEART_RATE: - buff = QString::asprintf(fmp.printfc.constData(), wpt->heartrate); + if (wpt->heartrate) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->heartrate); + } break; /* CADENCE CONVERSION***********************************************/ case XcsvStyle::XT_CADENCE: - buff = QString::asprintf(fmp.printfc.constData(), wpt->cadence); + if (wpt->cadence) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->cadence); + } break; /* POWER CONVERSION***********************************************/ case XcsvStyle::XT_POWER: - buff = QString::asprintf(fmp.printfc.constData(), wpt->power); + if (wpt->power) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->power); + } break; case XcsvStyle::XT_TEMPERATURE: - buff = QString::asprintf(fmp.printfc.constData(), wpt->temperature); + if (WAYPT_HAS(wpt, temperature)) { + buff = QString::asprintf(fmp.printfc.constData(), wpt->temperature); + } break; case XcsvStyle::XT_TEMPERATURE_F: - buff = QString::asprintf(fmp.printfc.constData(), CELSIUS_TO_FAHRENHEIT(wpt->temperature)); + if (WAYPT_HAS(wpt, temperature)) { + buff = QString::asprintf(fmp.printfc.constData(), CELSIUS_TO_FAHRENHEIT(wpt->temperature)); + } break; /* TIME CONVERSIONS**************************************************/ case XcsvStyle::XT_EXCEL_TIME: @@ -1426,7 +1446,7 @@ XcsvFormat::xcsv_waypt_pr(const Waypoint* wpt) /* Tracks and Routes ***********************************************/ case XcsvStyle::XT_TRACK_NEW: if (csv_track) { - if (WAYPT_HAS(wpt,new_trkseg)) { + if (wpt->wpt_flags.new_trkseg) { buff = QString::asprintf(fmp.printfc.constData(), 1); } else { buff = QString::asprintf(fmp.printfc.constData(), 0);