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