diff --git a/ground/openpilotgcs/share/openpilotgcs/pfd/default/Info.qml b/ground/openpilotgcs/share/openpilotgcs/pfd/default/Info.qml
index c6cc2fa5f..81f1e9d90 100644
--- a/ground/openpilotgcs/share/openpilotgcs/pfd/default/Info.qml
+++ b/ground/openpilotgcs/share/openpilotgcs/pfd/default/Info.qml
@@ -31,12 +31,21 @@ Item {
property real wp_eta_m: (wp_eta > 0 ? Math.floor((wp_eta - wp_eta_h*3600)/60) : 0)
property real wp_eta_s: (wp_eta > 0 ? Math.floor(wp_eta - wp_eta_h*3600 - wp_eta_m*60) : 0)
+ property real est_flight_time: Math.round(FlightBatteryState.EstimatedFlightTime)
+ property real est_time_h: (est_flight_time > 0 ? Math.floor(est_flight_time / 3600) : 0 )
+ property real est_time_m: (est_flight_time > 0 ? Math.floor((est_flight_time - est_time_h*3600)/60) : 0)
+ property real est_time_s: (est_flight_time > 0 ? Math.floor(est_flight_time - est_time_h*3600 - est_time_m*60) : 0)
+
property real posEast_old
property real posNorth_old
property real total_distance
property bool init_dist: false
property bool hide_display_rc: false
+ property bool hide_display_bat: false
+
+ // Uninitialised, Ok, Warning, Critical, Error
+ property variant batColors : ["#2c2929", "green", "orange", "red", "red"]
function reset_distance(){
total_distance = 0;
@@ -63,10 +72,19 @@ Item {
}
function hide_display_rcinput(){
- if (hide_display_rc == false)
+ if (hide_display_rc == false && hide_display_bat == false)
hide_display_rc = true;
else
hide_display_rc = false;
+ battery_bg.z = -1
+ }
+
+ function hide_display_battery(){
+ if (hide_display_bat == false && hide_display_rc == false)
+ hide_display_bat = true;
+ else
+ hide_display_bat = false;
+ battery_bg.z = 10
}
SvgElementImage {
@@ -76,21 +94,6 @@ Item {
width: parent.width
}
- SvgElementImage {
- id: batinfo_energy
- elementName: "warning-low-energy"
- sceneSize: info.sceneSize
- Rectangle {
- anchors.fill: batinfo_energy
- border.width: 0
- // Alarm based on FlightBatteryState.EstimatedFlightTime < 120s orange, < 60s red
- color: (FlightBatteryState.EstimatedFlightTime <= 120 && FlightBatteryState.EstimatedFlightTime > 60 ? "orange" :
- (FlightBatteryState.EstimatedFlightTime <= 60 ? "red": "black"))
-
- visible: FlightBatteryState.ConsumedEnergy > 0
- }
- }
-
Repeater {
id: satNumberBar
@@ -111,55 +114,17 @@ Item {
elementName: "gps-mode-text"
Text {
- text: ["No GPS", "No Fix", "Fix2D", "Fix3D"][GPSPositionSensor.Status]
+ text: ["NO GPS", "NO FIX", "FIX 2D", "FIX 3D"][GPSPositionSensor.Status]
anchors.centerIn: parent
- font.pixelSize: Math.floor(parent.height*1.2)
+ font.pixelSize: Math.floor(parent.height*1.3)
+ font.family: "Arial"
color: "white"
}
}
- SvgElementPositionItem {
- sceneSize: info.sceneSize
- elementName: "telemetry-status"
-
- Text {
- text: ["Disconnected","HandshakeReq","HandshakeAck","Connected"][tele_status.toString()]
-
- anchors.centerIn: parent
- font.pixelSize: Math.floor(parent.height*1.2)
- color: "white"
- }
- }
-
- Repeater {
- id: txNumberBar
-
- property int txRateNumber : GCSTelemetryStats.TxDataRate.toFixed()/10 // 250 max
-
- model: 25
- SvgElementImage {
- property int minTxRateNumber : index+1
- elementName: "tx" + minTxRateNumber
- sceneSize: info.sceneSize
- visible: txNumberBar.txRateNumber >= minTxRateNumber && ((GCSTelemetryStats.Status ==3 && OPLinkStatus.LinkState == 4 )
- || (GCSTelemetryStats.Status ==3 && OPLinkStatus.LinkState == 1 ))
- }
- }
-
- Repeater {
- id: rxNumberBar
-
- property int rxRateNumber : GCSTelemetryStats.RxDataRate.toFixed()/100 // 2500 max
-
- model: 25
- SvgElementImage {
- property int minRxRateNumber : index+1
- elementName: "rx" + minRxRateNumber
- sceneSize: info.sceneSize
- visible: rxNumberBar.rxRateNumber >= minRxRateNumber && ((GCSTelemetryStats.Status ==3 && OPLinkStatus.LinkState == 4 )
- || (GCSTelemetryStats.Status ==3 && OPLinkStatus.LinkState == 1 ))
- }
- }
+ //
+ // Waypoint Info
+ //
SvgElementPositionItem {
sceneSize: info.sceneSize
@@ -171,10 +136,13 @@ Item {
Text {
text: " "+wp_heading.toFixed(1)+"°"
-
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
+ color: "cyan"
+
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 1.5)
+ }
}
}
@@ -188,10 +156,13 @@ Item {
Text {
text: " "+wp_distance.toFixed(0)+" m"
-
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
+ color: "cyan"
+
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 1.5)
+ }
}
}
@@ -203,14 +174,17 @@ Item {
y: Math.floor(scaledBounds.y * sceneItem.height)
visible: OPLinkStatus.LinkState == 4 //OPLink Connected
- MouseArea { id: total_dist_mouseArea; anchors.fill: parent; onClicked: reset_distance()}
+ MouseArea { id: total_dist_mouseArea; anchors.fill: parent; cursorShape: Qt.PointingHandCursor; onClicked: reset_distance()}
Text {
text: " "+total_distance.toFixed(0)+" m"
-
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
+ color: "cyan"
+
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 1.5)
+ }
}
Timer {
@@ -229,10 +203,13 @@ Item {
Text {
text: formatTime(wp_eta_h) + ":" + formatTime(wp_eta_m) + ":" + formatTime(wp_eta_s)
-
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
+ color: "cyan"
+
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 1.5)
+ }
}
}
@@ -246,10 +223,13 @@ Item {
Text {
text: (WaypointActive.Index+1)+" / "+PathPlan.WaypointCount
-
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
+ color: "cyan"
+
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 1.5)
+ }
}
}
@@ -262,102 +242,24 @@ Item {
visible: SystemAlarms.Alarm_PathPlan == 1
Text {
- text: ["Fly End Point","Fly Vector","Fly Circle Right","Fly Circle Left","Drive End Point","Drive Vector","Drive Circle Right",
- "Drive Circle Left","Fixed Attitude","Set Accessory","Land","Disarm Alarm"][PathDesired.Mode]
-
+ text: ["FLY END POINT","FLY VECTOR","FLY CIRCLE RIGHT","FLY CIRCLE LEFT","DRIVE END POINT","DRIVE VECTOR","DRIVE CIRCLE LEFT",
+ "DRIVE CIRCLE RIGHT","FIXED ATTITUDE","SET ACCESSORY","LAND","DISARM ALARM"][PathDesired.Mode]
anchors.centerIn: parent
- font.pixelSize: parent.height*1.1
- color: "magenta"
- }
- }
+ color: "cyan"
- SvgElementPositionItem {
- sceneSize: info.sceneSize
- elementName: "battery-volt-text"
- visible: FlightBatteryState.Voltage > 0
-
- Text {
- text: FlightBatteryState.Voltage.toFixed(2)
- anchors.centerIn: parent
- color: "white"
font {
family: "Arial"
- pixelSize: Math.floor(parent.height * 1.2)
+ pixelSize: Math.floor(parent.height * 1.5)
}
}
}
- SvgElementPositionItem {
- sceneSize: info.sceneSize
- elementName: "battery-amp-text"
- visible: FlightBatteryState.Current > 0
-
- Text {
- text: FlightBatteryState.Current.toFixed(2)
- anchors.centerIn: parent
- color: "white"
- font {
- family: "Arial"
- pixelSize: Math.floor(parent.height * 1.2)
- }
- }
- }
-
- SvgElementPositionItem {
- sceneSize: info.sceneSize
- elementName: "battery-milliamp-text"
- visible: FlightBatteryState.ConsumedEnergy > 0
-
- Text {
- text: FlightBatteryState.ConsumedEnergy.toFixed()
- anchors.centerIn: parent
- color: "white"
- font {
- family: "Arial"
- pixelSize: Math.floor(parent.height * 1.2)
- }
- }
- }
-
- Repeater {
- id: throttleNumberBar
-
- property int throttleNumber : ActuatorDesired.Thrust.toFixed(1)*10
-
- model: 10
- SvgElementImage {
- property int minThrottleNumber : index+1
- elementName: "eng" + minThrottleNumber
- sceneSize: info.sceneSize
-
- visible: throttleNumberBar.throttleNumber >= minThrottleNumber
- }
- }
-
- SvgElementImage {
- id: mask_ThrottleBar
- elementName: "throttle-mask"
- sceneSize: info.sceneSize
- }
-
SvgElementImage {
id: mask_SatBar
elementName: "satbar-mask"
sceneSize: info.sceneSize
}
- SvgElementImage {
- id: mask_telemetryTx
- elementName: "tx-mask"
- sceneSize: info.sceneSize
- }
-
- SvgElementImage {
- id: mask_telemetryRx
- elementName: "rx-mask"
- sceneSize: info.sceneSize
- }
-
SvgElementImage {
id: home_bg
elementName: "home-bg"
@@ -469,6 +371,9 @@ Item {
}
}
+ //
+ // Rc-Input panel
+ //
SvgElementImage {
id: rc_input_bg
@@ -484,6 +389,7 @@ Item {
transitions: Transition {
SequentialAnimation {
+ id: rc_input_anim
PropertyAnimation { property: "x"; duration: 800 }
}
}
@@ -509,17 +415,43 @@ Item {
}
SvgElementImage {
- id: rc_input_icon
- elementName: "rc-input-icon"
+ id: rc_input_mousearea
+ elementName: "rc-input-panel-mousearea"
sceneSize: info.sceneSize
y: Math.floor(scaledBounds.y * sceneItem.height)
- MouseArea { id: hidedisp_rcinput; anchors.fill: parent; onClicked: hide_display_rcinput()}
+ MouseArea { id: hidedisp_rcinput; anchors.fill: parent; cursorShape: Qt.WhatsThisCursor; onClicked: hide_display_rcinput()}
states: State {
name: "fading"
when: hide_display_rc !== true
- PropertyChanges { target: rc_input_icon; x: Math.floor(scaledBounds.x * sceneItem.width) - (rc_input_bg.width * 0.85); }
+ PropertyChanges { target: rc_input_mousearea; x: Math.floor(scaledBounds.x * sceneItem.width) - (rc_input_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+ }
+
+ SvgElementImage {
+ id: rc_throttle
+ elementName: "rc-throttle"
+ sceneSize: info.sceneSize
+
+ width: scaledBounds.width * sceneItem.width
+ height: (scaledBounds.height * sceneItem.height) * (ManualControlCommand.Throttle)
+
+ x: scaledBounds.x * sceneItem.width
+ y: (scaledBounds.y * sceneItem.height) - rc_throttle.height + (scaledBounds.height * sceneItem.height)
+
+ smooth: true
+
+ states: State {
+ name: "fading"
+ when: hide_display_rc !== true
+ PropertyChanges { target: rc_throttle; x: Math.floor(scaledBounds.x * sceneItem.width) - (rc_input_bg.width * 0.85); }
}
transitions: Transition {
@@ -562,6 +494,244 @@ Item {
}
}
+ //
+ // Battery panel
+ //
+
+ SvgElementImage {
+ id: battery_bg
+ elementName: "battery-bg"
+ sceneSize: info.sceneSize
+ y: Math.floor(scaledBounds.y * sceneItem.height)
+ z: 10
+
+ //visible: !hide_display_rc
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_bg; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+ }
+
+ SvgElementPositionItem {
+ id: battery_volt
+ sceneSize: info.sceneSize
+ elementName: "battery-volt-text"
+ z: 11
+
+ width: scaledBounds.width * sceneItem.width
+ height: scaledBounds.height * sceneItem.height
+ y: scaledBounds.y * sceneItem.height
+
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_volt; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: info.batColors[SystemAlarms.Alarm_Battery]
+ border.color: "white"
+ border.width: battery_volt.width * 0.01
+ radius: border.width * 4
+
+ Text {
+ text: FlightBatteryState.Voltage.toFixed(2)
+ anchors.centerIn: parent
+ color: "white"
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 0.6)
+ }
+ }
+ }
+ }
+
+ SvgElementPositionItem {
+ id: battery_amp
+ sceneSize: info.sceneSize
+ elementName: "battery-amp-text"
+ z: 12
+
+ width: scaledBounds.width * sceneItem.width
+ height: scaledBounds.height * sceneItem.height
+ y: scaledBounds.y * sceneItem.height
+
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_amp; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: info.batColors[SystemAlarms.Alarm_Battery]
+ border.color: "white"
+ border.width: battery_volt.width * 0.01
+ radius: border.width * 4
+
+ Text {
+ text: FlightBatteryState.Current.toFixed(2)
+ anchors.centerIn: parent
+ color: "white"
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 0.6)
+ }
+ }
+ }
+ }
+
+ SvgElementPositionItem {
+ id: battery_milliamp
+ sceneSize: info.sceneSize
+ elementName: "battery-milliamp-text"
+ z: 13
+
+ width: scaledBounds.width * sceneItem.width
+ height: scaledBounds.height * sceneItem.height
+ y: scaledBounds.y * sceneItem.height
+
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_milliamp; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+
+ // Alarm based on FlightBatteryState.EstimatedFlightTime < 120s orange, < 60s red
+ color: (FlightBatteryState.EstimatedFlightTime <= 120 && FlightBatteryState.EstimatedFlightTime > 60 ? "orange" :
+ (FlightBatteryState.EstimatedFlightTime <= 60 ? "red": info.batColors[SystemAlarms.Alarm_Battery]))
+
+ border.color: "white"
+ border.width: battery_volt.width * 0.01
+ radius: border.width * 4
+
+ Text {
+ text: FlightBatteryState.ConsumedEnergy.toFixed(0)
+ anchors.centerIn: parent
+ color: "white"
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 0.6)
+ }
+ }
+ }
+ }
+
+ SvgElementPositionItem {
+ id: battery_estimated_flight_time
+ sceneSize: info.sceneSize
+ elementName: "battery-estimated-flight-time"
+ z: 14
+ width: scaledBounds.width * sceneItem.width
+ height: scaledBounds.height * sceneItem.height
+ y: scaledBounds.y * sceneItem.height
+
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_estimated_flight_time; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ //color: info.batColors[SystemAlarms.Alarm_Battery]
+
+ // Alarm based on FlightBatteryState.EstimatedFlightTime < 120s orange, < 60s red
+ color: (FlightBatteryState.EstimatedFlightTime <= 120 && FlightBatteryState.EstimatedFlightTime > 60 ? "orange" :
+ (FlightBatteryState.EstimatedFlightTime <= 60 ? "red": info.batColors[SystemAlarms.Alarm_Battery]))
+
+ border.color: "white"
+ border.width: battery_volt.width * 0.01
+ radius: border.width * 4
+
+ Text {
+ text: formatTime(est_time_h) + ":" + formatTime(est_time_m) + ":" + formatTime(est_time_s)
+ anchors.centerIn: parent
+ color: "white"
+ font {
+ family: "Arial"
+ pixelSize: Math.floor(parent.height * 0.6)
+ }
+ }
+ }
+ }
+
+ SvgElementImage {
+ id: battery_labels
+ elementName: "battery-labels"
+ sceneSize: info.sceneSize
+ y: Math.floor(scaledBounds.y * sceneItem.height)
+ z: 15
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_labels; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+ }
+
+ SvgElementImage {
+ id: battery_mousearea
+ elementName: "battery-panel-mousearea"
+ sceneSize: info.sceneSize
+ y: Math.floor(scaledBounds.y * sceneItem.height)
+ z: 16
+
+ MouseArea { id: hidedisp_battery; anchors.fill: parent; cursorShape: Qt.WhatsThisCursor; onClicked: hide_display_battery()}
+
+ states: State {
+ name: "fading"
+ when: hide_display_bat !== true
+ PropertyChanges { target: battery_mousearea; x: Math.floor(scaledBounds.x * sceneItem.width) - (battery_bg.width * 0.85); }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ PropertyAnimation { property: "x"; duration: 800 }
+ }
+ }
+ }
+
SvgElementImage {
id: info_border
elementName: "info-border"
diff --git a/ground/openpilotgcs/share/openpilotgcs/pfd/default/Warnings.qml b/ground/openpilotgcs/share/openpilotgcs/pfd/default/Warnings.qml
index ed5b610ba..9144e66ff 100644
--- a/ground/openpilotgcs/share/openpilotgcs/pfd/default/Warnings.qml
+++ b/ground/openpilotgcs/share/openpilotgcs/pfd/default/Warnings.qml
@@ -255,14 +255,6 @@ Item {
visible: SystemAlarms.Alarm_Telemetry > 1
}
- SvgElementImage {
- id: warning_battery
- elementName: "warning-battery"
- sceneSize: warnings.sceneSize
- anchors.right: parent.right
- visible: SystemAlarms.Alarm_Battery > 1
- }
-
SvgElementImage {
id: warning_attitude
elementName: "warning-attitude"
diff --git a/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg b/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg
index 2fb698ff8..03ec7c74b 100644
--- a/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg
+++ b/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg
@@ -184,13 +184,13 @@
+ y2="442.49057" />
+ inkscape:label="rc-input-panel"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ style="display:inline"
+ sodipodi:insensitive="true">
-
-
-
-
+ id="g8289">
-
+ transform="matrix(1.1599442,0,0,1.1601679,-0.06770889,-73.769595)"
+ id="rc-input-bg">
+ sodipodi:nodetypes="sssscsssscsss"
+ style="fill:#2c2929;fill-opacity:1;stroke:#ffffff;stroke-width:0.86202729;stroke-opacity:1"
+ d="m -1.8968835,311 c -2.77,0 -5,2.23 -5,5 l 0,140 c 0,2.77 2.23,5 5,5 L 145,461 l 19,0 c 2.77,0 5,-2.23 5,-5 l 0,-30 c 0,-2.77 -2.23,-5 -5,-5 l -14,0 l 0,-105 c 0,-2.77 -2.23,-5 -5,-5 z"
+ id="rc-bg"
+ inkscape:connector-curvature="0" />
-
-
-
-
+ style="fill:none;stroke:#ffffff;stroke-width:0.86202729;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 150,421 l 0,40"
+ id="path4930"
+ inkscape:connector-curvature="0" />
+
+
+
+
+
+
+
+
+
+ THROTTLE
+
+
+
+
+ style="display:inline"
+ sodipodi:insensitive="true">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+ inkscape:label="#g4460"
+ transform="matrix(1.1653043,0,0,1,0.08265213,0)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="translate(0,-2.08992)" />
+ transform="matrix(1.7146685,0,0,1.7146685,-176.95942,-5.87421)">
+ transform="matrix(1.6526792,0,0,1.6526792,-165.99391,-4.9162026)">
+ transform="matrix(1.6526792,0,0,1.6526792,-194.69489,-29.916207)">
+ transform="matrix(1.6526792,0,0,1.6526792,-155.46815,-5.1260141)">
+ transform="matrix(1.7146685,0,0,1.7146685,-265.93598,-6.5942385)">
-
-
-
-
+ transform="matrix(0.89658208,0,0,1.0166066,0.62788103,-5.1809092)"
+ style="display:inline"
+ id="g8787">
+
+ style="fill:#787878;fill-opacity:1;stroke:#e0dfe1;stroke-width:1.57115781;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+ d="m 6.071295,40.854862 l 8.702853,-8.702852 l 3.698713,-0.652713 c 1.081677,1.081677 2.282834,2.282834 3.263569,3.263569 c 0.543928,0.543928 -0.435142,3.916284 -0.435142,3.916284 l -8.702853,8.702852 z"
+ id="path8779"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ sodipodi:type="arc"
+ style="fill:none;stroke:#e0dfe1;stroke-width:2.55313134;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path8781"
+ sodipodi:cx="77"
+ sodipodi:cy="-18"
+ sodipodi:rx="9"
+ sodipodi:ry="9"
+ d="m 86,-18 a 9,9 0 0 1 -13.5,7.794229"
+ transform="matrix(0.59409,-0.16048456,0.16048456,0.59409,-14.282595,58.387875)"
+ sodipodi:start="0"
+ sodipodi:end="2.0943951"
+ sodipodi:open="true" />
+ sodipodi:open="true"
+ sodipodi:end="2.0943951"
+ sodipodi:start="0"
+ transform="matrix(0.94346447,-0.22256175,0.2922493,0.96228953,-38.3717,70.240727)"
+ d="m 86,-18 a 9,9 0 0 1 -13.5,7.794229"
+ sodipodi:ry="9"
+ sodipodi:rx="9"
+ sodipodi:cy="-18"
+ sodipodi:cx="77"
+ id="path8783"
+ style="fill:none;stroke:#e0dfe1;stroke-width:1.59286559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
-
+ sodipodi:nodetypes="ccccccc"
+ inkscape:connector-curvature="0"
+ id="path8785"
+ d="m 34.355566,12.570595 l -8.702852,8.702849 L 25,24.972157 c 1.081677,1.081678 2.282835,2.282835 3.263569,3.263569 c 0.543929,0.543929 3.916285,-0.435142 3.916285,-0.435142 l 8.702852,-8.702853 z"
+ style="fill:#787878;fill-opacity:1;stroke:#e0dfe1;stroke-width:1.57115781;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="display:inline"
+ sodipodi:insensitive="true">
+ inkscape:label="waypoint-eta-text"
+ sodipodi:insensitive="true">
+ transform="matrix(1.1017861,0,0,1.1017861,61.29339,14.558341)">
+ inkscape:label="waypoint-distance-text"
+ sodipodi:insensitive="true">
+ transform="matrix(1.1017861,0,0,1.1017861,17.436688,-10.441659)">
+ inkscape:label="waypoint-heading-text"
+ sodipodi:insensitive="true">
+ transform="matrix(1.1017861,0,0,1.1017861,-11.977973,14.558341)">
+ inkscape:label="waypoint-mode-text"
+ sodipodi:insensitive="true">
+ transform="matrix(1.0767613,0,0,1.0767613,127.81017,6.4920314)">
+ style="display:inline"
+ sodipodi:insensitive="true">
+ transform="matrix(1.0767613,0,0,1.0767613,19.497871,6.4920315)">
+ transform="translate(0,16)"
+ sodipodi:insensitive="true">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="display:inline"
+ sodipodi:insensitive="true">
@@ -2872,11 +2568,12 @@
id="layer52"
inkscape:label="gps-mode-text"
style="display:inline"
- transform="translate(0,-0.972157)">
+ transform="translate(0,-0.972157)"
+ sodipodi:insensitive="true">
+ transform="matrix(1.4543578,0,0,1.4543578,-4.981688,1.3723646)">
+ style="display:inline"
+ sodipodi:insensitive="true">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="display:inline">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="display:inline">
+ transform="matrix(1.8539326,0,0,1.6231884,0,-1.947826)">
+ style="fill:none;stroke:#ff0000;stroke-width:2.14500451;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ transform="translate(0,-4)">