diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-04 10:51:33 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-04 11:30:37 +0300 |
commit | 4e2ee15086da3cb1e2d16caac7928b80e2bcdb26 (patch) | |
tree | 9c45d7bd0bcc90ba704d54f7d582b7e44efe4d34 /examples/audiolevels/audiolevelsiodevice.cpp | |
parent | 3aa0c8d52af26ba8752450c08865bf674814bcb2 (diff) |
Made audiolevels example show something sensible
+ Fixed zoom level setting via API
Task-number: QTRD-2244
Change-Id: Iab8d877361c480ba4010a79e93af8a0121239b5d
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples/audiolevels/audiolevelsiodevice.cpp')
-rw-r--r-- | examples/audiolevels/audiolevelsiodevice.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/examples/audiolevels/audiolevelsiodevice.cpp b/examples/audiolevels/audiolevelsiodevice.cpp new file mode 100644 index 00000000..46e5aadb --- /dev/null +++ b/examples/audiolevels/audiolevelsiodevice.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVis3D module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "audiolevelsiodevice.h" +#include <QDebug> + +QT_DATAVIS3D_USE_NAMESPACE + +AudioLevelsIODevice::AudioLevelsIODevice(QBarDataProxy *proxy, QObject *parent) + : QIODevice(parent), + m_proxy(proxy) +{ +} + +// Implementation required for this pure virtual function +qint64 AudioLevelsIODevice::readData(char *data, qint64 maxSize) +{ + Q_UNUSED(data) + Q_UNUSED(maxSize) + return -1; +} + +qint64 AudioLevelsIODevice::writeData(const char *data, qint64 maxSize) +{ + static const int resolution = 8; + static const int maxRowSize = 1000; + + int newDataSize = maxSize / resolution; + + const QBarDataRow *oldRow = m_proxy->rowAt(0); + + int rowSize = qMin((newDataSize + oldRow->size()), maxRowSize); + + QBarDataRow *row = new QBarDataRow(rowSize); + + // Insert data in reverse order, so that newest data is always at the front of the row + for (int i = newDataSize - 1; i >= 0; i--) + (*row)[i].setValue(((quint8)data[resolution * i] - 128) / 2.0); + + // Append old data to new row + for (int i = newDataSize; i < rowSize; i++) + (*row)[i].setValue(oldRow->at(i - newDataSize).value()); + + m_proxy->setRow(0, row); + + return maxSize; +} + + |