C

Qt Quick Ultralite Motorcycle Cluster Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.15
import QtQuickUltralite.Extras 2.0

Row {
    id: root
    visible: QulPerf.enabled

    property int minFPS: 1000
    property int maxFPS: 0
    property int avgFPSum: 0
    property int avgCounter: 0
    property int fps: QulPerf.fps
    readonly property int minFPSlimit: 1
    property real repaint: QulPerf.repaint
    property real repaintAvgSum: 0

    spacing: 10

    Timer {
        id: averageFPStimer
        interval: 250
        running: true
        repeat: true
        onTriggered: {
            root.averageCalc()
        }
    }
    function averageCalc() {
        root.avgFPSum = root.avgFPSum + root.fps
        root.avgCounter = root.avgCounter + 1

        root.repaintAvgSum = root.repaintAvgSum + root.repaint
    }
    PerformanceMetricItem {
        label: "FPS:"
        value: QulPerf.fps.toFixed(0)
    }

    PerformanceMetricItem {
        label: "FPSmin:"
        value: (QulPerf.fps < root.minFPS && QulPerf.fps
                > root.minFPSlimit ? root.minFPS = QulPerf.fps : root.minFPS).toFixed(0)
    }

    //    PerformanceMetricItem {
    //        label: "FPSmax:"
    //        value: (QulPerf.fps > root.maxFPS ? root.maxFPS = QulPerf.fps : root.maxFPS).toString()
    //    }
    PerformanceMetricItem {
        label: "FPSavg:"
        value: (root.avgFPSum / root.avgCounter).toFixed(0)
    }

    PerformanceMetricItem {
        label: "repaint:"
        value: root.repaint.toFixed(1)
    }
    PerformanceMetricItem {
        label: "repAvg:"
        value: (root.repaintAvgSum / root.avgCounter).toFixed(1)
    }

    Component.onCompleted: {
        QulPerf.recording = true
    }
}