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