/[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 3794 by schoenebeck, Thu Feb 6 17:33:21 2020 UTC revision 3795 by schoenebeck, Thu Jun 25 15:21:44 2020 UTC
# Line 1942  bool DimRegionEdit::set_sample(gig::Samp Line 1942  bool DimRegionEdit::set_sample(gig::Samp
1942      for (std::set<gig::DimensionRegion*>::iterator itDimReg = dimregs.begin();      for (std::set<gig::DimensionRegion*>::iterator itDimReg = dimregs.begin();
1943           itDimReg != dimregs.end(); ++itDimReg)           itDimReg != dimregs.end(); ++itDimReg)
1944      {      {
1945            //NOTE: sample may be NULL !
1946            // (exactly: if called by nullOutSampleReference())
1947          result |= set_sample(*itDimReg, sample, copy_sample_unity, copy_sample_tune, copy_sample_loop);          result |= set_sample(*itDimReg, sample, copy_sample_unity, copy_sample_tune, copy_sample_loop);
1948      }      }
1949      return result;      return result;
# Line 1952  bool DimRegionEdit::set_sample(gig::Dime Line 1954  bool DimRegionEdit::set_sample(gig::Dime
1954      if (dimreg) {      if (dimreg) {
1955          //TODO: we should better move the code from MainWindow::on_sample_label_drop_drag_data_received() here          //TODO: we should better move the code from MainWindow::on_sample_label_drop_drag_data_received() here
1956    
1957            //NOTE: sample may be NULL !
1958            // (exactly: if called by nullOutSampleReference())
1959    
1960          // 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()
1961          //DimRegionChangeGuard(this, dimregion);          //DimRegionChangeGuard(this, dimregion);
1962    
1963            gig::Sample* oldref = dimreg->pSample;
1964    
1965          // make sure stereo samples always are the same in both          // make sure stereo samples always are the same in both
1966          // dimregs in the samplechannel dimension          // dimregs in the samplechannel dimension
1967          int nbDimregs = 1;          int nbDimregs = 1;
1968          gig::DimensionRegion* d[2] = { dimreg, 0 };          gig::DimensionRegion* d[2] = { dimreg, 0 };
1969          if (sample->Channels == 2) {          if ((sample && sample->Channels == 2) ||
1970                (!sample && oldref && oldref->Channels == 2))
1971            {
1972              gig::Region* region = dimreg->GetParent();              gig::Region* region = dimreg->GetParent();
1973    
1974              int bitcount = 0;              int bitcount = 0;
# Line 1985  bool DimRegionEdit::set_sample(gig::Dime Line 1994  bool DimRegionEdit::set_sample(gig::Dime
1994              }              }
1995          }          }
1996    
         gig::Sample* oldref = dimreg->pSample;  
   
1997          for (int i = 0 ; i < nbDimregs ; i++) {          for (int i = 0 ; i < nbDimregs ; i++) {
1998              d[i]->pSample = sample;              d[i]->pSample = sample;
1999    
# Line 2015  bool DimRegionEdit::set_sample(gig::Dime Line 2022  bool DimRegionEdit::set_sample(gig::Dime
2022    
2023          // update ui          // update ui
2024          update_model++;          update_model++;
2025          wSample->set_text(gig_to_utf8(dimreg->pSample->pInfo->Name));          wSample->set_text(
2026                dimreg->pSample ? gig_to_utf8(dimreg->pSample->pInfo->Name) :
2027                                  _("NULL")
2028            );
2029          eUnityNote.set_value(dimreg->UnityNote);          eUnityNote.set_value(dimreg->UnityNote);
2030          eFineTune.set_value(dimreg->FineTune);          eFineTune.set_value(dimreg->FineTune);
2031          eSampleLoopEnabled.set_value(dimreg->SampleLoops);          eSampleLoopEnabled.set_value(dimreg->SampleLoops);
# Line 2155  void DimRegionEdit::set_LoopPlayCount(gi Line 2165  void DimRegionEdit::set_LoopPlayCount(gi
2165    
2166  void DimRegionEdit::nullOutSampleReference() {  void DimRegionEdit::nullOutSampleReference() {
2167      if (!dimregion) return;      if (!dimregion) return;
2168      gig::Sample* oldref = dimregion->pSample;      set_sample(NULL/*sample*/, false, false, false);
     if (!oldref) return;  
   
     DimRegionChangeGuard(this, dimregion);  
   
     // in case currently assigned sample is a stereo one, then remove both  
     // references (expected to be due to a "stereo dimension")  
     gig::DimensionRegion* d[2] = { dimregion, NULL };  
     if (oldref->Channels == 2) {  
         gig::Region* region = dimregion->GetParent();  
         {  
             int stereo_bit = 0;  
             int bitcount = 0;  
             for (int dim = 0 ; dim < region->Dimensions ; dim++) {  
                 if (region->pDimensionDefinitions[dim].dimension == gig::dimension_samplechannel) {  
                     stereo_bit = 1 << bitcount;  
                     break;  
                 }  
                 bitcount += region->pDimensionDefinitions[dim].bits;  
             }  
   
             if (stereo_bit) {  
                 int dimregno;  
                 for (dimregno = 0 ; dimregno < region->DimensionRegions ; dimregno++) {  
                     if (region->pDimensionRegions[dimregno] == dimregion) {  
                         break;  
                     }  
                 }  
                 d[0] = region->pDimensionRegions[dimregno & ~stereo_bit];  
                 d[1] = region->pDimensionRegions[dimregno | stereo_bit];  
             }  
         }  
     }  
   
     if (d[0]) d[0]->pSample = NULL;  
     if (d[1]) d[1]->pSample = NULL;  
   
     // update UI elements  
     set_dim_region(dimregion);  
   
     sample_ref_changed_signal.emit(oldref, NULL);  
2169  }  }
2170    
2171  void DimRegionEdit::onButtonSelectSamplePressed() {  void DimRegionEdit::onButtonSelectSamplePressed() {

Legend:
Removed from v.3794  
changed lines
  Added in v.3795

  ViewVC Help
Powered by ViewVC