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

Method MouseMoved

Source/Canvas.cpp:290–439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288}
289
290bool Canvas::MouseMoved(float x, float y)
291{
292 CheckHover(x, y);
293
294 bool quantize = GetKeyModifiers() & kModifier_Command;
295
296 if (mDragEnd != kHighlightEnd_None)
297 {
298 ofVec2f scaled = RescaleForZoom(x, y);
299 if (mDragEnd == kHighlightEnd_Start)
300 {
301 float oldStart = mClickedElement->GetStart();
302 float newStart = scaled.x / GetWidth() / mLength;
303 float startDelta = newStart - oldStart;
304 for (auto* element : mElements)
305 {
306 if (element->GetHighlighted())
307 {
308 float start = element->GetStart() + startDelta;
309 if (quantize)
310 start = QuantizeToGrid(start);
311 element->SetStart(start, false);
312 }
313 }
314 }
315 if (mDragEnd == kHighlightEnd_End)
316 {
317 float oldEnd = mClickedElement->GetEnd();
318 float newEnd = scaled.x / GetWidth() / mLength;
319 float endDelta = newEnd - oldEnd;
320 for (auto* element : mElements)
321 {
322 if (element->GetHighlighted())
323 {
324 float end = element->GetEnd() + endDelta;
325 if (quantize)
326 end = QuantizeToGrid(end);
327 element->SetEnd(end);
328 }
329 }
330 }
331 return true;
332 }
333
334 if (x >= 0 && x < mWidth && y >= 0 && y < mHeight)
335 {
336 if (mClick)
337 {
338 if (mClickedElement != nullptr)
339 {
340 ofVec2f dragOffset = (ofVec2f(TheSynth->GetRawMouseX(), TheSynth->GetRawMouseY()) - mClickedElementStartMousePos) / gDrawScale;
341
342 if (GetKeyModifiers() & kModifier_Shift && !mHasDuplicatedThisDrag && dragOffset.distanceSquared() > 9)
343 {
344 mHasDuplicatedThisDrag = true;
345 std::vector<CanvasElement*> newElements;
346 for (auto element : mElements)
347 {

Callers

nothing calls this directly

Calls 14

GetKeyModifiersFunction · 0.85
ofVec2fClass · 0.85
ofClampFunction · 0.85
GetStartMethod · 0.80
GetHighlightedMethod · 0.80
SetStartMethod · 0.80
GetEndMethod · 0.80
SetEndMethod · 0.80
GetRawMouseXMethod · 0.80
GetRawMouseYMethod · 0.80
distanceSquaredMethod · 0.80
CreateDuplicateMethod · 0.80

Tested by

no test coverage detected