testdiff2/spiri_src/added/custom/res/Custom/Widgets/CustomAttitudeWidget.qml
2023-12-21 08:03:49 -05:00

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
}
}