139 lines
4.7 KiB
QML
139 lines
4.7 KiB
QML
|
/****************************************************************************
|
||
|
*
|
||
|
* (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
|
||
|
}
|
||
|
}
|