From 2186d5f3f95cd74a070a490d899291648d58667a Mon Sep 17 00:00:00 2001 From: Steven Fuller Date: Sun, 1 Jul 2001 00:55:22 +0000 Subject: Initial revision --- 3dc/win95/SNDCHUNK.CPP | 351 ------------------------------------------------- 1 file changed, 351 deletions(-) delete mode 100644 3dc/win95/SNDCHUNK.CPP (limited to '3dc/win95/SNDCHUNK.CPP') diff --git a/3dc/win95/SNDCHUNK.CPP b/3dc/win95/SNDCHUNK.CPP deleted file mode 100644 index c0e08d3..0000000 --- a/3dc/win95/SNDCHUNK.CPP +++ /dev/null @@ -1,351 +0,0 @@ -#include "chunk.hpp" -#include "envchunk.hpp" -#include "sndchunk.hpp" -#include "obchunk.hpp" -#include "md5.h" - -#ifdef cencon -#define new my_new -#endif -//macro for helping to force inclusion of chunks when using libraries -FORCE_CHUNK_INCLUDE_IMPLEMENT(sndchunk) - -RIF_IMPLEMENT_DYNCREATE("SOUNDOB2",Sound_Object_Chunk) - -Sound_Object_Chunk::Sound_Object_Chunk (Chunk_With_Children * parent, - ChunkVectorInt & pos, - const char * _name - ) -: Chunk (parent, "SOUNDOB2"), position (pos), - inner_range (0), outer_range (0), max_volume (0), pitch (0), - flags (0), probability (0), pad3 (0), - snd_name (0), wav_name (0) -{ - if (_name) - { - snd_name = new char [strlen(_name)+1]; - strcpy (snd_name, _name); - } - else - { - snd_name = new char [1]; - snd_name [0] = 0; - } -} - -Sound_Object_Chunk::~Sound_Object_Chunk() -{ - if (snd_name) - delete [] snd_name; - if (wav_name) - delete [] wav_name; -} - -Sound_Object_Chunk::Sound_Object_Chunk (Chunk_With_Children * parent, const char * data, size_t /*ssize*/) -: Chunk (parent, "SOUNDOB2"), snd_name (0), wav_name (0) -{ - position = *((ChunkVectorInt *) data); - data += sizeof(ChunkVectorInt); - - inner_range = *((int *)data); - data += 4; - outer_range = *((int *)data); - data += 4; - max_volume = *((int *)data); - data += 4; - pitch = *((int *)data); - data += 4; - flags = *((int *)data); - data += 4; - probability = *((int *)data); - data += 4; - pad3 = *((int *)data); - data += 4; - snd_name = new char [strlen (data) + 1]; - strcpy (snd_name, data); - data += strlen (data) + 1; - if (strlen(data)) - { - wav_name = new char [strlen (data) + 1]; - strcpy (wav_name, data); - } -} - -void Sound_Object_Chunk::fill_data_block ( char * data_start) -{ - strncpy (data_start, identifier, 8); - - data_start += 8; - - *((int *) data_start) = chunk_size; - - data_start += 4; - - *((ChunkVectorInt *) data_start) = position; - data_start += sizeof(ChunkVectorInt); - - - *((int *)data_start) = inner_range; - data_start += 4; - *((int *)data_start) = outer_range; - data_start += 4; - *((int *)data_start) = max_volume; - data_start += 4; - *((int *)data_start) = pitch; - data_start += 4; - *((int *)data_start) = flags; - data_start += 4; - *((int *)data_start) = probability; - data_start += 4; - *((int *)data_start) = pad3; - data_start += 4; - - sprintf (data_start, "%s", snd_name); - data_start += strlen (snd_name) + 1; - if (wav_name) - { - sprintf (data_start, "%s", wav_name); - } - else - { - *data_start = 0; - } -} - - -ObjectID Sound_Object_Chunk::CalculateID() -{ - ObjectID retval={0,0}; - - char buffer[16]; - md5_buffer(snd_name,strlen(snd_name),&buffer[0]); - buffer[7]=0; - retval = *(ObjectID*)&buffer[0]; - return retval; -} - -Sound_Object_Extra_Data_Chunk* Sound_Object_Chunk::get_extra_data_chunk() -{ - List chlist; - parent->lookup_child("SOUNDEXD",chlist); - if(!chlist.size())return 0; - - for(LIF chlif(&chlist);!chlif.done();chlif.next()) - { - Sound_Object_Extra_Data_Chunk* soedc=(Sound_Object_Extra_Data_Chunk*)chlif(); - Sound_Object_Extra_Name_Chunk* sname=(Sound_Object_Extra_Name_Chunk*) soedc->lookup_single_child("SOUNDNAM"); - - if(sname) - { - if(!strcmp(snd_name,sname->name)) - { - return soedc; - } - } - } - //no extra data chunk found - return 0; - -} -Sound_Object_Extra_Data_Chunk* Sound_Object_Chunk::create_extra_data_chunk() -{ - Sound_Object_Extra_Data_Chunk* soedc=get_extra_data_chunk(); - if(soedc)return soedc; - - return new Sound_Object_Extra_Data_Chunk(parent,this); -} - -Object_Alternate_Locations_Chunk* Sound_Object_Chunk::get_alternate_locations_chunk() -{ - Sound_Object_Extra_Data_Chunk* soedc=get_extra_data_chunk(); - if(!soedc) return 0; - return (Object_Alternate_Locations_Chunk*)soedc->lookup_single_child("ALTLOCAT"); -} - -Object_Alternate_Locations_Chunk* Sound_Object_Chunk::create_alternate_locations_chunk() -{ - Sound_Object_Extra_Data_Chunk* soedc=create_extra_data_chunk(); - - Object_Alternate_Locations_Chunk* loc_chunk=(Object_Alternate_Locations_Chunk*)soedc->lookup_single_child("ALTLOCAT"); - if(loc_chunk) return loc_chunk; - - return new Object_Alternate_Locations_Chunk(soedc); -} - - -///////////////////////////////////////////////////////////////////////////////////// -//class Sound_Object_Extra_Data_Chunk -RIF_IMPLEMENT_DYNCREATE("SOUNDEXD",Sound_Object_Extra_Data_Chunk) - -CHUNK_WITH_CHILDREN_LOADER("SOUNDEXD",Sound_Object_Extra_Data_Chunk) - -/* -Children for Sound_Object_Extra_Data_Chunk : - -"SOUNDNAM" Sound_Object_Extra_Name_Chunk -"ALTLOCAT" Object_Alternate_Locations_Chunk -*/ - - -Sound_Object_Extra_Data_Chunk::Sound_Object_Extra_Data_Chunk(Chunk_With_Children* parent,Sound_Object_Chunk* soc) -:Chunk_With_Children(parent,"SOUNDEXD") -{ - new Sound_Object_Extra_Name_Chunk(this,soc->snd_name); -} - -Sound_Object_Chunk* Sound_Object_Extra_Data_Chunk::get_sound_chunk() -{ - List chlist; - - lookup_child("SOUNDNAM",chlist); - if(!chlist.size()) return 0; - const char* name=((Sound_Object_Extra_Name_Chunk*)chlist.first_entry())->name; - - parent->lookup_child("SOUNDEXD",chlist); - for(LIF chlif(&chlist);!chlif.done();chlif.next()) - { - Sound_Object_Chunk* soc=(Sound_Object_Chunk*)chlif(); - if(!strcmp(soc->snd_name,name)) - { - return soc; - } - } - //no sound chunk found - return 0; -} - -///////////////////////////////////////////////////////////////////////////////////// -RIF_IMPLEMENT_DYNCREATE("SOUNDNAM",Sound_Object_Extra_Name_Chunk) - -Sound_Object_Extra_Name_Chunk::Sound_Object_Extra_Name_Chunk(Chunk_With_Children * parent, const char * data, size_t /*size*/) -:Chunk(parent,"SOUNDNAM") -{ - int length=strlen(data); - name=new char[length+1]; - strcpy(name,data); -} - -Sound_Object_Extra_Name_Chunk::Sound_Object_Extra_Name_Chunk(Chunk_With_Children * parent, const char * _name) -:Chunk(parent,"SOUNDNAM") -{ - name=new char[strlen(_name)+1]; - strcpy(name,_name); -} - -Sound_Object_Extra_Name_Chunk::~Sound_Object_Extra_Name_Chunk() -{ - delete name; -} - -void Sound_Object_Extra_Name_Chunk::fill_data_block(char* data_start) -{ - strncpy (data_start, identifier, 8); - data_start += 8; - *((int *) data_start) = chunk_size; - data_start += 4; - - strcpy(data_start,name); -} - - -size_t Sound_Object_Extra_Name_Chunk::size_chunk() -{ - chunk_size=12; - chunk_size+=(strlen(name)+4)&~3; - return chunk_size; -} -///////////////////////////////////////////////////////////////////////////////////// -RIF_IMPLEMENT_DYNCREATE("INDSOUND",Indexed_Sound_Chunk) - -Indexed_Sound_Chunk::Indexed_Sound_Chunk(Chunk_With_Children* parent,const char* data,const size_t) -:Chunk(parent,"INDSOUND") -{ - CHUNK_EXTRACT(index,int) - CHUNK_EXTRACT_STRING(wav_name) - CHUNK_EXTRACT(inner_range,int) - CHUNK_EXTRACT(outer_range,int) - CHUNK_EXTRACT(max_volume,int) - CHUNK_EXTRACT(pitch,int) - CHUNK_EXTRACT(flags,int) - CHUNK_EXTRACT_ARRAY(num_extra_data,extra_data,int) -} - -Indexed_Sound_Chunk::Indexed_Sound_Chunk(Chunk_With_Children* parent) -:Chunk(parent,"INDSOUND") -{ - index=0; - wav_name=0; - num_extra_data=0; - extra_data=0; -} - -Indexed_Sound_Chunk::~Indexed_Sound_Chunk() -{ - if(extra_data) delete [] extra_data; - if(wav_name) delete [] wav_name; -} - -void Indexed_Sound_Chunk::fill_data_block(char * data) -{ - CHUNK_FILL_START - CHUNK_FILL(index,int) - CHUNK_FILL_STRING(wav_name) - CHUNK_FILL(inner_range,int) - CHUNK_FILL(outer_range,int) - CHUNK_FILL(max_volume,int) - CHUNK_FILL(pitch,int) - CHUNK_FILL(flags,int) - CHUNK_FILL_ARRAY(num_extra_data,extra_data,int) - -} - -size_t Indexed_Sound_Chunk::size_chunk() -{ - chunk_size=12+24; - chunk_size+=4+4*num_extra_data; - if(wav_name) - chunk_size+=(strlen(wav_name)+4)&~3; - else - chunk_size+=4; - - return chunk_size; -} - -///////////////////////////////////////////////////////////////////////////////////// -/* -Sound_Collection_Chunk::Sound_Collection_Chunk(Chunk_With_Children* parent,const char* data,const size_t) -:Chunk(parent,"SOUNDCOL") -{ - CHUNK_EXTRACT(index,int) - CHUNK_EXTRACT_ARRAY(num_sounds,sounds,ChunkSoundWeighting) - CHUNK_EXTRACT(spare,int) -} - -Sound_Collection_Chunk::Sound_Collection_Chunk(Chunk_With_Children* parent) -:Chunk(parent,"SOUNDCOL") -{ - index=-1; - num_sounds=0; - sounds=0; - spare=0; -} - -Sound_Collection_Chunk::~Sound_Collection_Chunk() -{ - if(sounds) delete [] sounds; -} - -void Sound_Collection_Chunk::fill_data_block(char* data) -{ - CHUNK_FILL_START - CHUNK_FILL(index,int) - CHUNK_FILL_ARRAY(num_sounds,sounds,ChunkSoundWeighting) - CHUNK_FILL(spare,int) -} - -size_t Sound_Collection_Chunk::size_chunk() -{ - chunk_size=12+12+num_sounds*sizeof(ChunkSoundWeighting); - return chunk_size; -} -*/ \ No newline at end of file -- cgit v1.3