MCPcopy Create free account
hub / github.com/audacity/audacity / UpdateDraw

Method UpdateDraw

src/effects/EqualizationUI.cpp:593–649  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

591}
592
593void EqualizationUI::UpdateDraw()
594{
595 auto &parameters = mCurvesList.mParameters;
596 const auto &lin = parameters.mLin;
597 auto &linEnvelope = parameters.mLinEnvelope;
598 auto &logEnvelope = parameters.mLogEnvelope;
599 const auto &hiFreq = parameters.mHiFreq;
600
601 size_t numPoints = logEnvelope.GetNumberOfPoints();
602 Doubles when{ numPoints };
603 Doubles value{ numPoints };
604 double deltadB = 0.1;
605 double dx, dy, dx1, dy1, err;
606
607 logEnvelope.GetPoints( when.get(), value.get(), numPoints );
608
609 // set 'unnamed' as the selected curve
610 mCurvesList.EnvelopeUpdated();
611
612 bool flag = true;
613 while (flag)
614 {
615 flag = false;
616 int numDeleted = 0;
617 logEnvelope.GetPoints( when.get(), value.get(), numPoints );
618 for (size_t j = 0; j + 2 < numPoints; j++)
619 {
620 dx = when[j+2+numDeleted] - when[j+numDeleted];
621 dy = value[j+2+numDeleted] - value[j+numDeleted];
622 dx1 = when[j+numDeleted+1] - when[j+numDeleted];
623 dy1 = dy * dx1 / dx;
624 err = fabs(value[j+numDeleted+1] - (value[j+numDeleted] + dy1));
625 if( err < deltadB )
626 { // within < deltadB dB?
627 logEnvelope.Delete(j+1);
628 numPoints--;
629 numDeleted++;
630 flag = true;
631 }
632 }
633 }
634
635 if(lin) // do not use IsLinear() here
636 {
637 mBands.EnvLogToLin();
638 mFreqRuler->ruler.SetUpdater(&LinearUpdater::Instance());
639 mFreqRuler->ruler.SetRange(0, hiFreq);
640 }
641
642 szrV->Show(szrG,false);
643 szrH->Show(szrI,false);
644 szrH->Show(szrL,true);
645
646 mUIParent->Layout();
647 wxGetTopLevelParent(mUIParent)->Layout();
648 mCurvesList.ForceRecalc(); // it may have changed slightly due to the deletion of points
649}
650

Callers

nothing calls this directly

Calls 11

GetNumberOfPointsMethod · 0.80
GetPointsMethod · 0.80
EnvelopeUpdatedMethod · 0.80
EnvLogToLinMethod · 0.80
SetUpdaterMethod · 0.80
InstanceClass · 0.50
getMethod · 0.45
DeleteMethod · 0.45
SetRangeMethod · 0.45
ShowMethod · 0.45
LayoutMethod · 0.45

Tested by

no test coverage detected