You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.7 KiB
138 lines
4.7 KiB
/**************************************************************************** |
|
* |
|
* (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
|
* |
|
* QGroundControl is licensed according to the terms in the file |
|
* COPYING.md in the root of the source code directory. |
|
* |
|
* @file |
|
* @author Gus Grubba <gus@auterion.com> |
|
*/ |
|
|
|
import QtQuick 2.11 |
|
import QtGraphicalEffects 1.0 |
|
|
|
import QGroundControl 1.0 |
|
import QGroundControl.Controls 1.0 |
|
import QGroundControl.ScreenTools 1.0 |
|
import QGroundControl.Palette 1.0 |
|
import QGroundControl.FlightMap 1.0 |
|
|
|
Item { |
|
id: root |
|
|
|
property bool showPitch: true |
|
property var vehicle: null |
|
property real size |
|
property bool showHeading: false |
|
|
|
property real _rollAngle: vehicle ? vehicle.roll.rawValue : 0 |
|
property real _pitchAngle: vehicle ? vehicle.pitch.rawValue : 0 |
|
|
|
width: size |
|
height: size |
|
|
|
Item { |
|
id: instrument |
|
anchors.fill: parent |
|
visible: false |
|
|
|
//---------------------------------------------------- |
|
//-- Artificial Horizon |
|
CustomArtificialHorizon { |
|
rollAngle: _rollAngle |
|
pitchAngle: _pitchAngle |
|
skyColor1: "#0a2e50" |
|
skyColor2: "#2f85d4" |
|
groundColor1: "#897459" |
|
groundColor2: "#4b3820" |
|
anchors.fill: parent |
|
} |
|
//---------------------------------------------------- |
|
//-- Instrument Dial |
|
Image { |
|
id: instrumentDial |
|
source: "/custom/img/attitude_dial.svg" |
|
mipmap: true |
|
fillMode: Image.PreserveAspectFit |
|
anchors.fill: parent |
|
sourceSize.height: parent.height |
|
transform: Rotation { |
|
origin.x: root.width / 2 |
|
origin.y: root.height / 2 |
|
angle: -_rollAngle |
|
} |
|
} |
|
//---------------------------------------------------- |
|
//-- Pointer |
|
Image { |
|
id: pointer |
|
height: size * 0.0625 |
|
width: height |
|
source: "/custom/img/attitude_pointer.svg" |
|
antialiasing: true |
|
fillMode: Image.PreserveAspectFit |
|
sourceSize.height: height |
|
anchors.top: parent.top |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
} |
|
//---------------------------------------------------- |
|
//-- Pitch |
|
QGCPitchIndicator { |
|
id: pitchWidget |
|
visible: root.showPitch |
|
size: root.size * 0.5 |
|
anchors.verticalCenter: parent.verticalCenter |
|
pitchAngle: _pitchAngle |
|
rollAngle: _rollAngle |
|
color: Qt.rgba(0,0,0,0) |
|
} |
|
//---------------------------------------------------- |
|
//-- Cross Hair |
|
Image { |
|
id: crossHair |
|
anchors.centerIn: parent |
|
source: "/custom/img/attitude_crosshair.svg" |
|
mipmap: true |
|
width: size * 0.75 |
|
sourceSize.width: width |
|
fillMode: Image.PreserveAspectFit |
|
} |
|
} |
|
|
|
Rectangle { |
|
id: mask |
|
anchors.fill: instrument |
|
radius: width / 2 |
|
color: "black" |
|
visible: false |
|
} |
|
|
|
OpacityMask { |
|
anchors.fill: instrument |
|
source: instrument |
|
maskSource: mask |
|
} |
|
|
|
Rectangle { |
|
id: borderRect |
|
anchors.fill: parent |
|
radius: width / 2 |
|
color: Qt.rgba(0,0,0,0) |
|
border.color: "#000" |
|
border.width: 1 |
|
} |
|
|
|
QGCLabel { |
|
anchors.bottomMargin: Math.round(ScreenTools.defaultFontPixelHeight * 0.5) |
|
anchors.bottom: parent.bottom |
|
anchors.horizontalCenter: parent.horizontalCenter |
|
text: _headingString3 |
|
color: "white" |
|
visible: showHeading |
|
font.pointSize: ScreenTools.smallFontPointSize |
|
property string _headingString: vehicle ? vehicle.heading.rawValue.toFixed(0) : "OFF" |
|
property string _headingString2: _headingString.length === 1 ? "0" + _headingString : _headingString |
|
property string _headingString3: _headingString2.length === 2 ? "0" + _headingString2 : _headingString2 |
|
} |
|
}
|
|
|