mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 05:39:37 +08:00
81 lines
2.4 KiB
QML
81 lines
2.4 KiB
QML
import QtQuick 2.0
|
|
import QtQuick.Window 2.2
|
|
import UM 1.3 as UM
|
|
|
|
// This is an QML item that shows the FPS and a running average of the FPS.
|
|
Item
|
|
{
|
|
id: base
|
|
property alias backgroundColor: background.color
|
|
property alias textColor: fpsText.color
|
|
|
|
property int numMeasurementsToAverage: 3
|
|
|
|
width: fpsText.contentWidth + UM.Theme.getSize("default_margin").height
|
|
height: fpsText.contentHeight + UM.Theme.getSize("default_margin").height
|
|
|
|
Rectangle
|
|
{
|
|
id: background
|
|
|
|
// We use a trick here to figure out how often we can get a redraw triggered.
|
|
// By adding a rotating rectangle, we can increase a counter by one every time we get notified.
|
|
// After that, we trigger a timer once every second to look at that number.
|
|
property int frameCounter: 0
|
|
property int averageFrameCounter: 0
|
|
property int counter: 0
|
|
property int fps: 0
|
|
property real averageFps: 0.0
|
|
|
|
color: UM.Theme.getColor("primary")
|
|
|
|
width: parent.width
|
|
height: parent.height
|
|
|
|
Rectangle
|
|
{
|
|
width: 0
|
|
height: 0
|
|
NumberAnimation on rotation
|
|
{
|
|
from: 0
|
|
to: 360
|
|
duration: 1000
|
|
loops: Animation.Infinite
|
|
}
|
|
onRotationChanged: parent.frameCounter++;
|
|
visible: false
|
|
}
|
|
|
|
Text
|
|
{
|
|
id: fpsText
|
|
anchors.fill:parent
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
color: UM.Theme.getColor("text")
|
|
font: UM.Theme.getFont("default")
|
|
text: "Ø " + parent.averageFps + " | " + parent.fps + " fps"
|
|
}
|
|
|
|
Timer
|
|
{
|
|
interval: 1000
|
|
repeat: true
|
|
running: true
|
|
onTriggered:
|
|
{
|
|
parent.averageFrameCounter += parent.frameCounter;
|
|
parent.fps = parent.frameCounter;
|
|
parent.counter++;
|
|
parent.frameCounter = 0;
|
|
if (parent.counter >= base.numMeasurementsToAverage)
|
|
{
|
|
parent.averageFps = (parent.averageFrameCounter / parent.counter).toFixed(2)
|
|
parent.averageFrameCounter = 0;
|
|
parent.counter = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |