gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

gridviewport.cpp (1176B)


      1 #include "gridviewport.h"
      2 
      3 #include "grid.h"
      4 
      5 namespace jucePluginEditorLib::patchManager
      6 {
      7 	GridViewport::GridViewport(Grid& _grid) : m_grid(_grid)
      8 	{
      9 		setWantsKeyboardFocus(false);
     10 	}
     11 
     12 	void GridViewport::visibleAreaChanged(const juce::Rectangle<int>& _area)
     13 	{
     14 		Viewport::visibleAreaChanged(_area);
     15 
     16 		m_grid.setVisibleItemRange(getItemRangeFromArea(_area));
     17 	}
     18 
     19 	std::pair<int, int> GridViewport::getItemRangeFromArea(const juce::Rectangle<int>& _area) const
     20 	{
     21 		const auto xOffset = static_cast<float>(_area.getX());
     22 
     23 		const auto firstColumn = static_cast<int>(xOffset / m_grid.getItemWidth());
     24 		const auto lastColumn = static_cast<int>((xOffset + static_cast<float>(_area.getWidth()) + m_grid.getItemWidth() - 1.0f) / m_grid.getItemWidth());
     25 
     26 		const auto rowCount = static_cast<int>(static_cast<float>(_area.getHeight()) / m_grid.getItemHeight());
     27 
     28 		const auto firstItem = firstColumn * rowCount;
     29 		const auto itemCount = (lastColumn - firstColumn) * rowCount + rowCount;
     30 
     31 		return {firstItem, itemCount};
     32 	}
     33 
     34 	int GridViewport::getVisibleRowCount() const
     35 	{
     36 		return static_cast<int>(static_cast<float>(getViewArea().getHeight()) / m_grid.getItemHeight());
     37 	}
     38 }