50 m_crosspointEnabledValues[input][output] = enabledState;
51 if (1 == m_crosspointComponent.count(input) && 1 == m_crosspointComponent.at(input).count(output) && m_crosspointComponent.at(input).at(output))
52 m_crosspointComponent.at(input).at(output)->setChecked(enabledState);
68 auto newIOCount = std::make_pair(
int(inputCount),
int(outputCount));
69 if (m_ioCount != newIOCount)
71 m_ioCount = newIOCount;
72 DBG(__FUNCTION__ <<
" " << newIOCount.first <<
" " << newIOCount.second);
74 std::function<void(std::uint16_t, std::uint16_t)> initCrosspoint = [=](std::uint16_t input, std::uint16_t output) {
75 DBG(__FUNCTION__ <<
" " <<
int(input) <<
" " <<
int(output));
76 m_crosspointEnabledValues[input][output] =
false;
77 m_crosspointFactorValues[input][output] = 1.0f;
78 m_crosspointComponent[input][output] = std::make_unique<CrosspointComponent>(std::make_pair(input, output));
79 m_crosspointComponent[input][output]->onCheckedChanged = [=](
bool checkedState,
CrosspointComponent* sender) {
81 crosspointEnabledChange(std::uint16_t(sender->getIdent().first), std::uint16_t(sender->getIdent().second), checkedState,
this);
83 m_crosspointComponent[input][output]->onFactorChanged = [=](
float factor,
CrosspointComponent* sender) {
85 crosspointFactorChange(std::uint16_t(sender->getIdent().first), std::uint16_t(sender->getIdent().second), factor,
this);
87 addAndMakeVisible(m_crosspointComponent[input][output].get());
89 for (
int j = m_matrixGrid.templateColumns.size(); j < input; j++)
90 m_matrixGrid.templateColumns.add(juce::Grid::TrackInfo(juce::Grid::Px(s_nodeSize)));
92 for (
int j = m_matrixGrid.templateRows.size(); j < output; j++)
93 m_matrixGrid.templateRows.add(juce::Grid::TrackInfo(juce::Grid::Px(s_nodeSize)));
96 m_matrixGrid.items.clear();
97 m_matrixGrid.templateColumns.clear();
98 m_matrixGrid.templateRows.clear();
99 m_crosspointComponent.clear();
101 for (std::uint16_t i = 1; i <= inputCount; i++)
103 if (1 != m_crosspointComponent.count(i))
105 for (std::uint16_t o = 1; o <= outputCount; o++)
106 initCrosspoint(i, o);
110 if (1 != m_crosspointComponent.at(i).count(outputCount))
112 for (std::uint16_t o = 1; o <= outputCount; o++)
114 if (1 != m_crosspointComponent.at(i).count(o))
115 initCrosspoint(i, o);
121 for (std::uint16_t o = 1; o <= outputCount; o++)
123 for (std::uint16_t i = 1; i <= inputCount; i++)
125 if (m_crosspointComponent.at(i).at(o))
126 m_matrixGrid.items.add(juce::GridItem(m_crosspointComponent.at(i).at(o).get()));