Mema
Memory Matrix — multi-channel audio matrix monitor and router
Loading...
Searching...
No Matches
MemaClientControlComponentBase.h
Go to the documentation of this file.
1/* Copyright (c) 2025, Christian Ahrens
2 *
3 * This file is part of Mema <https://github.com/ChristianAhrens/Mema>
4 *
5 * This tool is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Lesser General Public License version 3.0 as published
7 * by the Free Software Foundation.
8 *
9 * This tool is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 * details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this tool; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18
19#pragma once
20
21#include <JuceHeader.h>
22
23
24namespace Mema
25{
26
27
34class MemaClientControlComponentBase : public juce::Component
35{
36public:
46 {
47 S = 35,
48 M = 50,
49 L = 65
50 };
51
52 static constexpr int s_gap = 3;
53 static constexpr int s_scrollbarsize = 8;
54
55public:
58
59 //==============================================================================
60 virtual void paint(Graphics&) = 0;
61 virtual void resized() = 0;
62
63 //==============================================================================
64 virtual void resetCtrl() = 0;
65
66 //==============================================================================
67 virtual void setControlsSize(const ControlsSize& ctrlsSize);
69
70 virtual void setIOCount(const std::pair<int, int>& ioCount);
71 const std::pair<int, int>& getIOCount();
72
73 virtual void setInputMuteStates(const std::map<std::uint16_t, bool>& inputMuteStates);
74 const std::map<std::uint16_t, bool>& getInputMuteStates();
75
76 virtual void setOutputMuteStates(const std::map<std::uint16_t, bool>& outputMuteStates);
77 const std::map<std::uint16_t, bool>& getOutputMuteStates();
78
79 virtual void setCrosspointStates(const std::map<std::uint16_t, std::map<std::uint16_t, bool>>& crosspointStates);
80 const std::map<std::uint16_t, std::map<std::uint16_t, bool>>& getCrosspointStates();
81
82 virtual void setCrosspointValues(const std::map<std::uint16_t, std::map<std::uint16_t, float>>& crosspointValues);
83 const std::map<std::uint16_t, std::map<std::uint16_t, float>>& getCrosspointValues();
84
85 virtual void addCrosspointStates(const std::map<std::uint16_t, std::map<std::uint16_t, bool>>& crosspointStates);
86 virtual void addCrosspointValues(const std::map<std::uint16_t, std::map<std::uint16_t, float>>& crosspointValues);
87
88 //==============================================================================
89 std::function<void(const std::map<std::uint16_t, bool>&)> onInputMutesChanged;
90 std::function<void(const std::map<std::uint16_t, bool>&)> onOutputMutesChanged;
91 std::function<void(const std::map<std::uint16_t, std::map<std::uint16_t, bool>>&)> onCrosspointStatesChanged;
92 std::function<void(const std::map<std::uint16_t, std::map<std::uint16_t, float>>&)> onCrosspointValuesChanged;
93
94 //==============================================================================
95 const juce::String getClientControlParametersAsString();
96 const juce::String getIOCountParametersAsString();
97 const juce::String getInputMuteParametersAsString();
98 const juce::String getOutputMuteParametersAsString();
99 const juce::String getCrosspointParametersAsString();
100
101protected:
102 //==============================================================================
104
105private:
106 //==============================================================================
107 std::pair<int, int> m_ioCount = { 0, 0 };
108 std::map<std::uint16_t, bool> m_inputMuteStates = {};
109 std::map<std::uint16_t, bool> m_outputMuteStates = {};
110 std::map<std::uint16_t, std::map<std::uint16_t, bool>> m_crosspointStates = {};
111 std::map<std::uint16_t, std::map<std::uint16_t, float>> m_crosspointValues = {};
112
113 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MemaClientControlComponentBase)
114};
115
116
117}; // namespace Mema
Abstract base for all Mema.Re client control panels.
const std::map< std::uint16_t, bool > & getInputMuteStates()
virtual void addCrosspointValues(const std::map< std::uint16_t, std::map< std::uint16_t, float > > &crosspointValues)
ControlDirection
Direction of a control strip within the panel layout.
const std::map< std::uint16_t, bool > & getOutputMuteStates()
std::function< void(const std::map< std::uint16_t, bool > &)> onInputMutesChanged
virtual void setControlsSize(const ControlsSize &ctrlsSize)
std::function< void(const std::map< std::uint16_t, bool > &)> onOutputMutesChanged
virtual void paint(Graphics &)=0
std::function< void(const std::map< std::uint16_t, std::map< std::uint16_t, float > > &)> onCrosspointValuesChanged
const std::map< std::uint16_t, std::map< std::uint16_t, bool > > & getCrosspointStates()
virtual void addCrosspointStates(const std::map< std::uint16_t, std::map< std::uint16_t, bool > > &crosspointStates)
virtual void setIOCount(const std::pair< int, int > &ioCount)
virtual void setCrosspointStates(const std::map< std::uint16_t, std::map< std::uint16_t, bool > > &crosspointStates)
virtual void setCrosspointValues(const std::map< std::uint16_t, std::map< std::uint16_t, float > > &crosspointValues)
virtual void setInputMuteStates(const std::map< std::uint16_t, bool > &inputMuteStates)
const std::map< std::uint16_t, std::map< std::uint16_t, float > > & getCrosspointValues()
virtual void setOutputMuteStates(const std::map< std::uint16_t, bool > &outputMuteStates)
std::function< void(const std::map< std::uint16_t, std::map< std::uint16_t, bool > > &)> onCrosspointStatesChanged
ControlsSize
Size category for rendered control elements.
@ S
Small — suited for desktop with many channels.
Definition Mema.cpp:27