/[svn]/gigedit/trunk/src/gigedit/dimregionedit.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/dimregionedit.cpp

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

revision 1623 by persson, Fri Jan 4 19:42:45 2008 UTC revision 1798 by persson, Thu Dec 4 20:35:33 2008 UTC
# Line 958  bool DimRegionEdit::set_sample(gig::Samp Line 958  bool DimRegionEdit::set_sample(gig::Samp
958          // currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received()          // currently commented because we're sending a similar signal in MainWindow::on_sample_label_drop_drag_data_received()
959          //dimreg_to_be_changed_signal.emit(dimregion);          //dimreg_to_be_changed_signal.emit(dimregion);
960    
961            // make sure stereo samples always are the same in both
962            // dimregs in the samplechannel dimension
963            int nbDimregs = 1;
964            gig::DimensionRegion* d[2] = { dimregion, 0 };
965            if (sample->Channels == 2) {
966                gig::Region* region = dimregion->GetParent();
967    
968                int bitcount = 0;
969                int stereo_bit = 0;
970                for (int dim = 0 ; dim < region->Dimensions ; dim++) {
971                    if (region->pDimensionDefinitions[dim].dimension == gig::dimension_samplechannel) {
972                        stereo_bit = 1 << bitcount;
973                        break;
974                    }
975                    bitcount += region->pDimensionDefinitions[dim].bits;
976                }
977    
978                if (stereo_bit) {
979                    int dimregno;
980                    for (dimregno = 0 ; dimregno < region->DimensionRegions ; dimregno++) {
981                        if (region->pDimensionRegions[dimregno] == dimregion) {
982                            break;
983                        }
984                    }
985                    d[0] = region->pDimensionRegions[dimregno & ~stereo_bit];
986                    d[1] = region->pDimensionRegions[dimregno | stereo_bit];
987                    nbDimregs = 2;
988                }
989            }
990    
991          gig::Sample* oldref = dimregion->pSample;          gig::Sample* oldref = dimregion->pSample;
         dimregion->pSample = sample;  
992    
993          // copy sample information from Sample to DimensionRegion          for (int i = 0 ; i < nbDimregs ; i++) {
994                d[i]->pSample = sample;
995    
996          dimregion->UnityNote = sample->MIDIUnityNote;              // copy sample information from Sample to DimensionRegion
         dimregion->FineTune = sample->FineTune;  
997    
998          int loops = sample->Loops ? 1 : 0;              d[i]->UnityNote = sample->MIDIUnityNote;
999          while (dimregion->SampleLoops > loops) {              d[i]->FineTune = sample->FineTune;
1000              dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]);  
1001          }              int loops = sample->Loops ? 1 : 0;
1002          while (dimregion->SampleLoops < sample->Loops) {              while (d[i]->SampleLoops > loops) {
1003              DLS::sample_loop_t loop;                  d[i]->DeleteSampleLoop(&d[i]->pSampleLoops[0]);
1004              dimregion->AddSampleLoop(&loop);              }
1005          }              while (d[i]->SampleLoops < sample->Loops) {
1006          if (loops) {                  DLS::sample_loop_t loop;
1007              dimregion->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t);                  d[i]->AddSampleLoop(&loop);
1008              dimregion->pSampleLoops[0].LoopType = sample->LoopType;              }
1009              dimregion->pSampleLoops[0].LoopStart = sample->LoopStart;              if (loops) {
1010              dimregion->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1;                  d[i]->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t);
1011                    d[i]->pSampleLoops[0].LoopType = sample->LoopType;
1012                    d[i]->pSampleLoops[0].LoopStart = sample->LoopStart;
1013                    d[i]->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1;
1014                }
1015          }          }
1016    
1017          // update ui          // update ui

Legend:
Removed from v.1623  
changed lines
  Added in v.1798

  ViewVC Help
Powered by ViewVC