kwave  18.07.70
RIFFChunk.h
Go to the documentation of this file.
1 /*************************************************************************
2  RIFFChunk.h - information about a RIFF chunk
3  -------------------
4  begin : Tue Mar 20 2002
5  copyright : (C) 2002 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef RIFF_CHUNK_H
19 #define RIFF_CHUNK_H
20 
21 #include "config.h"
22 
23 #include <QByteArray>
24 #include <QList>
25 #include <QString>
26 
27 namespace Kwave
28 {
29 
30  class RIFFChunk;
31 
33  typedef QList<Kwave::RIFFChunk *> RIFFChunkList;
34 
39  class RIFFChunk
40  {
41  public:
50  typedef enum {
51  Root,
52  Main,
53  Sub,
56  } ChunkType;
57 
68  RIFFChunk(Kwave::RIFFChunk *parent, const QByteArray &name,
69  const QByteArray &format, quint32 length,
70  quint32 phys_offset, quint32 phys_length);
71 
73  virtual ~RIFFChunk();
74 
79  bool isSane() const;
80 
85  inline ChunkType type() const { return m_type; }
86 
88  inline void setType(ChunkType type) { m_type = type; }
89 
91  inline const QByteArray &name() const { return m_name; }
92 
97  inline const QByteArray &format() const { return m_format; }
98 
100  inline void setFormat(const QByteArray &format) { m_format = format; }
101 
103  inline Kwave::RIFFChunk *parent() const { return m_parent; }
104 
111  const QByteArray path() const;
112 
114  quint32 dataStart() const;
115 
117  quint32 dataLength() const;
118 
123  inline quint32 length() const { return m_chunk_length; }
124 
129  void setLength(quint32 length);
130 
135  inline quint32 physStart() const { return m_phys_offset; }
136 
140  quint32 physEnd() const;
141 
146  inline quint32 physLength() const { return m_phys_length; }
147 
152 
156  inline const Kwave::RIFFChunkList &subChunks() const {
157  return m_sub_chunks;
158  }
159 
163  bool isChildOf(Kwave::RIFFChunk *chunk);
164 
170  void fixSize();
171 
176  void dumpStructure();
177 
178  private:
180  ChunkType m_type;
181 
183  QByteArray m_name;
184 
186  QByteArray m_format;
187 
190 
192  quint32 m_chunk_length;
193 
195  quint32 m_phys_offset;
196 
198  quint32 m_phys_length;
199 
202 
203  };
204 }
205 
206 #endif /* RIFF_CHUNK_H */
207 
208 //***************************************************************************
209 //***************************************************************************
quint32 m_phys_offset
Definition: RIFFChunk.h:195
Definition: App.h:33
quint32 physEnd() const
Definition: RIFFChunk.cpp:79
Kwave::RIFFChunkList m_sub_chunks
Definition: RIFFChunk.h:201
quint32 physStart() const
Definition: RIFFChunk.h:135
quint32 physLength() const
Definition: RIFFChunk.h:146
quint32 length() const
Definition: RIFFChunk.h:123
QByteArray m_format
Definition: RIFFChunk.h:186
Kwave::RIFFChunk * parent() const
Definition: RIFFChunk.h:103
const QByteArray path() const
Definition: RIFFChunk.cpp:88
quint32 dataStart() const
Definition: RIFFChunk.cpp:130
ChunkType type() const
Definition: RIFFChunk.h:85
ChunkType m_type
Definition: RIFFChunk.h:180
void setType(ChunkType type)
Definition: RIFFChunk.h:88
void dumpStructure()
Definition: RIFFChunk.cpp:203
QList< Kwave::RIFFChunk * > RIFFChunkList
Definition: RIFFChunk.h:30
quint32 m_chunk_length
Definition: RIFFChunk.h:192
quint32 dataLength() const
Definition: RIFFChunk.cpp:136
quint32 m_phys_length
Definition: RIFFChunk.h:198
Kwave::RIFFChunkList & subChunks()
Definition: RIFFChunk.h:151
bool isChildOf(Kwave::RIFFChunk *chunk)
Definition: RIFFChunk.cpp:149
virtual ~RIFFChunk()
Definition: RIFFChunk.cpp:38
const Kwave::RIFFChunkList & subChunks() const
Definition: RIFFChunk.h:156
Kwave::RIFFChunk * m_parent
Definition: RIFFChunk.h:189
RIFFChunk(Kwave::RIFFChunk *parent, const QByteArray &name, const QByteArray &format, quint32 length, quint32 phys_offset, quint32 phys_length)
Definition: RIFFChunk.cpp:28
QByteArray m_name
Definition: RIFFChunk.h:183
const QByteArray & name() const
Definition: RIFFChunk.h:91
const QByteArray & format() const
Definition: RIFFChunk.h:97
void setLength(quint32 length)
Definition: RIFFChunk.cpp:142
bool isSane() const
Definition: RIFFChunk.cpp:49
void setFormat(const QByteArray &format)
Definition: RIFFChunk.h:100