/[svn]/libgig/trunk/src/gig.cpp
ViewVC logotype

Diff of /libgig/trunk/src/gig.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1316 by schoenebeck, Fri Aug 31 19:09:13 2007 UTC revision 1317 by persson, Sat Sep 1 07:15:53 2007 UTC
# Line 1573  namespace { Line 1573  namespace {
1573       * It will be called automatically when File::Save() was called.       * It will be called automatically when File::Save() was called.
1574       */       */
1575      void DimensionRegion::UpdateChunks() {      void DimensionRegion::UpdateChunks() {
         // check if wsmp is going to be created by  
         // DLS::Sampler::UpdateChunks  
         bool wsmp_created = !pParentList->GetSubChunk(CHUNK_ID_WSMP);  
   
1576          // first update base class's chunk          // first update base class's chunk
1577          DLS::Sampler::UpdateChunks();          DLS::Sampler::UpdateChunks();
1578    
# Line 1589  namespace { Line 1585  namespace {
1585    
1586          // make sure '3ewa' chunk exists          // make sure '3ewa' chunk exists
1587          RIFF::Chunk* _3ewa = pParentList->GetSubChunk(CHUNK_ID_3EWA);          RIFF::Chunk* _3ewa = pParentList->GetSubChunk(CHUNK_ID_3EWA);
1588          if (!_3ewa)  _3ewa = pParentList->AddSubChunk(CHUNK_ID_3EWA, 140);          if (!_3ewa) {
1589          else if (wsmp_created) {              File* pFile = (File*) GetParent()->GetParent()->GetParent();
1590              // make sure the chunk order is: wsmp, 3ewa              bool version3 = pFile->pVersion && pFile->pVersion->major == 3;
1591              pParentList->MoveSubChunk(_3ewa, 0);              _3ewa = pParentList->AddSubChunk(CHUNK_ID_3EWA, version3 ? 148 : 140);
1592          }          }
1593          pData = (uint8_t*) _3ewa->LoadChunkData();          pData = (uint8_t*) _3ewa->LoadChunkData();
1594    
# Line 2302  namespace { Line 2298  namespace {
2298          // first update base class's chunks          // first update base class's chunks
2299          DLS::Region::UpdateChunks();          DLS::Region::UpdateChunks();
2300    
         File* pFile = (File*) GetParent()->GetParent();  
         bool version3 = pFile->pVersion && pFile->pVersion->major == 3;  
   
2301          // update dimension region's chunks          // update dimension region's chunks
2302          for (int i = 0; i < DimensionRegions; i++) {          for (int i = 0; i < DimensionRegions; i++) {
2303              DimensionRegion* d = pDimensionRegions[i];              pDimensionRegions[i]->UpdateChunks();
   
             // make sure '3ewa' chunk exists (we need to this before  
             // calling DimensionRegion::UpdateChunks, as  
             // DimensionRegion doesn't know which file version it is)  
             RIFF::Chunk* _3ewa = d->pParentList->GetSubChunk(CHUNK_ID_3EWA);  
             if (!_3ewa) d->pParentList->AddSubChunk(CHUNK_ID_3EWA, version3 ? 148 : 140);  
   
             d->UpdateChunks();  
2304          }          }
2305    
2306            File* pFile = (File*) GetParent()->GetParent();
2307            bool version3 = pFile->pVersion && pFile->pVersion->major == 3;
2308          const int iMaxDimensions =  version3 ? 8 : 5;          const int iMaxDimensions =  version3 ? 8 : 5;
2309          const int iMaxDimensionRegions = version3 ? 256 : 32;          const int iMaxDimensionRegions = version3 ? 256 : 32;
2310    

Legend:
Removed from v.1316  
changed lines
  Added in v.1317

  ViewVC Help
Powered by ViewVC