~vcs-imports/mumble/trunk

« back to all changes in this revision

Viewing changes to src/mumble/AudioStats.cpp

  • Committer: slicer
  • Date: 2009-02-25 00:11:07 UTC
  • Revision ID: vcs-imports@canonical.com-20090225001107-2u2kucmaxkosl2dg
Avoid using QPainter::scale() as that produced a few artifacts in Qt 4.5.

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
        float scale = static_cast<float>(width()) / static_cast<float>(iMax - iMin);
70
70
        int h = height();
71
71
 
72
 
        p.scale(scale, h);
73
 
 
74
 
        p.fillRect(QRect(0,0, 10, 10), Qt::blue);
75
 
 
76
 
        if (iValue <= iBelow) {
77
 
                p.fillRect(0, 0, iValue-1, 1, qcBelow);
78
 
                p.fillRect(iValue, 0, iBelow-iValue, 1, qcBelow.darker(300));
79
 
                p.fillRect(iBelow, 0, iAbove-iBelow, 1, qcInside.darker(300));
80
 
                p.fillRect(iAbove, 0, iMax-iAbove, 1, qcAbove.darker(300));
81
 
        } else if (iValue <= iAbove) {
82
 
                p.fillRect(0, 0, iBelow, 1, qcBelow);
83
 
                p.fillRect(iBelow, 0, iValue-iBelow, 1, qcInside);
84
 
                p.fillRect(iValue, 0, iAbove-iValue, 1, qcInside.darker(300));
85
 
                p.fillRect(iAbove, 0, iMax-iAbove, 1, qcAbove.darker(300));
 
72
        int val = lroundf(iValue * scale);
 
73
        int below = lroundf(iBelow * scale);
 
74
        int above = lroundf(iAbove * scale);
 
75
        int max = lroundf(iMax * scale);
 
76
        int min = lroundf(iMin * scale);
 
77
        int peak = lroundf(iPeak * scale);
 
78
 
 
79
        if (val <= below) {
 
80
                p.fillRect(0, 0, val, h, qcBelow);
 
81
                p.fillRect(val, 0, below-val, h, qcBelow.darker(300));
 
82
                p.fillRect(below, 0, above-below, h, qcInside.darker(300));
 
83
                p.fillRect(above, 0, max-above, h, qcAbove.darker(300));
 
84
        } else if (val <= above) {
 
85
                p.fillRect(0, 0, below, h, qcBelow);
 
86
                p.fillRect(below, 0, val-below, h, qcInside);
 
87
                p.fillRect(val, 0, above-val, h, qcInside.darker(300));
 
88
                p.fillRect(above, 0, max-above, h, qcAbove.darker(300));
86
89
        } else {
87
 
                p.fillRect(0, 0, iBelow, 1, qcBelow);
88
 
                p.fillRect(iBelow, 0, iAbove-iBelow, 1, qcInside);
89
 
                p.fillRect(iAbove, 0, iValue-iAbove, 1, qcAbove);
90
 
                p.fillRect(iValue, 0, iMax-iValue, 1, qcAbove.darker(300));
 
90
                p.fillRect(0, 0, below, h, qcBelow);
 
91
                p.fillRect(below, 0, above-below, h, qcInside);
 
92
                p.fillRect(above, 0, val-above, h, qcAbove);
 
93
                p.fillRect(val, 0, max-val, h, qcAbove.darker(300));
91
94
        }
92
95
 
93
 
        if ((iPeak >= iMin) && (iPeak <= iMax))  {
94
 
                if (iPeak <= iBelow)
 
96
        if ((peak >= min) && (peak <= max))  {
 
97
                if (peak <= below)
95
98
                        p.setPen(qcBelow.lighter(150));
96
 
                else if (iPeak <= iAbove)
 
99
                else if (peak <= above)
97
100
                        p.setPen(qcInside.lighter(150));
98
101
                else
99
102
                        p.setPen(qcAbove.lighter(150));
100
 
                p.drawLine(iPeak, 0, iPeak, 1);
 
103
                p.drawLine(peak, 0, peak, h);
101
104
        }
102
105
 
103
106
}