AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

DragToScrollListener.h (951B)


      1 #pragma once
      2 
      3 #include <JuceHeader.h>
      4 
      5 using ViewportDragPosition = AnimatedPosition<AnimatedPositionBehaviours::ContinuousWithMomentum>;
      6 
      7 class DragToScrollListener : private MouseListener,
      8                              private ViewportDragPosition::Listener
      9 {
     10 public:
     11     DragToScrollListener (Viewport& v);
     12     ~DragToScrollListener() override;
     13 
     14     void positionChanged (ViewportDragPosition&, double) override;
     15 
     16     void mouseDown (const MouseEvent&) override;
     17     void mouseDrag (const MouseEvent& e) override;
     18     void mouseUp (const MouseEvent&) override;
     19 
     20     void endDragAndClearGlobalMouseListener();
     21     bool doesMouseEventComponentBlockViewportDrag (const Component* eventComp);
     22 
     23 private:
     24     Viewport& viewport;
     25     ViewportDragPosition offsetX, offsetY;
     26     juce::Point<int> originalViewPos;
     27     bool isDragging = false;
     28     bool isGlobalMouseListener = false;
     29 
     30     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DragToScrollListener)
     31 };