Attempt implementing mousewheel zoom into waveform. Badly.
This commit is contained in:
		@@ -104,6 +104,10 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau
 | 
				
			|||||||
	};
 | 
						};
 | 
				
			||||||
	m_zs.setRange(processor.m_wave_view_range, true);
 | 
						m_zs.setRange(processor.m_wave_view_range, true);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						m_wavecomponent.ViewRangeChangedCallback = [this](Range<double> rng)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							m_zs.setRange(rng, false);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
	m_wavecomponent.TimeSelectionChangedCallback = [this](Range<double> range, int which)
 | 
						m_wavecomponent.TimeSelectionChangedCallback = [this](Range<double> range, int which)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		*processor.getFloatParameter(cpi_soundstart) = range.getStart();
 | 
							*processor.getFloatParameter(cpi_soundstart) = range.getStart();
 | 
				
			||||||
@@ -745,6 +749,25 @@ void WaveformComponent::mouseDoubleClick(const MouseEvent & e)
 | 
				
			|||||||
	repaint();
 | 
						repaint();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void WaveformComponent::mouseWheelMove(const MouseEvent & e, const MouseWheelDetails & wd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						double factor = 0.9;
 | 
				
			||||||
 | 
						if (wd.deltaY < 0.0)
 | 
				
			||||||
 | 
							factor = 1.11111;
 | 
				
			||||||
 | 
						double normt = viewXToNormalized(e.x);
 | 
				
			||||||
 | 
						double curlen = m_view_range.getLength();
 | 
				
			||||||
 | 
						double newlen = curlen * factor;
 | 
				
			||||||
 | 
						double t0 = jlimit(0.0,1.0, normt - newlen / 2.0);
 | 
				
			||||||
 | 
						double t1 = jlimit(0.0,1.0, normt + newlen / 2.0);
 | 
				
			||||||
 | 
						m_view_range = { t0,t1 };
 | 
				
			||||||
 | 
						//m_view_range = m_view_range.constrainRange({ 0.0, 1.0 });
 | 
				
			||||||
 | 
						jassert(m_view_range.getStart() >= 0.0 && m_view_range.getEnd() <= 1.0);
 | 
				
			||||||
 | 
						if (ViewRangeChangedCallback)
 | 
				
			||||||
 | 
							ViewRangeChangedCallback(m_view_range);
 | 
				
			||||||
 | 
						m_image_dirty = true;
 | 
				
			||||||
 | 
						repaint();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Range<double> WaveformComponent::getTimeSelection()
 | 
					Range<double> WaveformComponent::getTimeSelection()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (m_time_sel_start >= 0.0 && m_time_sel_end>m_time_sel_start + 0.001)
 | 
						if (m_time_sel_start >= 0.0 && m_time_sel_end>m_time_sel_start + 0.001)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,11 +134,13 @@ public:
 | 
				
			|||||||
	std::function<void(double)> SeekCallback;
 | 
						std::function<void(double)> SeekCallback;
 | 
				
			||||||
	std::function<void(Range<double>, int)> TimeSelectionChangedCallback;
 | 
						std::function<void(Range<double>, int)> TimeSelectionChangedCallback;
 | 
				
			||||||
	std::function<File()> GetFileCallback;
 | 
						std::function<File()> GetFileCallback;
 | 
				
			||||||
 | 
						std::function<void(Range<double>)> ViewRangeChangedCallback;
 | 
				
			||||||
	void mouseDown(const MouseEvent& e) override;
 | 
						void mouseDown(const MouseEvent& e) override;
 | 
				
			||||||
	void mouseUp(const MouseEvent& e) override;
 | 
						void mouseUp(const MouseEvent& e) override;
 | 
				
			||||||
	void mouseDrag(const MouseEvent& e) override;
 | 
						void mouseDrag(const MouseEvent& e) override;
 | 
				
			||||||
	void mouseMove(const MouseEvent& e) override;
 | 
						void mouseMove(const MouseEvent& e) override;
 | 
				
			||||||
	void mouseDoubleClick(const MouseEvent& e) override;
 | 
						void mouseDoubleClick(const MouseEvent& e) override;
 | 
				
			||||||
 | 
						void mouseWheelMove(const MouseEvent& e, const MouseWheelDetails& wd) override;
 | 
				
			||||||
	Range<double> getTimeSelection();
 | 
						Range<double> getTimeSelection();
 | 
				
			||||||
	void setTimeSelection(Range<double> rng);
 | 
						void setTimeSelection(Range<double> rng);
 | 
				
			||||||
	void setFileCachedRange(std::pair<Range<double>, Range<double>> rng);
 | 
						void setFileCachedRange(std::pair<Range<double>, Range<double>> rng);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user