File indexing completed on 2024-05-12 04:51:02

0001 /*
0002     SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl>
0003     SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "k3baudiozerodatareader.h"
0009 #include "k3baudiozerodata.h"
0010 
0011 #include <cstring>
0012 
0013 namespace K3b {
0014 
0015 
0016 class AudioZeroDataReader::Private
0017 {
0018 public:
0019     Private( AudioZeroData& s )
0020         : source( s )
0021     {
0022     }
0023 
0024     AudioZeroData& source;
0025 };
0026 
0027 
0028 AudioZeroDataReader::AudioZeroDataReader( AudioZeroData& source, QObject* parent )
0029     : QIODevice( parent ),
0030       d( new Private( source ) )
0031 {
0032 }
0033 
0034 
0035 AudioZeroDataReader::~AudioZeroDataReader()
0036 {
0037     close();
0038 }
0039 
0040 
0041 bool AudioZeroDataReader::open( QIODevice::OpenMode mode )
0042 {
0043     if( !mode.testFlag( QIODevice::WriteOnly ) ) {
0044         return QIODevice::open( mode );
0045     }
0046     else {
0047         return false;
0048     }
0049 }
0050 
0051 
0052 bool AudioZeroDataReader::isSequential() const
0053 {
0054     return false;
0055 }
0056 
0057 
0058 qint64 AudioZeroDataReader::size() const
0059 {
0060     return d->source.length().audioBytes();
0061 }
0062 
0063 
0064 qint64 AudioZeroDataReader::writeData( const char* /*data*/, qint64 /*len*/ )
0065 {
0066     return -1;
0067 }
0068 
0069 
0070 qint64 AudioZeroDataReader::readData( char* data, qint64 maxlen )
0071 {
0072     if( pos() + maxlen > size() )
0073         maxlen = size() - pos();
0074 
0075     ::memset( data, 0, maxlen );
0076 
0077     return maxlen;
0078 }
0079 
0080 } // namespace K3b