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

Method SetValueForMouse

Source/Slider.cpp:364–418  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

362}
363
364void FloatSlider::SetValueForMouse(float x, float y)
365{
366 float* var = GetModifyValue();
367 float fX = x;
368 if (GetKeyModifiers() & kModifier_Shift)
369 {
370 if (mFineRefX == -999)
371 {
372 mFineRefX = x;
373 }
374 float precision = mShowDigits != -1 ? 100 : 10;
375 fX = mFineRefX + (fX - mFineRefX) / precision;
376 }
377 else
378 {
379 mFineRefX = -999;
380 }
381 float oldVal = *var;
382 float pos = ofMap(fX + mX, mX + 1, mX + mWidth - 1, 0.0f, 1.0f);
383
384 if (AdjustSmooth())
385 {
386 mSmooth = PosToVal(pos, false);
387 SmoothUpdated();
388 return;
389 }
390
391 *var = PosToVal(pos, false);
392 if (mRelative && (mModulator == nullptr || mModulator->Active() == false))
393 {
394 if (!mTouching || mRelativeOffset == -999)
395 {
396 mRelativeOffset = *var;
397 *var = 0;
398 }
399 else
400 {
401 *var -= mRelativeOffset;
402 }
403 }
404 *var = ofClamp(*var, mMin, mMax);
405
406 if (oldVal != *var)
407 {
408 mOwner->FloatSliderUpdated(this, oldVal, NextBufferTime(false));
409 }
410
411 if (mModulator && mModulator->Active() && mModulator->CanAdjustRange())
412 {
413 float move = (y - mRefY) * -.003f;
414 float change = move * (mMax - mMin);
415 mModulator->GetMin() = ofClamp(mModulator->GetMin() + change, mMin, mModulator->GetMax());
416 mRefY = y;
417 }
418}
419
420bool FloatSlider::AdjustSmooth() const
421{

Callers

nothing calls this directly

Calls 10

GetKeyModifiersFunction · 0.85
ofMapFunction · 0.85
ofClampFunction · 0.85
NextBufferTimeFunction · 0.85
ActiveMethod · 0.45
FloatSliderUpdatedMethod · 0.45
CanAdjustRangeMethod · 0.45
GetMinMethod · 0.45
GetMaxMethod · 0.45
IntSliderUpdatedMethod · 0.45

Tested by

no test coverage detected