1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
Item {
id: fpsDisplayControl
property bool hidden: true
property real fps: 0.0
onHiddenChanged: {
if (fpsDisplayControl.hidden)
fpsDisplay.color = "transparent"
else
fpsDisplay.color = "#000000FF"
}
onFpsChanged: {
fpsDisplay.updateFps()
}
Rectangle {
anchors.fill: parent
id: fpsDisplay
color: "transparent"
property real maxFps: 60.0
property color maxFpsColor: "#5500FF00"
property color minFpsColor: "#55FF0000"
function updateFps() {
var scale = (fps > maxFps)?1.0:(fps/maxFps)
var r = (1 - scale) * minFpsColor.r + scale * maxFpsColor.r
var g = (1 - scale) * minFpsColor.g + scale * maxFpsColor.g
var b = (1 - scale) * minFpsColor.b + scale * maxFpsColor.b
var a = (1 - scale) * minFpsColor.a + scale * maxFpsColor.a
fpsCauge.height = scale * fpsDisplay.height
fpsCauge.color = Qt.rgba(r, g, b, a)
}
Rectangle {
id: fpsCauge
width: parent.width
anchors.bottom: parent.bottom
visible: !fpsDisplayControl.hidden
}
Text {
id: fpsText
text: ""+(fps | 0)
font.family: "Helvetica"
font.pixelSize: 16
font.weight: Font.Light
color: "white"
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
visible: !fpsDisplayControl.hidden
}
}
MouseArea {
anchors.fill: parent
onClicked: {
fpsDisplayControl.hidden = !fpsDisplayControl.hidden
}
}
}
|