This file is indexed.

/usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/PerformanceMetrics/BarGraph.qml is in qml-module-ubuntu-performancemetrics 1.3.1918+16.04.20160404-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Copyright 2014 Canonical Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import QtQuick 2.4
import Ubuntu.Components 1.3
import Ubuntu.PerformanceMetrics 1.0 as PerformanceMetrics

Item {
    id: graph
    
    property var model
    property real maximumValue
    property alias labels: labelsRepeater.model
    property alias backgroundColor: background.color
    property color color: Qt.rgba(0.4, 0.73, 0.4, 1.0)
    property real threshold: 16.0
    property color aboveThresholdColor: "#ff4e00"
    property string labelFormat: "%1"

    implicitWidth: units.gu(38)
    implicitHeight: units.gu(8)

    Rectangle {
        id: background
        anchors.fill: parent
        color: Qt.rgba(0.0, 0.0, 0.0, 0.8)
    }

    PerformanceMetrics.TextureFromImage {
        id: texture
        image: graph.model.image
    }

    ShaderEffect {
        anchors.fill: parent

        property var texture: texture
        property real shift: graph.model.shift / graph.model.samples
        property real maximumValue: graph.maximumValue
        property color color: graph.color
        property real threshold: graph.threshold
        property color aboveThresholdColor: graph.aboveThresholdColor

        vertexShader: "
                uniform mediump mat4 qt_Matrix;
                uniform mediump float shift;
                attribute mediump vec4 qt_Vertex;
                attribute mediump vec2 qt_MultiTexCoord0;
                varying mediump vec2 coord;
                void main() {
                    coord = qt_MultiTexCoord0 + vec2(shift, 0.0);
                    gl_Position = qt_Matrix * qt_Vertex;
                }"

        fragmentShader: "
                varying mediump vec2 coord;
                uniform sampler2D texture;
                uniform lowp float qt_Opacity;
                uniform lowp float maximumValue;
                uniform lowp vec4 color;
                uniform lowp float threshold;
                uniform lowp vec4 aboveThresholdColor;
                void main() {
                    lowp vec4 tex = texture2D(texture, vec2(coord.x, coord.y));
                    lowp float value = tex.r * 255.0;
                    lowp float isOn = 1.0 - step(value / maximumValue, 1.0 - coord.y);
                    lowp float isAboveThreshold = step(threshold, value);

                    gl_FragColor = mix(vec4(0.0), mix(color, aboveThresholdColor, isAboveThreshold), isOn) * qt_Opacity;
                }"
    }

    Repeater {
        id: labelsRepeater

        Item {
            anchors {
                left: parent.left
                right: parent.right
                bottom: parent.bottom
                bottomMargin: modelData.value / graph.maximumValue * parent.height
            }

            Label {
                id: label
                anchors {
                    left: parent.left
                    leftMargin: units.gu(0.5)
                    verticalCenter: parent.verticalCenter
                }
                text: modelData.label
                color: modelData.color
                fontSize: "x-small"
            }

            Rectangle {
                anchors {
                    left: label.right
                    leftMargin: units.gu(0.5)
                    right: parent.right
                }
                height: 1
                color: modelData.color
            }
        }
    }

    Label {
        anchors {
            top: parent.top
            topMargin: units.gu(1)
            right: parent.right
            rightMargin: units.gu(1)
        }
        text: graph.labelFormat.arg(graph.model.currentValue)
        color: "white"
    }
}