233 |
* @param list - pointer to a list chunk which contains an INFO list chunk |
* @param list - pointer to a list chunk which contains an INFO list chunk |
234 |
*/ |
*/ |
235 |
Info::Info(RIFF::List* list) { |
Info::Info(RIFF::List* list) { |
236 |
UseFixedLengthStrings = false; |
FixedStringLengths = NULL; |
237 |
pResourceListChunk = list; |
pResourceListChunk = list; |
238 |
if (list) { |
if (list) { |
239 |
RIFF::List* lstINFO = list->GetSubList(LIST_TYPE_INFO); |
RIFF::List* lstINFO = list->GetSubList(LIST_TYPE_INFO); |
286 |
* @param lstINFO - parent (INFO) RIFF list chunk |
* @param lstINFO - parent (INFO) RIFF list chunk |
287 |
* @param s - current value of info field |
* @param s - current value of info field |
288 |
* @param sDefault - default value |
* @param sDefault - default value |
|
* @param bUseFixedLengthStrings - should a specific string size be forced in the chunk? |
|
|
* @param size - wanted size of the INFO chunk. This is ignored if bUseFixedLengthStrings is false. |
|
289 |
*/ |
*/ |
290 |
void Info::SaveString(uint32_t ChunkID, RIFF::List* lstINFO, const String& s, const String& sDefault, bool bUseFixedLengthStrings, int size) { |
void Info::SaveString(uint32_t ChunkID, RIFF::List* lstINFO, const String& s, const String& sDefault) { |
291 |
|
int size = 0; |
292 |
|
if (FixedStringLengths) { |
293 |
|
for (int i = 0 ; FixedStringLengths[i].length ; i++) { |
294 |
|
if (FixedStringLengths[i].chunkId == ChunkID) { |
295 |
|
size = FixedStringLengths[i].length; |
296 |
|
} |
297 |
|
} |
298 |
|
} |
299 |
RIFF::Chunk* ck = lstINFO->GetSubChunk(ChunkID); |
RIFF::Chunk* ck = lstINFO->GetSubChunk(ChunkID); |
300 |
::SaveString(ChunkID, ck, lstINFO, s, sDefault, bUseFixedLengthStrings, size); // function from helper.h |
::SaveString(ChunkID, ck, lstINFO, s, sDefault, size != 0, size); // function from helper.h |
301 |
} |
} |
302 |
|
|
303 |
/** @brief Update chunks with current info values. |
/** @brief Update chunks with current info values. |
342 |
|
|
343 |
// save values |
// save values |
344 |
|
|
345 |
// (the string size values are for gig files; they are only |
SaveString(CHUNK_ID_IARL, lstINFO, ArchivalLocation, String("")); |
346 |
// used if UseFixedLengthStrings is set to true) |
SaveString(CHUNK_ID_IART, lstINFO, Artists, String("")); |
347 |
SaveString(CHUNK_ID_INAM, lstINFO, Name, defaultName, UseFixedLengthStrings, |
SaveString(CHUNK_ID_ICMS, lstINFO, Commissioned, String("")); |
348 |
resourceType == RIFF_TYPE_DLS ? 128 : 64); |
SaveString(CHUNK_ID_ICMT, lstINFO, Comments, defaultComments); |
349 |
SaveString(CHUNK_ID_IARL, lstINFO, ArchivalLocation, String(""), UseFixedLengthStrings, 256); |
SaveString(CHUNK_ID_ICOP, lstINFO, Copyright, String("")); |
350 |
SaveString(CHUNK_ID_ICRD, lstINFO, CreationDate, defaultCreationDate, UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_ICRD, lstINFO, CreationDate, defaultCreationDate); |
351 |
SaveString(CHUNK_ID_ICMT, lstINFO, Comments, defaultComments, UseFixedLengthStrings, 1024); |
SaveString(CHUNK_ID_IENG, lstINFO, Engineer, String("")); |
352 |
SaveString(CHUNK_ID_IPRD, lstINFO, Product, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_IGNR, lstINFO, Genre, String("")); |
353 |
SaveString(CHUNK_ID_ICOP, lstINFO, Copyright, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_IKEY, lstINFO, Keywords, String("")); |
354 |
SaveString(CHUNK_ID_IART, lstINFO, Artists, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_IMED, lstINFO, Medium, String("")); |
355 |
SaveString(CHUNK_ID_IGNR, lstINFO, Genre, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_INAM, lstINFO, Name, defaultName); |
356 |
SaveString(CHUNK_ID_IKEY, lstINFO, Keywords, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_IPRD, lstINFO, Product, String("")); |
357 |
SaveString(CHUNK_ID_IENG, lstINFO, Engineer, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_ISBJ, lstINFO, Subject, String("")); |
358 |
SaveString(CHUNK_ID_ITCH, lstINFO, Technician, String(""), UseFixedLengthStrings, 128); |
SaveString(CHUNK_ID_ISFT, lstINFO, Software, defaultSoftware); |
359 |
SaveString(CHUNK_ID_ISFT, lstINFO, Software, defaultSoftware, UseFixedLengthStrings, |
SaveString(CHUNK_ID_ISRC, lstINFO, Source, String("")); |
360 |
resourceType == LIST_TYPE_INS ? |
SaveString(CHUNK_ID_ISRF, lstINFO, SourceForm, String("")); |
361 |
(Software == "" ? defaultSoftware.length()+1 : Software.length()+1) : 128); |
SaveString(CHUNK_ID_ITCH, lstINFO, Technician, String("")); |
|
SaveString(CHUNK_ID_IMED, lstINFO, Medium, String(""), UseFixedLengthStrings, 128); |
|
|
SaveString(CHUNK_ID_ISRC, lstINFO, Source, String(""), UseFixedLengthStrings, 128); |
|
|
SaveString(CHUNK_ID_ISRF, lstINFO, SourceForm, String(""), UseFixedLengthStrings, 128); |
|
|
SaveString(CHUNK_ID_ICMS, lstINFO, Commissioned, String(""), UseFixedLengthStrings, 128); |
|
|
SaveString(CHUNK_ID_ISBJ, lstINFO, Subject, String(""), UseFixedLengthStrings, 128); |
|
362 |
} |
} |
363 |
|
|
364 |
|
|