MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / OnClicked

Method OnClicked

Source/EnvelopeEditor.cpp:165–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

163}
164
165void EnvelopeControl::OnClicked(float x, float y, bool right)
166{
167 if (x > mPosition.x - pointClickRadius &&
168 x < mPosition.x + mDimensions.x + pointClickRadius &&
169 y > mPosition.y - pointClickRadius &&
170 y < mPosition.y + mDimensions.y + pointClickRadius &&
171 mAdsr != nullptr)
172 {
173 mClick = true;
174
175 if (right)
176 {
177 if (mHighlightCurve != -1)
178 {
179 mAdsr->GetStageData(mHighlightCurve).curve = 0;
180 }
181 if (mHighlightPoint != -1)
182 {
183 if (mHighlightPoint < mAdsr->GetNumStages() - 1)
184 {
185 mAdsr->GetStageData(mHighlightPoint + 1).time += mAdsr->GetStageData(mHighlightPoint).time;
186 mAdsr->GetStageData(mHighlightPoint + 1).curve = mAdsr->GetStageData(mHighlightPoint).curve;
187
188 for (int i = mHighlightPoint; i < mAdsr->GetNumStages(); ++i)
189 {
190 mAdsr->GetStageData(i).time = mAdsr->GetStageData(i + 1).time;
191 mAdsr->GetStageData(i).target = mAdsr->GetStageData(i + 1).target;
192 mAdsr->GetStageData(i).curve = mAdsr->GetStageData(i + 1).curve;
193 }
194
195 mAdsr->SetNumStages(mAdsr->GetNumStages() - 1);
196 if (mAdsr->GetHasSustainStage() &&
197 mHighlightPoint <= mAdsr->GetSustainStage())
198 mAdsr->SetSustainStage(mAdsr->GetSustainStage() - 1);
199
200 mHighlightPoint = -1;
201 }
202 }
203 }
204 else if (gTime < mLastClickTime + 500 &&
205 mHighlightCurve != -1 &&
206 (mClickStart - ofVec2f(x, y)).lengthSquared() < pointClickRadius * pointClickRadius)
207 {
208 float clickTime = GetTimeForX(x);
209 if (clickTime > GetPreSustainTime())
210 clickTime -= GetReleaseTime() - GetPreSustainTime();
211
212 for (int i = mAdsr->GetNumStages(); i > mHighlightCurve; --i)
213 {
214 mAdsr->GetStageData(i).time = mAdsr->GetStageData(i - 1).time;
215 mAdsr->GetStageData(i).target = mAdsr->GetStageData(i - 1).target;
216 mAdsr->GetStageData(i).curve = mAdsr->GetStageData(i - 1).curve;
217 }
218 float priorStageTimes = 0;
219 for (int i = 0; i < mHighlightCurve; ++i)
220 priorStageTimes += mAdsr->GetStageData(i).time;
221 mAdsr->GetStageData(mHighlightCurve).time = clickTime - priorStageTimes;
222 mAdsr->GetStageData(mHighlightCurve).target = GetValueForY(y);

Callers

nothing calls this directly

Calls 7

ofVec2fClass · 0.85
GetNumStagesMethod · 0.80
SetNumStagesMethod · 0.80
SetSustainStageMethod · 0.80
lengthSquaredMethod · 0.80
setMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected